平面平行度计算公式?
Ax+By+Cz+D=0这一平面)
2.在需要计算的面上找三点,通过公式计算出与面的距离D1,D2,D3,对这三个点进行计算以求的最终平面度
实现
1.求基准面
Test中调用情况(模拟数据输入)
void Test() {
double array1[3][3] = { { 2.345,1.286,2.369 },{ 3.3847,3.345,3.534 },{ 4,4,4.2 }};
//定义数组指针指向第一个元素(int[])
double (*p)[3] = array1;
double * pABCD=getABCD(p);
cout<<"基准平面方程为:"<
}
三点求平面度公式
/*
计算基础面平面公式系数
parms:指向二维数组的指针,其中数组中装着3个点的三维坐标
ret:abcd系数的double数组
*/
double * getABCD(double (*parms)[3] ){
//定义装载系数ABCD的数组
double result[4] ;
result[0] = parms[0][1]*parms[1][2] - parms[0][1] *parms[2][2] - parms[1][1]*parms[0][2] + parms[1][1]* parms[2][2] + parms[2][1]*parms[0][2] - parms[2][1]*parms[1][2];
result[1] = -parms[0][0]*parms[1][2] + parms[0][0]*parms[2][2] + parms[1][0]*parms[0][2] - parms[1][0]* parms[2][2] - parms[2][0]* parms[0][2] + parms[2][0]* parms[1][2];
result[2] = parms[0][0]*parms[1][1] - parms[0][0]*parms[2][1] - parms[1][0]*parms[0][1] + parms[1][0]*parms[2][1] + parms[2][0]*parms[0][1] - parms[2][0]*parms[1][1];
result[3] = parms[0][0]*parms[1][1]*parms[2][2] - parms[0][0] *parms[2][1]*parms[1][2] - parms[1][0]*parms[0][1]*parms[2][2] + parms[2][0]*parms[0][1] *parms[1][2] + parms[1][0]*parms[2][1]*parms[0][2] - parms[2][0]*parms[1][1]*parms[0][2];
//返回
double *p = result;
return p
登录后复制

该函数细致的使用了数组指针这一概念,参考
3.运行结果
但在没有已知基准面的情况下,基准面计算需根据所有模拟输入的点来计算,但目前只随机取三点,结果偶然性极大,下一步会让所有数据参加运算。
当前思路是首先去除无效值,即Z(高度值)为极限值的数据,因为这些数据位置可能处于扫描底版。然后对剩余数据进行分组处理,三个数据点一组,共计(n/3)组。这些数据分别计算基准平面的系数ABCD,最后对ABCD,取平均值。最后即为真正的基准平面