ある点から最短距離にある線分の求め方とその線分が移動した時、それに対応する点の座標の求め方を教えていただきたいです。
step1:
list = [[[x0,y0], [x1,y1]][[x1,y1], [x2,y2]], ...]
point = [[pointx0, pointy0],[pointx1, pointy1],...]
上記のlistのような折線とpointのような点の集合が合った時、折線の近くにあるpointを抽出します。
その時、抽出した線分(listのうちのどれか)とその線分から近い距離にある点(pointのどれか)を次のように定義します。
点a(ax,ay)と点b(bx,by)を結ぶ線分Lと点p(px,py)
step2:
点aと点bがそれぞれ点A(Ax,Ay)、点B(Bx,By)に移動した時、対応する点P(Px,Py)を求めたいです。
対応する点というのは
・角bap = 角BAP
・距離|ap| = 距離|AP|
を満たす点と仮定します。
この時の点Pを求めたいのですが、
私は、step1の段階でベクトルabとベクトルap、ベクトルbaとベクトルbpのなす角が両方とも90度以下かつ距離R(閾値)以下を満たす線分を抽出した後、点pから線分abに下ろした垂線の足の座標Hを求め、aH:Hbを算出した後、この値を元に回転行列を用いstep2を行っていました。
しかし、この方法だとstep1の段階で、ベクトルabとベクトルap、ベクトルbaとベクトルbpのなす角のどちかが90度以上だが、距離R以内に存在する点pを抽出できないことに気がつきました。
私が行っていた方法の場合、プログラムの関係上このような状況に対応できなくなってしまいました。
ある点(pointのどれか)から最短距離にある線分(listのどれか)の求め方と、
もしよければそれに対応してstep2の点pの座標の求め方を教えていただきたいです。
長文失礼いたしました。