算法概述

平面由一点O(x0,y0,z0)O(x_0,y_0,z_0)和法向量n→=(n1,n2,n3)\overrightarrow{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点应该同时满足

  1. 点Q在平面内,满足平面方程(平面的点法式方程)

    n1(x−x0)+n2(y−y0)+n3(z−z0)=0  (1)

    n_1(x-x_0)+n_2(y-y_0)+n_3(z-z_0)=0\ \ (1)

  2. PQ−→−//n→\overrightarrow{PQ}//\overrightarrow{n},满足
    xQ−xPn1=yQ−yPn2=zQ−zPn3  (2)

    \frac{x_Q-x_P}{n_1}=\frac{y_Q-y_P}{n_2}=\frac{z_Q-z_P}{n_3}\ \ (2)

联立(1)(2)两式可以解得Q的坐标,得到

xQ=n1(x0n1+y0n2+z0n3)+(n22+n23)xP−n1n2yP−n1n3zPn21+n22+n23

x_Q=\frac{n_1(x_0n_1+y_0n_2+z_0n_3)+(n_2^2+n_3^2)x_P-n_1n_2y_P-n_1n_3z_P}{n_1^2+n_2^2+n_3^2}
根据

yQ=n2n1(xP−xQ)+yP  (3)

y_Q=\frac{n_2}{n_1}(x_P-x_Q)+y_P\ \ (3)以及

zQ=n3n1(xP−xQ)+zP  (4)

z_Q=\frac{n_3}{n_1}(x_P-x_Q)+z_P\ \ (4)
得到Q的坐标,这里值得注意的是,求解(3)(4)的时候 n1n_1不能为0,当 n1n_1为0时 yQ=yPy_Q=y_P且 zQ=zPz_Q=z_P

程序实现

下面用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);
elsey=p_out(2);z=p_out(3);
endpoint=[x,y,z];
end

well done!

点到点法式平面投影点的计算相关推荐

  1. python——经纬度坐标和平面投影坐标的相互转换

    美赛建模需要使用到平面坐标系去做基于时间序列的运动范围模型,所以需要对经纬度进行坐标系转换,转换到XY坐标系下.同时,在机器人的路径规划等方面依然会经常使用到坐标系的转换,所以记录一下. 文章目录 经 ...

  2. 几何向量:向量到平面投影和LookAt

    在研究所保密开发完后回来隔离两波,已经接近四五个月没碰外网电脑了,可以说是活成了原始人.       因为某些开发细节原因,需要实现向量投影和LookAt功能,记录一下.       首先实现向量到平 ...

  3. Cesium平面投影坐标系加载

    Cesium支持CGCS2000平面坐标系加载,自己扩展投影计算规则. 支持CGCS2000各类投影坐标,如EPSG:4547,EPSG:4528.各地区本地2000坐标系(如温州2000,苏州200 ...

  4. 2013年9月25日星期三(demo5_2点法式平面)

    所谓点法式,就是 a(x-x0)+b*(y-y0)+c*(z-z0)   =0; 点为直线上一点(x0,y0,z0) 法线为(a,b,c) 初步运行EXE,发现是判断点在平面的哪个区间. 先定义一个3 ...

  5. C++空间中一点到平面投影

    1.点到平面投影公式推导 2.C++代码 void projectCloudToplane( pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_raw,c ...

  6. 平面投影坐标转经纬度坐标

    平面投影坐标转经纬度坐标 本人在进行开发时,使用geotools的GeoTiffReader类读取卫星影像的顶点坐标,得到的是平面坐标,单位是米,打开arcGIS,加载影像,右下角会有坐标,在视图-& ...

  7. android立体3D效果_3D全息投影和平面投影有什么区别_广州全息投影

    随着时代的发展.科技的进步,3D全息投影已经融入到人们的日常生活当中,给人们带来全新的视觉体验,呈现亦真亦幻的虚拟影像世界,越来越多的行业肯定及选择全息投影技术.那么与传统的平面投影相比,3D全息投影 ...

  8. games101:作业7+Microfacet微平面理论+cook-torranceBRDF方程计算+作业7拓展

    games101:作业7+Microfacet微平面理论+cook-torranceBRDF方程计算+作业7拓展 一,作业7 1.1 代码部分 1.2 加入多线程 二,Microfacet微平面理论 ...

  9. 投射式AR/AR眼镜的标定之相机姿态、Unity投影矩阵的计算

    首先感谢这位大佬的系列文章 https://zzlzz.blog.csdn.net/article/details/53215105 https://blog.csdn.net/zzlyw/artic ...

  10. 向量的平面投影 ProjectOnPlane

    1 定义 - ProjectOnPlane // // 摘要: // Projects a vector onto a plane defined by a normal orthogonal to ...

最新文章

  1. 【编译】makefile使用
  2. 英国《金融时报》:全力加码早期投资,红杉中国在下一盘怎样的棋?
  3. 解读金山网盾3.5 0day漏洞免疫技术
  4. Transformer 详解
  5. 《系统集成项目管理工程师》必背100个知识点-57沟通管理
  6. python中def fun(a、b=200)_python 基础 函数
  7. 编程语言c 是什么意思,C/C++知识点之C语言中%*s,%*c 是什么意思
  8. 我的起点(蛇形矩阵)
  9. Qt实践录:TCP网络调试助手
  10. ROS入门-10.话题消息的定义与使用
  11. 案例33:灭火器及其配置验收案例分析
  12. 设计模式演练——工厂方法模式
  13. unity直播推流方式_干货,抖音无人直播技术(建议收藏)
  14. 7-2 前n项的和2 (10 分)
  15. 7-1 打印倒直角三角形图形 (20 分)
  16. 511遇见易语言逍遥模拟器模块封装调用示范
  17. 中国剩余定理(孙子定理)(模板)
  18. OpenCV检测手指个数
  19. addon@Node.js之新手上路
  20. 新一轮产业革命和行业转型加快,行业人才需求显著增加

热门文章

  1. img图片加载失败的处理
  2. Python map函数 <map object at 0x000001C5CDCDA2B0>
  3. 谈谈你对JMM的理解
  4. 电线带电时先接零线还是火线
  5. VUE提示Gradient has outdated direction syntax
  6. Win2003启用硬件加速(DirectX,声显卡启用)
  7. vue标签上自定义动态背景图片
  8. [BZOJ3993] [SDOI2015]星际战争(最大流+二分)
  9. 深入理解JS的delete
  10. 汽车暖风系统操作步骤