最近学图形学时遇到了这个问题,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・P1​P2​​=0n・P1​P3​​=0
将 P1P2P3P_1P_2P_3P1​P2​P3​ 三点坐标代入即可。
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 同时垂直于 ab 且符合右手定则

我们注意到 a×b 同时垂直与 ab,而这和法向量的性质刚好一致。因此我们就可以利用 P1P2→\overrightarrow{P_1P_2}P1​P2​​ 与 P1P3→\overrightarrow{P_1P_3}P1​P3​​ 的叉积来构造平面法向量。因此我们不妨假设

n→=P1P2→×P1P3→\overrightarrow{n} = \overrightarrow{P_1P_2} × \overrightarrow{P_1P_3} n=P1​P2​​×P1​P3​​

n→=(a,b,c)\overrightarrow{n}=(a, b, c)n=(a,b,c) 有一个更简单的记法

我们不妨设 P1P2→=(x1,y1,z1)\overrightarrow{P_1P_2} = (x1, y1, z1)P1​P2​​=(x1,y1,z1)、P1P3→=(x2,y2,z2)\overrightarrow{P_1P_3} = (x2, y2, z2)P1​P3​​=(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

已知三点求平面的法向量 —— 两种方法相关推荐

  1. 已知三点求平面法向量

    空间已知三点的位置p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),令它们逆时针在空间摆放.这样就可以得到平面的两个向量p1p2(x2-x1,y2-y1,z2-z1),p1 ...

  2. 已知三点求平面方程、平面法向量和点到平面的距离

    已知三点p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),要求确定的平面方程 关键在于求出平面的一个法向量,为此做向量p1p2(x2-x1,y2-y1,z2-z1), p1 ...

  3. 已知三点求平面方程、平面法向量和点到平面的距离(转载)

    已知三点p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),要求确定的平面方程 关键在于求出平面的一个法向量,为此做向量p1p2(x2-x1,y2-y1,z2-z1), p1 ...

  4. 已知两点求直线一般方程,已知三点求平面一般方程

    我们知道,直线的一般方程是Ax+By+C=0,而平面的一般方程是Ax+By+Cz+D=0. 对于直线方程,有ABC三个未知数.但我们知道,已知两个点只能求出两个未知数.对于平面方程是同理的.事实上,一 ...

  5. 知三点求平面 || 点到平面的距离

    知三点求平面 点到平面的距离 double x,y,z;cin>>x>>y>>z;double p1x,p1y,p1z,p2x,p2y,p2z,p3x,p3y,p3 ...

  6. 已知三点求圆心与半径

    已知三点求圆心与半径  kezunhai@gmail.com http://blog.csdn.net/kezunhai 在计算机图像图形学中,经常会用到求圆心或圆半径的情况,本文介绍一种已知三个点求 ...

  7. C#已知三点求圆方程算法

    如果不赶时间可以自己推算出算式或者直接参考另一个博主的文章: 三点确定一个圆的计算方法_Ivan 的专栏-CSDN博客_三点确定一个圆 程序完整部分<C#已知三点求圆方程算法.rar>已经 ...

  8. matlab 求矩阵秩,求矩阵秩的两种方法及MATLAB的应用

    摘    要: 高等代数是一门逻辑思维比较强和理论知识比较深的学科, 它具有丰富的数学知识, 涉及许多重要的数学思想, 其在数学领域的应用很广泛, 如行列式.矩阵的相关计算和求解线性方程组的解方面的应 ...

  9. matlab已知三点求夹角,已知3点如何求其中两点对第3点的夹角

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:已知3点如何求其中两点对第3点的夹角? 问题详情:有3个问题:1)已知3点如何求其中两点对第3点的夹角?2)如何回答:1)已知3点求 ...

最新文章

  1. phpcms v9 为分类和内容添加伪静态
  2. 安卓高手之路之图形系统(6)ListView继续
  3. 比较好的一些 ConcurrentHashMap讲解博客
  4. 检测ID卡的输入或者是其它卡的输入。
  5. php制作后台驻留执行 ,同时提前返回逻辑信息进行判断的实例
  6. php mssql扩展SQL查询中文字段名解决方法
  7. 集成新版(5.17+)Activiti Modeler与Rest服务
  8. HTTP框架--FOREST 的使用
  9. SQL Server中的数据库文件组和零碎还原
  10. bp神经网络回归预测模型(python实现)_bp神经网络预测代码python
  11. oracle短表和长表的区别,人口普查长表哪些人填和短表有什么区别
  12. 膝关节前交叉韧带重建术后取钉记
  13. ᑋᵉᑊᑊᵒ ᵕ̈ᰔᩚ
  14. 车辆占用应急车道识别抓拍系统 opencv
  15. Android:TextView和EditText
  16. Android 中触摸事件与点击事件分析
  17. 汉仪尚巍手书有版权吗_汉仪尚巍手书字体下载 汉仪尚巍手书体W字体免费版下载...
  18. 管家婆软件使用打印功能的常见问题
  19. Win32汇编:各种语句的构造方式
  20. esxi虚拟机密码忘了,使用PE工具清楚原来密码

热门文章

  1. PyTorch 中科大源
  2. 依存语法:从短语结构树转换为依存树
  3. springboot+shedule之温故而知新
  4. HOT78-跳跃游戏
  5. 增量压缩工具Xdelta3源码解析——增量文件(Header部分)
  6. Altium Designer画图步骤和快捷键
  7. C++中的仿函数functor
  8. HTML常用标记(超详解)
  9. python零基础到入门 |精简干练,记录小白学习日常
  10. 备战英语6级——记录复习进度