• ベストアンサー

2線の交点を座標値で求める式で、0での除算が発生しない方法を教えて下さい。

stomachmanの回答

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.3

d = (ax1-ax2)(by2-by1)-(bx1-bx2)(ay2-ay1) x = {(bx1by2-bx2by1)(ax1-ax2)-(ax1ay2-ax2ay1)(bx1-bx2)}/d y = {(ax1ay2-ax2ay1)(by2-by1)-(bx1by2-bx2by1)(ay2-ay1)}/d です。 ●準備:交点を求めようと言うのですから、 (1)「(ax1,ay1),(ax2,ay2) が(点ではなく)直線であり、(bx1,by1),(bx2,by2) が直線である」つまり (ax1 ≠ ax2 または ay1 ≠a y2)でありしかも(bx1 ≠ bx2 または by1 ≠b y2) でなくては話にならない。さらにまた、 (2) これら2本の線が平行であっても意味がありません。 以上の条件(1)(2)は、実はベクトル<(ax1-ax2),(ay2-ay1)>と<(bx1-bx2),(by2-by1)>との外積dが0ではない、ということ、言い換えれば d = (ax1-ax2)(by2-by1)-(bx1-bx2)(ay2-ay1) が0でない、という事と等価です。 ●次に、2本の直線の方程式は (ay2-ay1) x + (ax1-ax2) y = (ax1ay2-ax2ay1) (by2-by1) x + (bx1-bx2) y = (bx1by2-bx2by1) と書くことが出来ます。これを解くと x = {(bx1by2-bx2by1)(ax1-ax2)-(ax1ay2-ax2ay1)(bx1-bx2)}/d y = {(ax1ay2-ax2ay1)(by2-by1)-(bx1by2-bx2by1)(ay2-ay1)}/d です。(1)(2)の条件さえ満たしていれば、必ずd ≠0ですから、0によるわり算は生じません。 ●なお、以上は行列を使った計算(線形代数)の基本を普通の数式に書き直したものです。もしかしたらCG用のプログラムを自作していらっしゃるのかな?線形代数を学んでおくととても便利ですよ。

lible_io
質問者

お礼

毎度お世話様です。 実に解かり易い回答有り難うございます。 現在、CADを組んでおりまして条件処理を行えばなんとかなるのですが デバックの際ややこしくなって困っていました。 将来は、CGの方にも進むつもりです。 線形代数ですか、今度調べてみます。 又、質問しますのでよろしくお願いします。

関連するQ&A

  • 2線の交わる角度を求める式

    2線の交わる角度を求める式で、0での除算が発生しない方法を教えて下さい。 座標 線a ax1 = 0 , ay1 = 0 : ax2 = 12 , ay2 = 13 線b bx1 = 6 , by1 = 15: bx2 = 6 , by2 = 2 A=(y13-y0)/(x12-x0) B=(y2-y15)/(x6-x6)   0で除算が発生 2線の交わる角度 tanθ=(A-B)/(1+AB) 片方の線が垂直だと0で除算が発生しまい、うまく計算できません。 なにか他によい方法はないでしょうか。

  • 交差する2線分の交点座標の求め方

    2つの線分が交差する場に交点の座標を求めようと思っています。 アドバイスを頂けないでしょうか? 入力値:(aX1, aY1)(aX2, aY2)     (bX1, bY1)(bX2, bY2) 出力値:(X, Y) よろしくお願いします。

  • 座標A(X,Y)の線分(aX,aY)(bX,bY)に対称な座標の求め方

    VBで図形を入力した線分に対称に反転した図形と書こうとしています。 その為に必要な座標A(X,Y)の線分(aX,aY)(bX,bY)に対称な 座標B(X',Y')の求め方についてご教授お願いいたします。

  • 座標の和に関する証明

    原点をo(0,0)とし、a(ax,ay),b(bx,by)という点を取ります。 このとき、cという点を四角形oacbが平行四辺形になるように取ると、cは、c(ax+bx,ay+by)という、座標を取りますが、cが必ず、このような座標を取ることは、どの様に証明したら良いのでしょうか? どなたか解答お願いします。

  • 式の展開?について教えてください。

    式の展開?について教えてください。 (X-ax)^2+(Y-ay)^2=r^2 (X-bx)^2+(Y-by)^2=r^2 の式を使って X=~ Y=~ ax=~ ay=~ と式を展開?変換?したいのです。 円弧の中心座標と円弧の始点座標を取得したいのですが、 数学の知識がなく、展開・変換?ができなくて困っています。 どなたか教えていただけないでしょうか。 X,Y=円弧の中心点 ax,ay=円弧の始点 bx,by=円弧の終点 可能であれば、展開の方法をわかりやすく説明して頂きたいです。 又、数学のどこを勉強すればいいか、参考になる書籍があれば教えてください。 よろしくお願い致します。

  • 2直線の交点を通る直線の式について

    2直線の交点を通る直線の式について 2直線をax+by+c=0,a'x+b'y+c'=0の交点を通る直線の式は ax+by+c+k(a'x+b'y+c')=0 …(*) であらわすことができますよね。 (*)が、2直線をax+by+c=0,a'x+b'y+c'=0の交点を通る直線の式となっていることは理解できます。 しかし、(*)の式を用いなくても、2直線の交点を通る直線の式を求めることはできますよね。連立方程式を解いたりして… わざわざ、(*)のような式を立てる意味は何ですか?? また、なぜk倍しているのでしょうか?? そもそも、なぜ異なる2式を(*)のように足すことができるのでしょうか?? 回答よろしくお願いします。

  • 【式の値の問題】

    a,b,x,yがa+b=43,ab=1,x+y=4,xy=2を満たすとき (ax+by)^3+(ay+bx)^3の値は? ヒント X=ax+by,Y=aybxとおく 解ける方がいらっしゃいましたら 解説お願いしますm(_)m

  • 二点の座標から直線の方程式を求める方法

    こんばんは、タイトルの通りなのですが、二点の座標から直線の方程式を求める方法がイマイチ理解できず困っています。 ax+b=yを変形して求めたほうが楽だとは思うのですが、プログラムに組み込むために座標から直接、直線の方程式を求めたいのです。 2つの点の座標から 直接ax+by+c=0を作りたいのですが、a,b,cを求める式は以下の式で合っているでしょうか・・・? a = (y0-y1) b = -(x0-x1) c = -{(y0-y1)*x1 + (x0-x1)*y1)}

  • ある式に平行な式と垂直な式

    点(x1,y1)をとおり直線ax+by+c=0に平行・垂直な直線の方程式は、 平行  a(x-x1)+b(y-y1)=0 垂直  b(x-x1)-a(y-y1)=0 と書いてありましたが、これらは何かの公式の変形でしょうか。よく分からないので教えてください。

  • XY座標の傾き

    y=2x+8のX座標との交点をA y=-3x+3のX座標との交点をB 上記の二つの線の交点をPとして、三角形PABができます。 この三角形PABの面積を2等分する線分を PからX座標にに向かい下ろします。その交点をQとした時 PQの傾きを求めてください。 答え12 どのように答えを導き出すのか分からないので、 教えていただけませでしょうか? よろしくお願いします。 PQの傾きというのはy=aX+b のaの部分を求めるのですか?