-
点到平面距离
2019-04-10 13:52:21 -
手推点到平面距离
2019-06-08 09:46:47今天在算点到平面距离的时候,直接套用公式就求得结果,感觉很不爽,想知道具体推导公式,于是自己手推了一下,推导涉及投影长度公式,想具体了解的同学可以点击链接出门左转即可 ...话不多说直接上图: ...今天在算点到平面距离的时候,直接套用公式就求得结果,感觉很不爽,想知道具体推导公式,于是自己手推了一下,推导涉及投影长度公式,想具体了解的同学可以点击链接出门左转即可
https://blog.csdn.net/qq_35975685/article/details/91152718
话不多说直接上图:
喜欢的同学别忘给点赞~ -
叉积求点到平面距离_已知三点求平面方程、平面法向量和点到平面的距离
2020-12-20 12:55:41已知三点求平面方程、平面法向量和点到平面的距离已知三点p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),要求确定的平面方程关键在于求出平面的一个法向量,为此做向量p1p2(x2-x1,y2-y1,z2-z1),p1p3(x3-x1,y3-y1,z3-z1...已知三点求平面方程、平面法向量和点到平面的距离
已知三点p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),要求确定的平面方程
关键在于求出平面的一个法向量,为此做向量p1p2(x2-x1,y2-y1,z2-z1), p1p3(x3-x1,y3-y1,z3-z1),平面法线和这两个向量垂直,因此法向量n:
平面方程:a(x-x1)+b(y-y1)+ c(z-z1)=0;
d=-a*x1-b*y1-c*z1。
平面平面方程为ax+by+cz+d=0。
//已知3点坐标,求平面ax+by+cz+d=0;
void get_panel(Point p1,Point p2,Point p3,double &a,double &b,double &c,double &d)
{
a= ( (p2.y-p1.y)*(p3.z-p1.z)-(p2.z-p1.z)*(p3.y-p1.y) );
b= ( (p2.z-p1.z)*(p3.x-p1.x)-(p2.x-p1.x)*(p3.z-p1.z) );
c= ( (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x) );
d= ( 0-(a*p1.x+b*p1.y+c*p1.z) );
}
// 已知三点坐标,求法向量
Vec3 get_Normal(Point p1,Point p2,Point p3)
{
a= ( (p2.y-p1.y)*(p3.z-p1.z)-(p2.z-p1.z)*(p3.y-p1.y) );
b= ( (p2.z-p1.z)*(p3.x-p1.x)-(p2.x-p1.x)*(p3.z-p1.z) );
c= ( (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x) );returnVec3(a,b,c);
}
//点到平面距离
double dis_pt2panel(Point pt,double a,double b,double c,doubled)
{return f_abs(a*pt.x+b*pt.y+c*pt.z+d)/sqrt(a*a+b*b+c*c);
}
三点共线判断
方法:面积判断
A (ax,ay) ,B(bx,by),C(cx,cy);
判断 area(ABC) ==0
area(ABC) = 1/2 * ( AC X BC ) = 1/2 *((ax-cx)*(by-cy)-(bx-cx)*(ay-cy))
判断 (ax-cx)*(by-cy) == (bx-cx)*(ay-cy) 即可。
AC X BC 为两矢量的叉积
参考文章:
-
叉积求点到平面距离_三维凸包+点到平面距离+已知3点求平面方程
2020-12-20 12:55:45//如果p点能看到该面f,则继续深度探索f的3条边,以便更新新的凸包面 38 else//否则因为p点只看到cnt面,看不到f面,则p点和a、b点组成一个三角形。 39 {40 add.a=b,add.b=a,add.c=p,add.ok=1;41 vis[p][b]=vis[a][p...1 /*==================================================*\2 | 3D凸包3 | CALL: 构建凸包 = construct();4 \*==================================================*/
5 #define TPN 1010
6 structTPoint{7 doublex,y,z;8 void get(){scanf("%lf%lf%lf",&x,&y,&z);}9 TPoint(){}10 TPoint(double _x,double _y,double_z):x(_x),y(_y),z(_z){}11 TPoint operator-(const TPoint p) {return TPoint(x-p.x,y-p.y,z-p.z);}12 TPoint operator*(const TPoint p) {return TPoint(y*p.z-z*p.y,z*p.x-x*p.z,x*p.y-y*p.x);}//叉积
13 double operator^(const TPoint p) {return x*p.x+y*p.y+z*p.z;}//点积
14 };15 structfac{16 int a,b,c;//凸包一个面上的三个点的编号
17 bool ok;//该面是否是最终凸包中的面
18 };19 structT3dhull{20 int n;//初始点数
21 TPoint ply[TPN];//初始点
22 int trianglecnt;//凸包上三角形数
23 fac tri[TPN];//凸包三角形
24 int vis[TPN][TPN];//点i到点j是属于哪个面
25 void add(){ply[n++].get();}26 double dist(TPoint a){return sqrt(a.x*a.x+a.y*a.y+a.z*a.z);}//两点长度
27 double area(TPoint a,TPoint b,TPoint c){return dist((b-a)*(c-a));}//三角形面积*2
28 double volume(TPoint a,TPoint b,TPoint c,TPoint d){return (b-a)*(c-a)^(d-a);}//四面体有向体积*6
29 double ptoplane(TPoint &p,fac &f){//正:点在面同向
30 TPoint m=ply[f.b]-ply[f.a],n=ply[f.c]-ply[f.a],t=p-ply[f.a];31 return (m*n)^t;32 }33 void deal(int p,int a,intb){34 int f=vis[a][b];//与当前面(cnt)共边(ab)的那个面
35 fac add;36 if(tri[f].ok){37 if((ptoplane(ply[p],tri[f]))>eps) dfs(p,f);//如果p点能看到该面f,则继续深度探索f的3条边,以便更新新的凸包面
38 else//否则因为p点只看到cnt面,看不到f面,则p点和a、b点组成一个三角形。
39 {40 add.a=b,add.b=a,add.c=p,add.ok=1;41 vis[p][b]=vis[a][p]=vis[b][a]=trianglecnt;42 tri[trianglecnt++]=add;43 }44 }45 }46 void dfs(int p,int cnt){//维护凸包,如果点p在凸包外更新凸包
47 tri[cnt].ok=0;//当前面需要删除,因为它在更大的凸包里面48
49 //下面把边反过来(先b,后a),以便在deal()中判断与当前面(cnt)共边(ab)的那个面。即判断与当头面(cnt)相邻的3个面(它们与当前面的共边是反向的,如下图中(1)的法线朝外(即逆时针)的面130和312,它们共边13,但一个方向是13,另一个方向是31)
50
51 deal(p,tri[cnt].b,tri[cnt].a);52 deal(p,tri[cnt].c,tri[cnt].b);53 deal(p,tri[cnt].a,tri[cnt].c);54 }55 bool same(int s,int e){//判断两个面是否为同一面
56 TPoint a=ply[tri[s].a],b=ply[tri[s].b],c=ply[tri[s].c];57 return fabs(volume(a,b,c,ply[tri[e].a]))
62 inti,j;63 trianglecnt=0;64 if(n<4) return;65 bool tmp=true;66 for(i=1;i
67 {68 if((dist(ply[0]-ply[i]))>eps)69 {70 swap(ply[1],ply[i]); tmp=false; break;71 }72 }73 if(tmp) return;74 tmp=true;75 for(i=2;i
76 if((dist((ply[0]-ply[1])*(ply[1]-ply[i])))>eps){77 swap(ply[2],ply[i]); tmp=false; break;78 }79 }80 if(tmp) return;81 tmp=true;82 for(i=3;i
83 if(fabs((ply[0]-ply[1])*(ply[1]-ply[2])^(ply[0]-ply[i]))>eps){84 swap(ply[3],ply[i]); tmp=false; break;85 }86 }87 if(tmp) return;88 fac add;89 for(i=0;i<4;i++){//构建初始四面体(4个点为ply[0],ply[1],ply[2],ply[3])
90 add.a=(i+1)%4,add.b=(i+2)%4,add.c=(i+3)%4,add.ok=1;91 if((ptoplane(ply[i],add))>0) swap(add.b,add.c);//保证逆时针,即法向量朝外,这样新点才可看到。
92 vis[add.a][add.b]=vis[add.b][add.c]=vis[add.c][add.a]=trianglecnt;//逆向的有向边保存
93 tri[trianglecnt++]=add;94 }95 for(i=4;i
96 for(j=0;j
97 if(tri[j].ok&&(ptoplane(ply[i],tri[j]))>eps){//对当前凸包面进行判断,看是否点能否看到这个面
98 dfs(i,j); break;//点能看到当前面,更新凸包的面(递归,可能不止更新一个面)。当前点更新完成后break跳出循环
99
100 }101 }102 }103 int cnt=trianglecnt;//这些面中有一些tri[i].ok=0,它们属于开始建立但后来因为在更大凸包内故需删除的,所以下面几行代码的作用是只保存最外层的凸包
104 trianglecnt=0;105 for(i=0;i
111 double ret=0;112 for(int i=0;i
117 TPoint p(0,0,0);118 double ret=0;119 for(int i=0;i
124 int facepolygon(){//表面多边形数
125 int ans=0,i,j,k;126 for(i=0;i
135 };
-
向量版 点到平面距离 的推导
2014-12-26 18:21:01点到平面距离的推导过程, 重点是法线n是单位向量, 这就简化了推导, 使其更容易理解. 如图所示: 首先: Q到平面的距离 r = |Q - Q'| 其次: 平面法向量n 和 Q-Q' 平行, 又因为n是单位向量, ... -
点到平面距离完整推导
2019-12-13 10:13:43点到面的距离一般还说时最短距离,但一个平面一般是有界限的,所以需要先把一个平面用截距式方程显示为: Ax+By+Cz+D=0 借用这张图来表示: 可以看到要求d(最短距离)需要知道q点到p点(p点时平面的点)的距离... -
点到平面距离推导
2018-10-12 09:54:13“平面方程”是指空间中所有处于同一平面的点所对应的方程,其一般式形如Ax+By+Cz+D=0。 表示方法 截距式 x/a+y/b+z/c=1 点法式 A(x-x0)+B(y-y0)+C(z-z0)=0 一般式 Ax+By+Cz+D=0 ... -
平面方程、两平面夹角、点到平面距离
2020-03-26 10:15:41平面方程 法向量:垂直于平面的非零向量 法线向量垂直于平面上的任意向量 平面的点法式方程 过三点的法向量的求法 -
叉积求点到平面距离_OpenCV计算点到直线的距离 数学法
2020-12-20 12:55:42我们在检测图像的边缘图时,有时需要检测出直线...点到直线距离代码如下://=================================排除干扰直线============================================// 根据中心点与直线的距离 排除干扰直线... -
叉积求点到平面距离_平面方程怎么求
2020-12-20 12:55:42那么关于到平面方程怎么求的相关信息,小编也是在网上进行了一系列的信息,那么接下来就由小编来给大家分享下小编所收集到与平面方程怎么求相关的信息吧(以下内容来自于网络非小编所写,如有侵权请与站长联系删除)... -
如何用法向量求点到平面距离_平面的方程
2021-01-16 17:12:16今天开始介绍空间中一些基本几何体的方程,介绍完了再来应用一...平面的法向量与平面的点法式平面的垂线被称作平面的法线(Normal line),法的意思是,直线的方向规定了平面延展的方向.在计算机图形学中经常和这玩意... -
【数学】点到平面距离推导
2019-08-04 10:10:57“平面方程”是指空间中所有处于同一平面的点所对应的方程,其一般式形如Ax+By+Cz+D=0。 表示方法: 截距式 x/a+y/b+z/c=1 点法式 A(x-x0)+B(y-y0)+C(z-z0)=0 一般式 Ax+By+Cz+D... -
叉积求点到平面距离_求一个点到曲线或折线的最短距离?
2020-12-20 12:55:44只回答定点到折线的最短距离的求法。一般由目测,即可看出哪一段折线是离定点最近的折线(例如你画的那个,显然DE就是离定点最近的折线段),如看不出多算几段也可以,例如可以算每段折线离定点最近的点,则所有线段中... -
叉积求点到平面距离_【微积分基础(21)】平面的进一步认识(2.平面夹角、点到平面的距离、例题)...
2020-12-20 12:55:47上一期我们初步认识了平面,通过平面的四个方程来进行一步一步的探寻。这一期我们来进一步认识平面,解决更多关于平面的问题。第一步,我们来学习平面的夹角:平面的夹角什么是平面的夹角呢?我们可以直观的想象,... -
如何用法向量求点到平面距离_【立体几何】用空间向量求点到面的距离
2021-01-16 17:51:51理科立体几何大题第二问,同学们都用空间向量解决空间线面角和二面角的问题,虽然老师讲了用向量法法求点到面的距离公式的推导,但是学生训练量少,容易遗忘。2019年高考前,湖传说有可能在高考中考察,结果2019年... -
叉积求点到平面距离_计算几何总结
2020-12-20 12:55:431、点积a·b的几何意义为a在b上的投影长度乘以b的模, a·b=|a||b|cosθ,其中θ为a,b之间的夹角vector operator + (vector a,vector b) {return vector (a.x+b.x,a.y+b.y); }vector operator - (vector a,vector b) {... -
如何用法向量求点到平面距离_高中数学:不用平面角求二面角的大小
2021-01-16 17:12:24找出二面角的平面角往往是求二面角的大小的难点。本文给出回避平面角来求二面角的大小的三种方法。方法一:将二面角的大小化归为分别与两个半平面共面且垂直于棱...图1(I)求点P到平面ABCD的距离;(II)求面PAB与面CPB... -
如何用法向量求点到平面距离_平面内有N个点,如何快速求出距离最近的点对?...
2021-01-15 07:23:54大家好,我们今天来看一道非常非常经典的算法题——最近点对问题。这个问题经常在各种面试...现在我们知道这n个点的坐标,要求找出这n个点当中距离最近的两个点的间距。我不确定这个问题是否出自于天文学,但是把它... -
叉积求点到平面距离_用叉乘求法向量.doc
2021-01-12 14:21:23用叉乘求法向量.docPAGE 1平面法向量的求法及其应用平面的法向量1、定义:如果,那么向量叫做平面的法向量。平面的法向量共有两大类(从方向上分),无数条。2、平面法向量的求法方法一(内积法):在给定的空间直角坐标... -
如何用法向量求点到平面距离_高中数学:平面法向量在处理空间角与距离问题时的应用...
2021-01-16 17:12:23传统计算空间角与距离需经过“作、证、算”三个步骤,引进空间向量这个有力的工具,给处理角与...一、求解点面距离与线面角解法原理:如图1,已知点A是平面外的一点,是平面的一个法向量,点B是平面内一点,作平面于... -
如何用法向量求点到平面距离_无论大考小考,无论校考,还是联考,老师钟爱的题型“空间距离”...
2021-01-17 09:34:48高中数学必修二立体几何,有一类重要的题型,就是“空间的...线到平面的距离,面到平面的距离问题,都可以转化为点到平面的距离问题。我们以点到平面的距离为例,说明空间距离的求法。求空间距离常用的方法有:(1)... -
叉积求点到平面距离_【视觉几何】为什么八点算法的点不能共面
2020-12-24 20:46:431. 本质矩阵Essential Matrix 推导对于空间点在两相机坐标系下表示当然,也可以表示成归一化平面内坐标,其形式为,即:将替换为归一化平面坐标,表示为: 即为本质矩阵Essential Matrix。2. 基本矩阵Fundamental ... -
如何用法向量求点到平面距离_如何学习高中立体几何?
2021-01-16 17:12:17赶紧收藏起来,立体几何拿高分~先看看导图一、学习方法1)多观察多观察,多琢磨立体图形,在头脑中“证明”定理和构造定理的 “图”,从认识平面图形到认识立体图形是一次飞跃,要有一个过程。有的同学自制-空间几何... -
【感知机/支持向量机】点到平面距离公式的由来
2018-05-26 10:52:23我的机器学习教程 「美团」算法工程师带你入门机器学习 以及 「三分钟系列」数据结构与算法 已经开始更新了,欢迎大家订阅...在感知机模型中,输入空间中任意一点 到超平面S的距离: 其推导过程如下: -
三维凸包+点到平面距离+已知3点求平面方程
2012-08-27 15:51:21/*=============================================...//点到平面距离 double dis_pt2panel(TPoint pt,double a,double b,double c,double d){ return f_abs(a*pt.x+b*pt.y+c*pt.z+d)/sqrt(a*a+b*b+c*c); } -
如何用法向量求点到平面距离_支持向量机(SVM)
2021-01-16 17:12:39所以,假设决策边界是一个阴影平面,求点到平面的距离转换成点到点的距离,然后再垂直方向上的投影。大概的模型如下图: x为一个点,面的方程可以用线性方程来描述: 其中w为法向量,决定了超平面的方向,b为位移量... -
如何用法向量求点到平面距离_【巧课易分享】高中数学:不用平面角求二面角的大小...
2021-01-16 17:12:17巧课易教育找出二面角的平面角往往是求二面角的大小的难点。本文给出回避平面角来求二面角的大小的三种方法。方法一:将二面角的大小化归为分别与两个半平面共面且垂直...图1(I)求点P到平面ABCD的距离;(II)求面PAB... -
叉积求点到平面距离_5.求点到面的距离一般有三种办法:①直接法---过“点 作“面 的垂线(尽可能找到过这...
2021-01-12 14:21:235.求点到面的距离一般有三种办法:①直接法---过“点 作“面 的垂线(尽可能找到过这一点的一个与“面 垂直的 平面.然后过“点 作它们交线的垂线),②等积转换,③法向量: 若平面的法向量为.直线AB与平面交于点A.则点B... -
叉积求点到平面距离_基于稳定性分析的伸缩臂叉装车重心位置研究
2020-12-12 04:45:19图1 整车简化模型及坐标系 表1 物理量符号及单位 1.1 纵向稳定性 纵向平面内,主要发生倾覆失稳,包括空载上坡、满载下坡和最远工作距离时满载工作三种危险工况。 1.1.1 空载上坡 一般,空载上坡时,车辆重心靠后,...