已知3点,求平面方程,点到面的距离
2007-01-16 11:42
489 查看
//已知3点,求平面方程
BOOL CGe::PanelEquationFromThreePt(CPoint3dArray ptArr,
double &a,double &b,double &c,double &d)
{//from http://blog.csdn.net/hoya5121 CPoint3d p1,p2,p3;
if(ptArr.GetSize() < 3)
{
return FALSE;
}
p1 = ptArr[0];
p2 = ptArr[1];
p3 = ptArr[2];
a = ( (p2.y-p1.y)*(p3.z-p1.z)-(p2.z-p1.z)*(p3.y-p1.y) );
b = ( (p2.z-p1.z)*(p3.x-p1.x)-(p2.x-p1.x)*(p3.z-p1.z) );
c = ( (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x) );
d = ( 0-(a*p1.x+b*p1.y+c*p1.z) );
return TRUE;
}
//点到面的距离,设点坐标为P(x, y, z),平面方程为ax+by+cz+d=0。
double CGe::DistPt2Panel( double x,double y,double z,
double a,double b,double c,double d)
{
return fabs(a*x+b*y+c*z+d) / sqrt(a*a+b*b+c*c);
}
BOOL CGe::PanelEquationFromThreePt(CPoint3dArray ptArr,
double &a,double &b,double &c,double &d)
{//from http://blog.csdn.net/hoya5121 CPoint3d p1,p2,p3;
if(ptArr.GetSize() < 3)
{
return FALSE;
}
p1 = ptArr[0];
p2 = ptArr[1];
p3 = ptArr[2];
a = ( (p2.y-p1.y)*(p3.z-p1.z)-(p2.z-p1.z)*(p3.y-p1.y) );
b = ( (p2.z-p1.z)*(p3.x-p1.x)-(p2.x-p1.x)*(p3.z-p1.z) );
c = ( (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x) );
d = ( 0-(a*p1.x+b*p1.y+c*p1.z) );
return TRUE;
}
//点到面的距离,设点坐标为P(x, y, z),平面方程为ax+by+cz+d=0。
double CGe::DistPt2Panel( double x,double y,double z,
double a,double b,double c,double d)
{
return fabs(a*x+b*y+c*z+d) / sqrt(a*a+b*b+c*c);
}
相关文章推荐
- 已知3点,求平面方程,点到面的距离
- 三维凸包+点到平面距离+已知3点求平面方程
- 最近距离 已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,距离最近的两个点间的最小距离。
- 已知平面上若干个点的坐标。需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数)。
- 已知两点坐标,求直线方程、距离其中一点距离为L的某点
- 最近距离 已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,距离最近的两个点间的最小距离
- C++里已知三个三维点,求他们的平面方程,怎么做?
- [算法] 已知在平面坐标系内有N个点,求离开给定坐标距离最近的10个点
- 最近距离 已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中, 距离最近的两个点间的最小距离。请补全缺失的代码。
- 平面方程、夹角与点到平面的距离
- [算法] 已知在平面坐标系内有N个点,求离开给定坐标距离最近的10个点
- 【机器学习】梯度、Hessian矩阵、平面方程的法线以及函数导数的含义
- 已知基础解系反求有效方程(矩阵)
- 关于已知两点经纬度求球面最短距离的公式推导
- [置顶] C语言实验题:已知地球上两点的经度和纬度求其球面距离
- 计算点到SVM超平面的距离
- HDU_1174——爆头,空间直线方程,直线到点的距离
- 已知点的经纬度 与另一个点的距离 以及方向角 求另一点的经纬度
- 已知地面上两点经续度求两点球面距离函数Flex及C
- 平面方程拟合计算