已知三点求平面的法向量 —— 两种方法
最近学图形学时遇到了这个问题,PPT 给的大概是一个通过线性代数的方法求的,有点看不懂。加上线性代数早就忘光了,更加是一脸茫然。但是这个知识点在高中讲过,自己却怎么也记不起来了,直到今天突然记起来了,特此记录一下。
问题描述
已知三维空间中三点 P1(x1,y1,y1),P2(x2,y2,y2),P3(x3,y3,y3)P_1(x_1, y_1, y_1),P_2(x_2, y_2, y_2),P_3(x_3, y_3, y_3)P1(x1,y1,y1),P2(x2,y2,y2),P3(x3,y3,y3)。要求求出这三个点构成平面的法向量。
高中知识
我们不妨设平面法向量 n→=(x,y,z)\overrightarrow{n}=(x, y, z)n=(x,y,z)。
我们知道法向量是和平面垂直的,因此法向量也和该平面上任意一条向量相互垂直,即点积为 0。
利用这个性质,我们可以构造两个方程,此时
n→・P1P2→=0n→・P1P3→=0\overrightarrow{n}・ \overrightarrow{P_1P_2} =0\\ \overrightarrow{n}・ \overrightarrow{P_1P_3} = 0 n・P1P2=0n・P1P3=0
将 P1P2P3P_1P_2P_3P1P2P3 三点坐标代入即可。
x(x1−x2)+y(y1−y2)+z(z1−z2)=0x(x1−x3)+y(y1−y3)+z(z1−z3)=0x(x_1-x_2)+y(y_1-y_2)+z(z_1-z_2) = 0 \\ x(x_1-x_3)+y(y_1-y_3)+z(z_1-z_3) = 0 x(x1−x2)+y(y1−y2)+z(z1−z2)=0x(x1−x3)+y(y1−y3)+z(z1−z3)=0
然后我们不妨假设 x=1, 这样即可求出 y z(三个方程三个未知量)。
p.s 这样求出的法向量可能会有分数,可以自行改造一下。
大学知识
在高等数学「向量代数与空间解析几何」这一章中,介绍了向量叉积的概念。其中叉积的几何表示如下:
a×b 是一种向量
方向: a×b 同时垂直于 a 和 b 且符合右手定则
我们注意到 a×b 同时垂直与 a 与 b,而这和法向量的性质刚好一致。因此我们就可以利用 P1P2→\overrightarrow{P_1P_2}P1P2 与 P1P3→\overrightarrow{P_1P_3}P1P3 的叉积来构造平面法向量。因此我们不妨假设
n→=P1P2→×P1P3→\overrightarrow{n} = \overrightarrow{P_1P_2} × \overrightarrow{P_1P_3} n=P1P2×P1P3
n→=(a,b,c)\overrightarrow{n}=(a, b, c)n=(a,b,c) 有一个更简单的记法
我们不妨设 P1P2→=(x1,y1,z1)\overrightarrow{P_1P_2} = (x1, y1, z1)P1P2=(x1,y1,z1)、P1P3→=(x2,y2,z2)\overrightarrow{P_1P_3} = (x2, y2, z2)P1P3=(x2,y2,z2),a、b、c 三者的值对应这下面三个椭圆的行列式。即
a=y1z2−y2z1b=z1x2−z2x1c=x1y2−x2y1a = y1z2 - y2z1 \\ b = z1x2 - z2x1 \\ c = x1y2 - x2y1 a=y1z2−y2z1b=z1x2−z2x1c=x1y2−x2y1
已知三点求平面的法向量 —— 两种方法相关推荐
- 已知三点求平面法向量
空间已知三点的位置p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),令它们逆时针在空间摆放.这样就可以得到平面的两个向量p1p2(x2-x1,y2-y1,z2-z1),p1 ...
- 已知三点求平面方程、平面法向量和点到平面的距离
已知三点p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),要求确定的平面方程 关键在于求出平面的一个法向量,为此做向量p1p2(x2-x1,y2-y1,z2-z1), p1 ...
- 已知三点求平面方程、平面法向量和点到平面的距离(转载)
已知三点p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),要求确定的平面方程 关键在于求出平面的一个法向量,为此做向量p1p2(x2-x1,y2-y1,z2-z1), p1 ...
- 已知两点求直线一般方程,已知三点求平面一般方程
我们知道,直线的一般方程是Ax+By+C=0,而平面的一般方程是Ax+By+Cz+D=0. 对于直线方程,有ABC三个未知数.但我们知道,已知两个点只能求出两个未知数.对于平面方程是同理的.事实上,一 ...
- 知三点求平面 || 点到平面的距离
知三点求平面 点到平面的距离 double x,y,z;cin>>x>>y>>z;double p1x,p1y,p1z,p2x,p2y,p2z,p3x,p3y,p3 ...
- 已知三点求圆心与半径
已知三点求圆心与半径 kezunhai@gmail.com http://blog.csdn.net/kezunhai 在计算机图像图形学中,经常会用到求圆心或圆半径的情况,本文介绍一种已知三个点求 ...
- C#已知三点求圆方程算法
如果不赶时间可以自己推算出算式或者直接参考另一个博主的文章: 三点确定一个圆的计算方法_Ivan 的专栏-CSDN博客_三点确定一个圆 程序完整部分<C#已知三点求圆方程算法.rar>已经 ...
- matlab 求矩阵秩,求矩阵秩的两种方法及MATLAB的应用
摘 要: 高等代数是一门逻辑思维比较强和理论知识比较深的学科, 它具有丰富的数学知识, 涉及许多重要的数学思想, 其在数学领域的应用很广泛, 如行列式.矩阵的相关计算和求解线性方程组的解方面的应 ...
- matlab已知三点求夹角,已知3点如何求其中两点对第3点的夹角
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:已知3点如何求其中两点对第3点的夹角? 问题详情:有3个问题:1)已知3点如何求其中两点对第3点的夹角?2)如何回答:1)已知3点求 ...
最新文章
- phpcms v9 为分类和内容添加伪静态
- 安卓高手之路之图形系统(6)ListView继续
- 比较好的一些 ConcurrentHashMap讲解博客
- 检测ID卡的输入或者是其它卡的输入。
- php制作后台驻留执行 ,同时提前返回逻辑信息进行判断的实例
- php mssql扩展SQL查询中文字段名解决方法
- 集成新版(5.17+)Activiti Modeler与Rest服务
- HTTP框架--FOREST 的使用
- SQL Server中的数据库文件组和零碎还原
- bp神经网络回归预测模型(python实现)_bp神经网络预测代码python
- oracle短表和长表的区别,人口普查长表哪些人填和短表有什么区别
- 膝关节前交叉韧带重建术后取钉记
- ᑋᵉᑊᑊᵒ ᵕ̈ᰔᩚ
- 车辆占用应急车道识别抓拍系统 opencv
- Android:TextView和EditText
- Android 中触摸事件与点击事件分析
- 汉仪尚巍手书有版权吗_汉仪尚巍手书字体下载 汉仪尚巍手书体W字体免费版下载...
- 管家婆软件使用打印功能的常见问题
- Win32汇编:各种语句的构造方式
- esxi虚拟机密码忘了,使用PE工具清楚原来密码