按右手定则求已经知三点的法向量

按右手定则求已经知三点的法向量编程这么久了还没有一个自己常用的数学库 每每需要求解什么算法 都在网上查找相关资料 不过好处是可以复习一些已经忘却很久的知识 体验一下温故而知新 背景知识向量积 已知向量 a a1 a2 a3 b b1 b2 b3 其向量积可表示为 a b a2b3 a3b2 a3b1 a1b3 a1b2 a2b1 问题抽象已知三点 P1 x1 y1 y1 P2 x2

 

编程这么久了还没有一个自己常用的数学库,每每需要求解什么算法,都在网上查找相关资料,不过好处是可以复习一些已经忘却很久的知识,体验一下温故而知新。

背景知识

向量积,已知向量

a=(a1,a2,a3) b=(b1,b2,b3)

a×b=(a2b3-a3b2,a3b1-a1b3,a1b2-a2b1)

问题抽象

已知三点 P1(x1,y1,y1),P2(x2,y2,y2),P3(x3,y3,y3)。要求求出这三个点构成平面的法向量。

高中知识解法

按右手定则求已经知三点的法向量

 将 P1 P2 P3​ 坐标带入即可。

按右手定则求已经知三点的法向量

 

然后我们不妨假设 x=1, 这样即可求出 x y z(三个方程三个未知量)。

 

大学知识解法

按右手定则求已经知三点的法向量

具体代码

 //计算三点成面的法向量 三个点v1,v2,v3,法向量vn void GetNormal(const Vec3d& v1, const Vec3d& v2, const Vec3d& v3, Vec3d &vn)  {  double na = (v2.y - v1.y)*(v3.z - v1.z) - (v2.z - v1.z)*(v3.y - v1.y);  double nb = (v2.z - v1.z)*(v3.x - v1.x) - (v2.x - v1.x)*(v3.z - v1.z);  double nc = (v2.x - v1.x)*(v3.y - v1.y) - (v2.y - v1.y)*(v3.x - v1.x);  //平面法向量  vn.Set(na, nb, nc);  }

 

转载于:https://www.cnblogs.com/ice-arrow/p/11120405.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215629.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午1:48
下一篇 2026年3月18日 下午1:48


相关推荐

  • git和github gitlab的区别_gitlab和git区别

    git和github gitlab的区别_gitlab和git区别GitHub是在线代码仓库,全世界只有GitHub一家,大家把代码存储在人家的服务器上。Gitlab相当于小型的GitHub,你可以在本地搭建一个属于你自己的类似GitHub仓库,让小伙伴把代码存储在上面,这样代码只有你们几个人能看见,但是你要存在GitHub上,全世界都能看见git是一种版本控制系统,是一个命令,是一种工具gitlib是用于实现git功能的开发库github是一个基于git实现的在线代码仓库,包含一个网站界面,向互联网开放gitlab是一个基于git实现的在线代码仓

    2025年8月9日
    9
  • python运行代码不成功_Python | PyCharm无法直接运行(Run)脚本

    python运行代码不成功_Python | PyCharm无法直接运行(Run)脚本1刚开始是这样,笔者在PyCharm新建了一个package,然后放了一个脚本2发现无法直接运行:没有Run选项,只有Rununittests选项。于是把脚本拷贝到另一个不是package的目录下3发现在这个目录下,除了这个脚本以外,其余的脚本都是可以运行的4看来是脚本的内容有问题了。看看笔者这个cannot_run的脚本5笔者在Python自带的交互环境IDLE上,运行这个代码,也是正常的。真…

    2022年8月29日
    6
  • mysql慢查询_mysql慢查询为什么要用

    mysql慢查询_mysql慢查询为什么要用1概念MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句。具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是记录运行10秒以上的语句。默认情况下,MySQL数据库并不启动慢查询日志,需要手动来设置这个参数。当然,如果…

    2022年10月15日
    6
  • linux下ll命令查看文件属性_linux中ll命令没用

    linux下ll命令查看文件属性_linux中ll命令没用ll命令其实就是ls-l,当然如果想显示隐藏信息就是ls-al。我个人是特别喜欢ll代替ls-al命令,并且还要有颜色的那种。今天卸载软件重新安装环境变量怎么都不对了,一生气把环境变量都清空了。命令:unsetPATH然后就手动添加环境变量:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/…

    2025年11月27日
    4
  • 网页点击链接,跳转qq添加好友

    网页点击链接,跳转qq添加好友一 网页版本点击跳转到添加好友界面 直接用下面的链接地址 将号改成自己的即可 http wpa com msgrd v 3 amp uin amp site amp menu yes 测试 点击添加效果 二 调用客户端 添加好友 直接用下面的链接地址 将号改成自己的即可 tencent AddContact fr

    2026年3月26日
    3
  • Java 唯一ID生成器「建议收藏」

    Java 唯一ID生成器「建议收藏」前言:   前段时间,写了一个ID生成,发在群里,结果遭到别人嘲笑,心有不甘,于是思来想去,决定在重新写一个ID生成器。此方法生成的ID理论上也是会有重复,但是这个概率太低太低,低到可以忽略不计。原理:使用当前时间戳+指定长度的随机数,并随机打乱字符串。可以生成指定长度的纯数字的ID。具体实现代码:/***普通Id生成器,用时间戳生成+2位随机数生成,*此方法

    2022年6月16日
    421

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号