C++ 计算点到空间直线的距离
最近的工作中需要计算空间中点到直线的距离,网上找了个算法:链接
很简单,就是余弦定理算出余弦,知道余弦算出正弦,然后求出高也就是距离。当然这里不考虑效率问题,实验性的代码,先能用再优化。
struct Point { double X; double Y; double Z; bool operator==(const Point &p) { return (this->X == p.X && this->Y == p.Y && this->Z == p.Z); } }; double dis_3D(Point a,Point b,Point s) { double ab=sqrt(pow((a.X-b.X),2.0)+pow((a.Y-b.Y),2.0)+pow((a.Z-b.Z),2.0)); double as=sqrt(pow((a.X-s.X),2.0)+pow((a.Y-s.Y),2.0)+pow((a.Z-s.Z),2.0)); double bs=sqrt(pow((s.X-b.X),2.0)+pow((s.Y-b.Y),2.0)+pow((s.Z-b.Z),2.0)); double cos_A=(pow(as,2.0)+pow(ab,2.0)-pow(bs,2.0))/(2*ab*as); double sin_A=sqrt(1-pow(cos_A,2.0)); return as*sin_A; }