三维空间点到直线的距离C++实现
来源:互联网 发布:python import path 编辑:程序博客网 时间:2024/06/06 14:02
mark一下向量点积以及向量叉积的知识点~~
向量的点乘
点乘是两个向量相应元素的乘积的和,即:
V1( x1, y1, z1)·V2(x2, y2, z2) = x1*x2 + y1*y2 + z1*z2;
点乘的结果不是一个向量,而是一个标量(Scalar)。
A·B = |A||B|Cos(θ)
θ是向量A和向量B见夹角。这里|A|我们称为向量A的模(norm)。
Cos(θ) = A·B /(|A|*|B|)
向量的叉乘
对于向量u和v, u x v的结果是一个既垂直于u又垂直于v的向量,假设记作n.
n = u x v;
而n的方向,是由右手法则决定的。 即伸出右手,四个手指方向从u绕到v. 此时,大姆指的方向,就是n的方向。 我们通常叫做右向量。
点到直线的距离
假设给出空间中的三个点:A,B,C,求点C到由点A、B构成的直线的距离。
d = (AB x AC)/|AB|
|AB X AC|/2是三角形ABC的面积,这个三角形的底是|AB|,高就是C到AB的距离。
po代码(C++),计算点到直线的距离:
struct S_Point{double x;double y;double z;};double DistanceOfPointToLine(S_Point* a, S_Point* b, S_Point* s) { double ab = sqrt(pow((a->x - b->x), 2.0) + pow((a->y - b->y), 2.0) + pow((a->z - b->z), 2.0));double as = sqrt(pow((a->x - s->x), 2.0) + pow((a->y - s->y), 2.0) + pow((a->z - s->z), 2.0));double bs = sqrt(pow((s->x - b->x), 2.0) + pow((s->y - b->y), 2.0) + pow((s->z - b->z), 2.0));double cos_A = (pow(as, 2.0) + pow(ab, 2.0) - pow(bs, 2.0)) / (2 * ab*as);double sin_A = sqrt(1 - pow(cos_A, 2.0));return as*sin_A; }
参考:
http://www.cnblogs.com/live41/archive/2009/12/30/1635786.html
1 0
- 三维空间点到直线的距离C++实现
- C++实现三维空间中点到点、点到直线、点到平面的距离计算
- 点到直线的距离opencv实现
- 三维空间异面直线的距离及最近点
- 三维空间里点到直线的距离
- 点到直线的距离
- 点到直线的距离
- 点到直线的距离
- 点到直线的距离
- 点到直线的距离
- 点到直线的距离
- 点到空间直线的距离
- 计算点到直线的距离
- 点到直线、线段的距离
- 关于点到直线距离的理解
- 计算空间点到直线的距离
- 计算点到直线的距离
- 点到任意直线的距离
- spark java.utils.List 没有map方法的问题
- Redis介绍和使用场景
- python windows安装
- 解决listview层层嵌套的另外一种思路(细节说明)
- mysql数据库中删除数据的三种形式 drop和 truncate 和 delete
- 三维空间点到直线的距离C++实现
- Android中集成Zxing库实现扫描二维码(对Zxing库精简)
- 如何利用训练好的神经网络进行预测
- 织梦内容管理系统
- WinHttpRequest之get_ResponseText乱码问题
- 算法的时间复杂度和空间复杂度分析
- git ssh配置以及常用上传命令
- 织梦内容管理系统
- qcom I2C driver : i2c-msm-v2.c