2. 平面

浏览量:34

参考

      Hill, F., and S. Kelley. Computer Graphics Using OpenGL, 3/E, Pearson, 2007.       Philip Schneider, and David H. Eberly. Geometric tools for computer graphics, Morgan Kaufmann, 2002.

spacer
浏览量:88

2.6. “近似”平面

本篇文章禁止用于任何商业目的,版权申明、版本说明等见《前言》。 PDF文档和源码下载地址:https://github.com/twinklingstar20/Programmers_Computational_Geometry 2.6. “近似”平面 问题描述:在三维空间上,有一个多边形\({\rm P} = \left\{ {{V_0},{V_1}, \cdots ,{V_{m - 1}}} \right\}\),确定经过该多边形的平面,并不能保证多边形上的顶点精确的在同一个平面上。 计算经过多边形的平面,有一种非常简单的方法,就是从中任选三个顶点,使用叉积,计算出法向量,再计算出平面表示中的常量。这种方法存在两个问题:(1)如果所有点不能精确的在同一个平面上,任选的三个点不具代表性,无法代表点集中所有的点;(2)如果选择的三个点,“几乎”(很接近,但是又不是)是同一条直线上,计算叉积的结果会非常的小,则误差就会变得非常的大。 另外一种方法,是从顶点集中任选三个点匹配,那么就会有\(m\left( {m - 1} \right)\left( {m - 2} \right)/6\)个组合,计算出它们的法向量,排除掉长度很小的法向量,归一化所有的法向量,最终取所有向量的平均值。这是一种估计法向量的方法,但是算法的复杂度达到\(O({m^3})\),效率成了这种方法的瓶颈。 Martin Newell提出了一种计算经过多边形\({\rm P}\)的平面的估计方法,考虑到所有点对法向量的贡献。设求得的法向量是\(\vec n = ({n_x},{n_y},{n_z})\),它的计算公式如等式(2.26)所示: \

spacer
浏览量:25

2.5. 平面与平面

本篇文章禁止用于任何商业目的,版权申明、版本说明等见《前言》。 PDF文档和源码下载地址:https://github.com/twinklingstar20/Programmers_Computational_Geometry 2.5. 平面与平面 2.5.1. 平面与平面的夹角 问题描述:计算两个平面\({\Gamma _1}:\{ {\vec n_1},{d_1}\} \)和\({\Gamma _2}:\{ {\vec n_2},{d_2}\} \)的夹角\(\theta \),其中,\({\vec n_1},{\vec n_2}\)分别是平面\({\Gamma _1},{\Gamma _2}\)的法向量,\({d_1},{d_2}\)分别是平面\({\Gamma _1},{\Gamma _2}\)的常量。 图2.13 平面\({\Gamma _1}\)与平面\({\Gamma _2}\)的夹角 设两个平面不平行或者重合,如图2.13所示,直线\(L\)是两个平面的相交直线,\({P_1},{P_2}\)分别是平面\({\Gamma _1},{\Gamma _2}\)上的点,点\(Y\)在直线\(L\)上,且\(\overline {{P_1}Y} \bot L,\overline {{P_2}Y} \bot L\),则\(\angle {P_1}Y{P_2}\)就是两平面的夹角。又\(\overline {{P_1}Q} \bot {\Gamma _1},\overline

spacer
浏览量:48

2.4. 直线与平面

本篇文章禁止用于任何商业目的,版权申明、版本说明等见《前言》。 PDF文档和源码下载地址:https://github.com/twinklingstar20/Programmers_Computational_Geometry 2.4. 直线与平面 2.4.1. 直线与平面的夹角 问题描述:计算直线\(L(t) = Q + t\vec d,t \in \left( { - \infty , + \infty } \right)\)与平面\(\Gamma :\{ \vec n,d\} \)之间的夹角\(\theta \),其中,\(Q\)表示直线\(L\)上的点,\(\vec d\)表示直线的方向,\(\vec n\)是平面的法向量,\(d\)是一个常量。 图2.11 直线\(L\)与平面\(\Gamma \)的夹角 如图2.11所示,设直线\(L\)与平面\(\Gamma \)不平行,即相交于一个点\(Y\),\(A\)是直线\(L\)上的一个点,但不在平面\(\Gamma \)上,经过点\(A\)作一条垂直于平面的直线,与平面相交于点\(A'\),连接\(Y,A'\),那么直线与经过\(Y,A'\)的直线的夹角\(\theta \)就是最终要计算的直线与平面的夹角。显然,经过三个点\(Y,A,A'\)可以确定一个平面\(\Gamma '\),易知,\(\Gamma '\)垂直于平面\(\Gamma \)且两平面相交于经过\(Y,A'\)的直线,可以计算出直线与平面法向量的夹角: \

spacer
浏览量:85

2.3. 点、向量与平面

本篇文章禁止用于任何商业目的,版权申明、版本说明等见《前言》。 PDF文档和源码下载地址:https://github.com/twinklingstar20/Programmers_Computational_Geometry 2.3. 点、向量与平面 2.3.1. 点到平面的距离 问题描述:计算点\(Q\)到平面\(\Gamma :\{ \vec n,d\} \)的距离,其中\(\vec n\)是平面的法向量,\(d\)是一个常量。 图2.8 点到平面的有符号距离 可以采用等式(2.8),计算点到平面的有符号距离。如图2.8所示,点\({Q_1}\)在平面的正半空间上,则有符号距离为正;点\({Q_2}\)在平面的负半空间上,则有符号距离为负;否则,点在平面上,则点\({Q_3}\)到平面的有符号距离为零。如果法向量\(\vec n\)已经归一化,即长度为1,那么就不再需要等式中的除法操作。 \ 如果是判断一个点\(Q\)与平面的关系,也可以采用计算有符号距离的方法,如果距离为零,则说明点在平面上;反之,则可能在平面的正半空间或者负半空间上。由于只需要要判断有符号距离是否为零,或者正负性,为了提高算法的效率,可以不需要等式中的除法操作。 2.3.2. 点到平面的投影 问题描述:计算点\(Q\)到平面\(\Gamma :\{ \vec n,d\} \)的投影点,其中\(\vec n\)是平面的法向量,\(d\)是一个常量。

spacer
浏览量:43

2.2. 平面初始化

本篇文章禁止用于任何商业目的,版权申明、版本说明等见《前言》。 PDF文档和源码下载地址:https://github.com/twinklingstar20/Programmers_Computational_Geometry 2.2. 平面初始化 在后面的算法,都是基于(2.2)所示的平面的参数方程表示,给定三种条件,可以确定一个平面:1)给定三个不共线的点;2)两条相交的直线;3)一条直线和一个不在该直线上的点。本节将介绍在给定这三种条件时,如果得出平面的如(2.2)式所示的参数表示。 2.2.1. 三个不共线的点 问题描述:在三维空间上,有不共线的三个点\({V_i},i \in \{ 0,1,2\} \),确定经过它们的平面。 三个点的顺序影响平面对象法向量的方向,可以使用如下等式,初始化一个经过它们的平面: \ 向量\(\vec n\)与边\(\overline {{V_0}{V_1}} \)、\(\overline {{V_1}{V_2}} \)、\(\overline

spacer
浏览量:129

2.1. 平面简介

本篇文章禁止用于任何商业目的,版权申明、版本说明等见《前言》。 PDF文档和源码下载地址:https://github.com/twinklingstar20/Programmers_Computational_Geometry 2.1. 平面简介 直观的讲,平面就是一个平坦的无穷大的纸,上面有无穷个点。在三维空间的任何一个平面\(\Gamma \),都可以用参数方程表示为: \ 其中,\(a,b,c,d\)是常量且不全为0,\(\left( {x,y,z} \right)\)表示点的坐标,即任意一个满足等式(2.1)的点都在平面\(\Gamma \)上。\(\left( {x,y,z} \right)\)构成平面的法向量\(\vec n\),因此平面的参数方程的另一种形式为: \

spacer