HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1121
修行の身、、、なんて言えばいいんでしょう?初歩の数学的な話です。3未解決


修行の身

リンク

2006/11/21(Tue) 03:39:03|NO.3677


screen 0,400,300 :cls 4 color 255,255,255 mx = 10.0 :my = 100.0 ex = 200.0 :ey = 151.0 pset mx,my pset ex,ey a = (my-ey)/(mx-xe) ;変化の割合を算出 b = my-(mx*a) ;切片を算出 title "y = "+a+"x+("+b+")"

この後、(ex,ey)から、赤色で(mx,my)にpsetでドットを打っていきたいのですが、


color 255,0,0 x = ex repeat pset x,x*a+b x += 1.0 wait 1 loop
だとエラーが出てしまいます。
どうしてでしょうか?
というより、どうすればいいでしょうか?



この記事に返信する


修行の身

リンク

2006/11/21(Tue) 03:43:19|NO.3678

最後のほうの
「エラーが出てしまいます」
を訂正します。
正しくは、
「期待通りの結果が得られません」



kanzaki

リンク

2006/11/21(Tue) 06:08:25|NO.3679

この行
	a = (my-ey)/(mx-xe)

の変数を確認してみてください。 ケアレスミスは私もよくやります。 また、
	x += 1.0
ですと、逆方向への増分となるようです。

ループの間に
	dialog "x="+x+" y="+x*a+b

等と入れて、自分なりにデバッグしてみるのも良いかと存じます。 また、無限ループからは抜ける処理を作ったほうが良いでしょう。
	getkey key,16 : if key : break
等を挿入しますと、
この場合はshiftキーを押しっぱなしでループを修了します。

本来(デバッグでは無いと言う事)であれば
	if mx = x : break

等を挿入してループを終了するのが妥当かと思います。 お役に立てればと存じます。如何でしょうか?



修行の身

リンク

2006/11/21(Tue) 12:27:09|NO.3681

解決です。ありがとうございます。
気づきませんでした。こういう初歩的なミスも馬鹿にできませんね。

exをxeにしてしまったがために起こったわけですね。
また、x += 1.0 も x -= 1.0 が期待通りの結果になりますね。

デバッグというより、やりたかったのは、横スクロール型シューティングゲームにおいて、
敵機からその時点での自機の座標に向けて弾を撃ちたかったのですよ。
それのテスト段階です。

ご教授ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.