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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0615
Quiet直線同士の交差点・・・5解決


Quiet

リンク

2008/6/15(Sun) 02:00:01|NO.16734

直線と直線が交わった座標の求め方を教えてください。


line 100,100 , 400,430 line 400,110 , 210,450 pos 250 , 300:mes "? →"



この記事に返信する


s

リンク

2008/6/15(Sun) 02:58:28|NO.16738


http://oshiete1.goo.ne.jp/qa28994.html
見つからないのは調べ方の問題でしょうか。
この式は自分にもよくわからないので説明をしっかり読んでください。

参考にしてモジュールを作らせていただきました。
引数は返す値の指定(0ならx、1ならy)と、
直線aのx1,y1,x2,y1
直線bのx1,y1,x2,y1を並べて指定です。


#module #defcfunc linep int sw,double ax1,double ay1,double ax2,double ay2,double bx1,double by1,double bx2,double by2 x = ( (bx1*by2-bx2*by1)*(ax1-ax2)-(ax1*ay2-ax2*ay1)*(bx1-bx2) ) / ( (ax1-ax2)*(by2-by1)-(bx1-bx2)*(ay2-ay1) ) y = ( (ax1*ay2-ax2*ay1)*(by2-by1)-(bx1*by2-bx2*by1)*(ay2-ay1) ) / ( (ax1-ax2)*(by2-by1)-(bx1-bx2)*(ay2-ay1) ) if sw = 0 : return x : else : return y #global color 0,0,255 line 100,100 , 400,430 : line 400,110 , 210,450 x.0 = linep( 0, 100,100 , 400,430 , 400,110 , 210,450 ) y.0 = linep( 1, 100,100 , 400,430 , 400,110 , 210,450 ) color line 150,10 , 600,430 : line 400,110 , 110,450 x.1 = linep( 0, 150,10 , 600,430 , 400,110 , 110,450 ) y.1 = linep( 1, 150,10 , 600,430 , 400,110 , 110,450 ) repeat 2 cc = cnt repeat 9 color 255 pset x.cc + cnt\3 - 1 , y.cc + cnt/3 - 1 loop loop



GENKI

リンク

2008/6/15(Sun) 21:42:51|NO.16762

連立方程式を使います。
あわせて直線の方程式も使用します。
どちらも中二で学習する範囲のようです。

教科書の説明が一番詳しく正確に書かれていますが、解説サイトもたくさんありますのでいいサイトを探してみてください。
とりあえずひとつ見つけたのを。
http://contest.thinkquest.jp/tqj2002/50027/page008.html



Quiet

リンク

2008/6/16(Mon) 18:30:46|NO.16784

ありがとうございます。ついでにもう一つ質問が・・・すいません。

前は直線上を移動させるスクリプトを質問しましたが、
今度は「円線上」を移動させることに困っています。
誰か教えてください・・・



flory

リンク

2008/6/16(Mon) 19:38:51|NO.16790

まったく別の質問なら、別スレにした方が良かったのでは?

とりあえず、サンプルを置いときます。

#const centerX 120 ; 軌道の中心x座標 #const centerY 120 ; 軌道の中心y座標 #const radius 60 ; 円の半径 #const precision 20 ; 精度(大きくすると速度が遅くなる) repeat redraw 0 color 255, 255, 255 boxf color 0, 0, 0 circle centerX-radius, centerY-radius, centerX+radius, centerY+radius, 0 x = sin(double(cnt)/precision)*radius + centerX y = cos(double(cnt)/precision)*radius + centerY boxf x-5, y-5, x+5, y+5 redraw 1 wait 1 loop
Quietさんの学力がどれほどのものかは知りませんが、円の媒介変数表示ができれば
すぐにわかることです。



Quiet

リンク

2008/6/16(Mon) 20:24:30|NO.16792

ありがとうございます。

もう少し勉強にはげもうと思います。



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