点到点法式平面投影点的计算

点到点法式平面投影点的计算算法概述平面由一点 O x0 y0 z0 O x 0 y 0 z 0 和法向量 n n1 n2 n3 overrightarr n n 1 n 2 n 3 定义 平面外一点为 Pout xp yp zp P out x p y p z p 求 PP 到平面的投影点 Q 的坐标设点 Q 的坐标为 xQ yQ zQ x Q y Q z Q 那么 Q 点应该同时满足点 Q 在平面内 满足平面方程 平面的点

算法概述

平面由一点 Ox0,y0,z0 和法向量 n=(n1,n2,n3) 定义,平面外一点为 Pout(xp,yp,zp) ,求 P 到平面的投影点Q的坐标

设点Q的坐标为

(xQ,yQ,zQ)
,那么Q点应该同时满足

  1. 点Q在平面内,满足平面方程(平面的点法式方程)
    n1(xx0)+n2(yy0)+n3(zz0)=0  (1)

  2. PQ//n ,满足
    xQxPn1=yQyPn2=zQzPn3  (2)

xQ=n1(x0n1+y0n2+z0n3)+(n22+n23)xPn1n2yPn1n3zPn21+n22+n23



根据

yQ=n2n1(xPxQ)+yP  (3)

以及

zQ=n3n1(xPxQ)+zP  (4)


得到Q的坐标,这里值得注意的是,求解(3)(4)的时候 n1 不能为0,当 n1 为0时 yQ=yP zQ=zP

程序实现

下面用matlab实现上面这段程序

function point =compute_nearest_point_on_surface2(p,N,p_out) x=(N(1)*(p(1)*N(1)+p(2)*N(2)+p(3)*N(3))+(N(2)^2+N(3)^2)*p_out(1)-N(1)*N(2)*p_out(2)-N(1)*N(3)*p_out(3))/(N(1)^2+N(2)^2+N(3)^2); if (N(1)~=0) y=N(2)/N(1)*(x-p_out(1))+p_out(2); z=N(3)/N(1)*(x-p_out(1))+p_out(3); else y=p_out(2); z=p_out(3); end point=[x,y,z]; end

well done!








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

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

(0)
上一篇 2026年3月16日 下午5:11
下一篇 2026年3月16日 下午5:11


相关推荐

  • CRC校验码计算过程

    CRC校验码计算过程namespaceCRC classProgram staticvoidMa string args byte date 0x01 0x05 0x00 0x00 0xFF 0x00 要计算 CRC 校验的数据 byte crc newbyte 2 用来保存 CRC 效验码 crc GetCRC date

    2026年3月18日
    2
  • #从源头解决# 自定义头文件在VS上出现“无法打开源文件“XX.h“的问题

    #从源头解决# 自定义头文件在VS上出现“无法打开源文件“XX.h“的问题自己编写了一个头文件,在主函数中通过#include引用时出现了无法打开源文件的问题,通过网上查阅,发现是自己混淆了#include<>和#include””的用法。问题完美解决!…

    2022年6月16日
    24
  • typedef int ElemType的理解[通俗易懂]

    typedef int ElemType的理解[通俗易懂]From:https://blog.csdn.net/zhuzhihai1988/article/details/82334651  typedefintElemType;为什么呀,我倒是知道后面用ElemType定义别的数据类型,看起来是把ElemType和int一样啦,那直接用int不用行了,为什么要用ElemType.这是定义一个线性表元素类型的最佳…

    2022年5月19日
    61
  • netstat 命令详解

    netstat 命令详解netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。语法选项netstat[选项]-a或–all:显示所有连线中的Socket;-A&amp;amp;amp;amp;amp;lt;网络类型&amp;amp;amp;amp;amp;gt;或–&amp;amp;amp;amp;amp;lt;网络类型&amp;amp;amp;amp;amp;gt;:列出该网络类型连线中的相关地址;

    2022年5月7日
    56
  • python爬虫100例教程 python爬虫实例100例子

    python爬虫100例教程 python爬虫实例100例子python 爬虫 100 例教程 python 爬虫实例 100 例子涉及主要知识点 web 是如何交互的 requests 库的 get post 函数的应用 response 对象的相关函数 属性 python 文件的打开 保存代码中给出了注释 并且可以直接运行哦如何安装 requests 库 安装好 python 的朋友可以直接参考 没有的 建议先装一哈 python 环境 windows 用户 Linux 用户几乎一样 打开 cmd 输入以下命令即可 如果 python 的环境在 C 盘的目录 会提示权限不够 只需以管

    2026年3月17日
    1
  • JVM垃圾回收机制(一)[通俗易懂]

    JVM垃圾回收机制(一)[通俗易懂]一、什么是垃圾?1:引用计数算法:给对象中加一个引用计数器,每当有一个引用指向它时,计数器的值就加一,引用失效时,计数器的值就减一。当该对象引用计数器等于0的时候就被视为垃圾。该算法存在很大的缺陷,若两个对象存在互相引用,则两者的引用计数器都不为0,都不能被GC。如:publicclassReferenceCountingGC{publi

    2022年6月7日
    34

发表回复

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

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