[100枚]C言語の線分と点の距離を測る関数のコードをそのままください。 DxLibでゲームプログラミングをしています。 struct Vec2D{//点の型 float x; float y; }; struct Line{//線分の型 Vec2D start; Vec2D end; };

[100枚]C言語の線分と点の距離を測る関数のコードをそのままください。 DxLibでゲームプログラミングをしています。 struct Vec2D{//点の型 float x; float y; }; struct Line{//線分の型 Vec2D start; Vec2D end; };

C言語関連375閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

線分と点の距離って・・・点から線分に垂線を下ろしたとき、その垂線の長さかなぁ・・・ double distance(struct Line* line, struct Vec2D* pt){ double dist = 0.0; double dx = line->end.x - line->start.x; double dy = line->end.y - line->start.y; double length = sqrt(dx*dx + dy*dy); double px = pt->x - line->start.x; double py = pt->y - line->start.y; double menseki = px*dy - py*dx; if(menseki < 0.0) menseki = -menseki; dist = menseki / length; return dist; } 呼び出しは、こういう感じ。 struct Vec2D pt; struct Line ln; double a = distance(&ln, &pt) あと、インクルードが・・・ #include <math.h> ただ、線分と点が垂線で線分内で交わるかどうかは判定していません。 それは、どっかで判定するんでしょうね・・・ 計算しているのは・・・ 線分を直線に延長して、その直線と点との距離を計算しています。

ThanksImg質問者からのお礼コメント

ありがとうございました。

お礼日時:2012/10/5 22:28