如何判断空间三点是否共线?(急)
已知空间三点(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),怎样判断他们是否共线?谢谢! 问题点数:10、回复次数:5Top
1 楼rockersz(世上的无奈需要我去忍耐...)回复于 2006-03-13 11:08:12 得分 3
d^2 = (x3-x1)^2 + (y3-y1)^2 + (z3-z1)^2 -
[(x2-x1)*(x3-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z3-z1)]^2/[(x2-x1)^2+(y2-y1)^2+(z2-z1)^2]
如果d=0,则三点共线Top
2 楼qmj_xk()回复于 2006-03-13 12:10:47 得分 0
为什么要这样做?还有没有更简单的方法?Top
3 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-13 12:34:45 得分 3
这个问题也许很复杂,也许很简单,关键要看应用的环境
方法一: 用三个点构成的面积来计算,用向量点积来计算
方法二: 用点到直线的距离公式计算,直接公式可以用,需要判断有无重合点
这个问题需要考虑定义域的大小的问题,这里主要是精度
对于数据很大的两个点,比如: 0 0 到 10000, 10000 中间有一个点5000,4999
它到直线的距离是0.7左右,那么算不算在直线上
而对于数据很小的两个点: 比如: 0 0 到 0.0002 0.0002 和 0.00001 0.00002
这时候点到直线的距离为0.00001很小,算不算在直线上
Top
4 楼sboom(+-LingCh-+)(爱美人不爱VC)回复于 2006-03-13 23:00:43 得分 2
用Hough变换
设一个带未知数的直线方程,用三个点的坐标代入得3个方程的方程组,如果这个联立方程组有解则共线且可以解参数出来,否则方程组无解。Top
5 楼HUNTON(追求完美)回复于 2006-03-14 08:42:02 得分 2
在不重合的情况下,算两个方向向量比较一下看是不是同一个方向的就可以了吧Top




