以下のコードの部分が理解できないのです。高校でベクトルは学習したのですがコードでみるといまいち分かりずらく、
何をしているのか、どうしてそうするのかわからないところがあります。
点と直線の距離を求めているようなのですが、dx,dyが何なのかもよくわかりません。
私はdx=ベクトルx1x2,dy=ベクトルy1y2 だと思うのですがどうなのでしょうか?
また、tがどういう役割をなしているのかが全く分かりません。
どうかなるべく簡単に教えて頂きたいですm(__)m
//点と線分との距離を求める
double get_distance(double x, double y, double x1, double y1,
double x2, double y2){
double dx,dy,a,b,t,tx,ty;
double distance;
dx = (x2 - x1); dy = (y2 - y1);
a = dx*dx + dy*dy;
b = dx * (x1 - x) + dy * (y1 - y);
t = -b / a;
if (t < 0) t = 0;
if (t > 1) t = 1;
tx = x1 + dx * t;
ty = y1 + dy * t;
distance = sqrt((x - tx)*(x - tx) + (y - ty)*(y - ty));
return distance;
}