zoukankan      html  css  js  c++  java
  • 计算点在平面上的投影坐标

    1.平面方程为一般式

    已知一个平面Plane以及任一点(V_i(x_i,y_i,z_i)),计算点(V_i) 到平面Plane的投影。
    image0

    给定的平面Plane的方程为:

    (Ax+By+Cz+D = 0)

    过点(V_i) 到平面Plane的垂足记作${V_i} ^prime(x,y,z) $ ,则直线(V_i{V_i}^prime) 与平面的法向量(overrightarrow{n}) 平行,直线(V_i{V_i}^prime) 的参数方程为:

    (cases{x=x_i-At cr y=y_i-Bt cr z=z_i-Ct})

    将点((x,y,z))带入平面方程,求出(t):

    (t=dfrac {Ax_i+By_i+Cz_i+D}{A^2+B^2+C^2})

    再将(t) 带入直线的参数方程就求出了投影点${V_i} ^prime(x,y,z) $ 。

    2.平面由法向量和平面上一点构成

    平面由法向量(overrightarrow n(a,b,c)), 平面上的一点(O(x_0,y_0,z_0)) 所确定,只要(overrightarrow nmathrel{{=}llap{/\,}}0) ,确定的平面就是唯一的。

    任一点$V_i(x,y,z) $, 在平面的投影点为 ${V_i} ^prime ({x}prime,{y}prime,{z}^prime) $ 。

    image1

    有以下几何关系:

    1)(V_i{V_i}^prime parallel overrightarrow n), 2)(O{V_i}^primeperp overrightarrow n)

    由平行关系可得到方程组:

    (dfrac{ {x}^prime -x }a = dfrac{ {y}^prime -y }b = dfrac{ {z}^prime -z }c=t) (Rightarrow) (cases{{x}^prime=x+at cr {y}^prime=y+bt cr {z}^prime=z+ct}) (1)

    由垂直关系可得到方程:

    (a({x}^prime-x_0)+b(y^prime-y_0)+c(z^prime-z_0)=0) (Rightarrow) (ax^prime+by^prime+cz^prime=ax_0+by_0+cz_0) (2)

    由方程(1)(2)求解出(t):

    (t=dfrac{ ax_0+by_0+cz_0-(ax+by+cz) }{a^2+b^2+c^2}) (3)

    再把(t)的值带入方程(1)就求出了投影点${V_i} prime({x}prime,{y}prime,{z}prime) $ 。

    3.平面由三个不共线的点构成

    平面由三个不共线的点(O(x_0,y_0,z_0)),(P_1(x_1,y_1,z_1))(P_2(x_2,y_2,z_2)) 构成。

    iamge2

    计算投影点({V_i}^prime(x,y,z)) 的思路大致是先计算出平面的法向量(overrightarrow{n}(a,b,c)),此时问题转化为了第2节中的方法求解。

    (overrightarrow{n}=overrightarrow{OP_1} imesoverrightarrow{OP_2}=egin{vmatrix}i & j & kcr {x_1-x_0 } & {y_1-y_0} & {z_1-z_0}cr {x_2-x_0 } & y_2-y_0 & z_2-z_0 end{vmatrix})

    由此计算出(overrightarrow n(a,b,c)) 的三个值:

    (cases{a=(y_1-y_0)(z_2-z_0)-(y_2-y_0)(z_1-z_0) cr b=(x_2-x_0)(z_1-z_0)-(x_1-x_0)(z_2-z_0) cr c=(x_1-x_0)(y_2-y_0)-(x_2-x_0)(y_1-y_0)})

    之后的按照第二节中的方法计算求出点({V_i}^prime(x,y,z)) 的坐标。

  • 相关阅读:
    Java导出Excel(附完整源码)
    Scala语言学习笔记——方法、函数及异常
    python时间序列按频率生成日期
    socket主要函数介绍
    JAVA版CORBA程序
    Linux文件压缩命令笔记
    使用JAVA写一个简单的日历
    Node.js 文件系统
    Node.js 常用工具util
    Node.js 全局对象
  • 原文地址:https://www.cnblogs.com/nobodyzhou/p/6145030.html
Copyright © 2011-2022 走看看