求点到直线的距离
来源:互联网 发布:java 一个对象的大小 编辑:程序博客网 时间:2024/05/22 10:33
关于点到直线的距离,在vtkLine中有一个方法:DistanceToLine
用法:
double closestPt1[3];double t1[3];double dist0 = vtkLine::DistanceToLine(seed,first_seed,second_seed,*t1,closestPt1);
接下来把这个方法选出来,我们看看作者是怎么实现的。
double vtkLine::DistanceToLine (double x[3], double p1[3], double p2[3]){ int i; double np1[3], p1p2[3], proj, den; for (i=0; i<3; i++) { np1[i] = x[i] - p1[i];//向量 x - p1 p1p2[i] = p1[i] - p2[i];//向量 p1 - p2 } if ( (den=vtkMath::Norm(p1p2)) != 0.0 )//如果不垂直 { for (i=0; i<3; i++) { p1p2[i] /= den;//单位向量 } } else { return vtkMath::Dot(np1,np1);//垂直后距离只能这么求了 } proj = vtkMath::Dot(np1,p1p2);//不垂直继续, dot向量点乘 ,这里的p1p2已经变成了单位向量! return (vtkMath::Dot(np1,np1) - proj*proj);//p1-x之间的距离 , P1-o之间的距离。敲黑板!!!注意,这个返回的值不是距离,是距离的平方!!!}
尽管上面的注释已经很清楚了,我觉得还是有必要用列举关键词描述一下思维的过程,谁让当初的数学都已经完美的还给体育老师了呢?
关键词:
1. 用向量求;
2. 分两种情况:垂直,不垂直;
3. dot 向量点乘
4. 勾股定理
如果垂直,则 |XP1| 就是点到直线的距离;
如果不垂直,则 |XO|为直角三角形XOP1的一个直角边,|XO|^2 = |XP1|^2 - |P1O|^2;接下来求 |P1O| = 向量P1X 与 (向量P1P2的单位向量)的 点乘;
这个月明显有点忙,这才是第一篇,惭愧。
想做的太多,而能做的又太少。
参考文献:
1.http://blog.csdn.net/dcrmg/article/details/52416832
阅读全文
0 0
- 求点到直线的距离
- 求点到直线的距离
- Matlab求点到你直线的垂直距离
- 点到直线的距离
- 点到直线的距离
- 点到直线的距离
- 点到直线的距离
- 点到直线的距离
- 图像中求点到直线的距离
- 三维空间里点到直线的距离
- 点到直线的距离
- 直线距离
- 点到线段直线的距离, 直线与直线的关系 直线与线段的关系
- 点到空间直线的距离
- ZJUT1051 到直线的最长距离
- 计算点到直线的距离
- 计算地球上两点的直线距离
- 获取GPS 两点间的直线距离
- 排列 题目及pas程序
- 浅谈接口和抽象类(java)
- 用pygame写游戏 语法详细解释
- 炸僵尸
- python安装pip和requests库
- 求点到直线的距离
- TCP数据传输协议(二)
- apt yum
- java 入门
- 设计模式之职责链模式
- SQLite数据库操作
- 从mysql数据表中随机取出一条记录
- TensorFlow读取数据
- 第二个任务