間違いしかありません.コメントにてご指摘いただければ幸いです(気が付いた点を特に断りなく頻繁に書き直していますのでご注意ください).

XY平面上の線分同士の交点

線分同士の交点

XYAB,CDG

u=AB=(ux,uy)=(xbxa,ybya)A(xa,ya),B(xb,yb)v=CD=(vx,vy)=(xdxc,ydyc)C(xc,yc),D(xd,yd)w=AC=(wx,wy)=(xcxa,ycya)A,Bu×v=uxvyvxuy=(xbxa)(ydyc)(xdxc)(ybya)sin(θ)=u×v|u||v|α×β=XY=|α||β|sin(x)2sin(θ)()XYXY()sin(θ)<0sin(θ)=v×u|v||u|

AGAGABの比AGAB

AE=|w|sin(πϕ)=|w|sin(ϕ)sin(πx)=sin(x)=|w|w×v|w||v|α×β=|α||β|sin(x),sin(x)=α×β|α||β|=w×v|v|AE=AGsin(πθ)=AGsin(θ)sin(πx)=sin(x)AG=AEsin(θ)=w×v|v|1sin(θ)=w×v|v||u||v|u×v=w×vu×v|u|AGAB=AG|u|=w×vu×v|u|1|u|=w×vu×v=wxvyvxwyuxvyvxuy=(xcxa)(ydyc)(xdxc)(ycya)(xbxa)(ydyc)(xdxc)(ybya)

CGCGCDの比CGCD

CF=|w|sin(πψ)=|w|sin(ψ)sin(πx)=sin(x)=|w|w×u|w||u|α×β=|α||β|sin(x),sin(x)=α×β|α||β|=w×u|u|CF=CGsin((πθ))=CGsin(θ)sin(πx)=sin(x)CG=CFsin(θ)=w×u|u|1sin(θ)=w×u|u||v||u|v×u=w×uv×u|v|CGCD=CG|v|=w×uv×u|v|1|v|=w×uv×u=w×u(u×v)A×B=(B×A)=w×uu×v=wxuyuxwyuxvyvxuy=(xcxa)(ybya)(xbxa)(ycya)(xbxa)(ydyc)(xdxc)(ybya)

交点の有無について

CGCDAGABは共に 分母にu×vがあるが, これが0というのはsin(θ)=0ということであり,線分同士がなす角θ0πであり,互いにAB,CDが平行ということなのでGを持たない. 0での割り算を発生させないためこれは例外としてCGCDとAGABを求めるより先に判定する必要がある.
その後,CGCDとAGABを求め,共に0より大きく1以下の値の時,Gを持つことになる. それ以外の場合はGが線分の外側に存在することになる.

0 件のコメント:

コメントを投稿