精度有问题,3个平面相交处的点精度

问题描述

尝试了多种平面相交的方法代码没有产生准确的结果。在某些角度上它非常好,对于直角三角形,大致位置但明显偏离。

xyzPoint return_Intersect_3planes(Tri tri1,Tri tri2,Tri tri3) {

double x1 =  0.646;
double y1 =  0.210;
double z1 =  2.147;
double a1 =  0.251;
double b1 =  -0.456;
double c1 = -0.411;
double d1 = -((a1 * x1) + (b1 * y1) + (c1 * z1));

double x2 = -0.0744;
double y2 = 0.0808;
double z2 = 2.082;
double a2 = -0.1218;
double b2 = -0.2606;
double c2 = -0.748;
double d2 = -((a2 * x2) + (b2 * y2) + (c2 * z2));

double x3 = 0.10627;
double y3 = 0.3924;
double z3 = 2.335;
double a3 = 0.0987;
double b3 = 0.3236;
double c3 = -0.278;
double d3 = -((a3 * x3) + (b3 * y3) + (c3 * z3));


double D =  (a2 * b2 * c3) + (b1 * c2 * a3) + (c1 * a2 * b3) - (a3 * b2 * c1) - (b3 * c2 * a1) - (c3 * a2 * b1);
double Dx = (d1 * b2 * c3) + (b1 * c2 * d3) + (c1 * d2 * b3) - (d3 * b2 * c1) - (b3 * c2 * d1) - (c3 * d2 * b1);
double Dy = (a1 * d2 * c3) + (d1 * c2 * a3) + (c1 * a2 * d3) - (a3 * d2 * c1) - (d3 * c2 * a1) - (c3 * a2 * d1);
double Dz = (a1 * b2 * d3) + (b1 * d2 * a3) + (d1 * a2 * b3) - (a3 * b2 * d1) - (b3 * d2 * a1) - (d3 * a2 * b1);



xyzPoint Intersection;
Intersection.x = Dx / D;
Intersection.y = Dy / D;
Intersection.z = Dz / D;


return Intersection;

}

The input numbers

结果是

x = 0.00276579 y = -0.32880155 z = -4.0193058 (这已被转为否定,可能完全错误?)

基于 CAD 的正确位置是

x = -0.002 y = 0.204 z = 2.498

ODS(开放式办公室计算)文件上传 https://filebin.net/g6onuah7q5rfg7lj

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)