三维投影- 维基百科,自由的百科全书

文章推薦指數: 80 %
投票人數:10人

三维投影是将三维空间中的点映射到二维平面上的方法。

由于目前绝大多数图形数据的显示方式仍是二维的,因此三维投影的应用相当广泛,尤其是在计算机图形学,工程学和 ... 三维投影 维基百科,自由的百科全书 跳到导航 跳到搜索 三维投影是将三维空间中的点映射到二维平面上的方法。

由于目前绝大多数图形数据的显示方式仍是二维的,因此三维投影的应用相当广泛,尤其是在计算机图形学,工程学和工程制图中。

目录 1分类 2平行投影 2.1正交投影 2.2斜投影 3透视投影 4图示 5参看 6参考文献 7深入阅读 分类[编辑] 三维图形平面投影 平行投影:投影中心与投影平面的距离是无限的,投影线相互平行 正投影(正交投影):投影线垂直于投影平面 多视图投影:物体的坐标面与投影面平行,正视图、侧视图、俯视图 轴测投影:物体的三个坐标面或坐标轴与投影面均不平行 正等轴测投影(正等测):投影时三个坐标轴等比例缩放,投影面坐标轴夹角120° 正二轴测投影(正二测):投影时两个坐标轴等比例缩放,第三个坐标轴缩放比例不同 正三轴测投影(正三测):投影时三个坐标轴缩放比例均不相等 斜投影:投影线不垂直于投影平面 斜等轴测投影(斜等测) 斜二轴测投影(斜二测) 斜三轴测投影(斜三测) 透视投影:投影中心与投影平面的距离是有限的 一点透视 两点透视 三点透视 平行投影[编辑] 平行投影是投影线相互平行的投影。

若投影线平行于投影面则称正投影,若投影面倾斜于投影面则称斜投影。

正交投影[编辑] 正交投影是一系列用于显示三维物体的轮廓、细节或精确测量结果的变换方法。

通常又称作截面图、鸟瞰图或立面图。

当视平面的法向(即摄像机的朝向)平行于笛卡尔坐标系三根坐标轴中的一根,数学变换定义如下: 若使用一个平行于y轴(侧视图)的正交投影将三维点 a x {\displaystylea_{x}} , a y {\displaystylea_{y}} , a z {\displaystylea_{z}} 投影到二维平面上得到二维点 b x {\displaystyleb_{x}} , b y {\displaystyleb_{y}} ,可以使用如下公式 b x = s x a x + c x {\displaystyleb_{x}=s_{x}a_{x}+c_{x}} b y = s z a z + c z {\displaystyleb_{y}=s_{z}a_{z}+c_{z}} 其中向量s是一个任意的缩放因子,而c是一个任意的偏移量。

这些常量可自由选择,通常用于将视口调整到一个合适的位置。

该投影变换同样可以使用矩阵表示(为清晰起见引入临时向量d) [ d x d y ] = [ 1 0 0 0 0 1 ] [ a x a y a z ] {\displaystyle{\begin{bmatrix}{d_{x}}\\{d_{y}}\\\end{bmatrix}}={\begin{bmatrix}1&0&0\\0&0&1\\\end{bmatrix}}{\begin{bmatrix}{a_{x}}\\{a_{y}}\\{a_{z}}\\\end{bmatrix}}} [ b x b y ] = [ s x 0 0 s z ] [ d x d y ] + [ c x c z ] . {\displaystyle{\begin{bmatrix}{b_{x}}\\{b_{y}}\\\end{bmatrix}}={\begin{bmatrix}{s_{x}}&0\\0&{s_{z}}\\\end{bmatrix}}{\begin{bmatrix}{d_{x}}\\{d_{y}}\\\end{bmatrix}}+{\begin{bmatrix}{c_{x}}\\{c_{z}}\\\end{bmatrix}}.} 虽然正交投影产生的图像在一定程度上反映了物体的三维特性,但此类投影图像和实际观测到的并不相同。

特别是对于相同长度的平行线段,无论离虚拟观察者(摄像机)远近与否,它们都会在正交投影中显示为相同长度。

这会导致较近的线段看起来被缩短了。

斜投影[编辑] 斜投影不像正交投影一样投影线垂直于投影面,而是投影线与投影面成非90度的斜角。

透视投影[编辑] 主条目:变换矩阵 透视投影的定义更为复杂。

可以将其理解为透过摄像机取景器对于被投影物体进行观察。

摄像机的位置、朝向和视野都将影响投影变换的结果。

我们定义以下变量来对这一变换进行描述: a x , y , z {\displaystyle\mathbf{a}_{x,y,z}} :将被投影的三维空间中的点。

c x , y , z {\displaystyle\mathbf{c}_{x,y,z}} :摄像机的位置。

θ x , y , z {\displaystyle\mathbf{\theta}_{x,y,z}} :摄像机的旋转角度。

当 c x , y , z {\displaystyle\mathbf{c}_{x,y,z}} =<0,0,0>且 θ x , y , z {\displaystyle\mathbf{\theta}_{x,y,z}} =<0,0,0>,三维向量<1,2,0>将被投影到二维向量<1,2>。

e x , y , z {\displaystyle\mathbf{e}_{x,y,z}} :观测者相对显示平面的位置。

[1] 最终结果为: b x , y {\displaystyle\mathbf{b}_{x,y}} : a {\displaystyle\mathbf{a}} 所产生的二维投影。

首先我们定义点 d x , y , z {\displaystyle\mathbf{d}_{x,y,z}} 作为点 a {\displaystyle\mathbf{a}} 向摄像机坐标系所作的变换,其中摄像机坐标系由摄像机的位置 c {\displaystyle\mathbf{c}} 和旋转 θ x , y , z {\displaystyle\mathbf{\theta}_{x,y,z}} 所决定。

该过程为:先用 a {\displaystyle\mathbf{a}} 减去 c {\displaystyle\mathbf{c}} ,然后使用由 − θ {\displaystyle-\mathbf{\theta}} 产生的旋转矩阵乘上该结果。

该变换通常称为摄像机变换(注意该计算过程假设使用左手法则): [2] [3] [ d x d y d z ] = [ 1 0 0 0 cos ⁡ ( − θ x ) − sin ⁡ ( − θ x ) 0 sin ⁡ ( − θ x ) cos ⁡ ( − θ x ) ] [ cos ⁡ ( − θ y ) 0 sin ⁡ ( − θ y ) 0 1 0 − sin ⁡ ( − θ y ) 0 cos ⁡ ( − θ y ) ] [ cos ⁡ ( − θ z ) − sin ⁡ ( − θ z ) 0 sin ⁡ ( − θ z ) cos ⁡ ( − θ z ) 0 0 0 1 ] ( [ a x a y a z ] − [ c x c y c z ] ) {\displaystyle{\begin{bmatrix}\mathbf{d}_{x}\\\mathbf{d}_{y}\\\mathbf{d}_{z}\\\end{bmatrix}}={\begin{bmatrix}1&0&0\\0&{\cos(\mathbf{-\theta}_{x})}&{-\sin(\mathbf{-\theta}_{x})}\\0&{\sin(\mathbf{-\theta}_{x})}&{\cos(\mathbf{-\theta}_{x})}\\\end{bmatrix}}{\begin{bmatrix}{\cos(\mathbf{-\theta}_{y})}&0&{\sin(\mathbf{-\theta}_{y})}\\0&1&0\\{-\sin(\mathbf{-\theta}_{y})}&0&{\cos(\mathbf{-\theta}_{y})}\\\end{bmatrix}}{\begin{bmatrix}{\cos(\mathbf{-\theta}_{z})}&{-\sin(\mathbf{-\theta}_{z})}&0\\{\sin(\mathbf{-\theta}_{z})}&{\cos(\mathbf{-\theta}_{z})}&0\\0&0&1\\\end{bmatrix}}\left({{\begin{bmatrix}\mathbf{a}_{x}\\\mathbf{a}_{y}\\\mathbf{a}_{z}\\\end{bmatrix}}-{\begin{bmatrix}\mathbf{c}_{x}\\\mathbf{c}_{y}\\\mathbf{c}_{z}\\\end{bmatrix}}}\right)} [4] 或者使用以下这种非矩阵表示的形式,其中角度的正负号与矩阵表示形式不同: d x = cos ⁡ θ y ⋅ ( sin ⁡ θ z ⋅ ( a y − c y ) + cos ⁡ θ z ⋅ ( a x − c x ) ) − sin ⁡ θ y ⋅ ( a z − c z ) d y = sin ⁡ θ x ⋅ ( cos ⁡ θ y ⋅ ( a z − c z ) + sin ⁡ θ y ⋅ ( sin ⁡ θ z ⋅ ( a y − c y ) + cos ⁡ θ z ⋅ ( a x − c x ) ) ) + cos ⁡ θ x ⋅ ( cos ⁡ θ z ⋅ ( a y − c y ) − sin ⁡ θ z ⋅ ( a x − c x ) ) d z = cos ⁡ θ x ⋅ ( cos ⁡ θ y ⋅ ( a z − c z ) + sin ⁡ θ y ⋅ ( sin ⁡ θ z ⋅ ( a y − c y ) + cos ⁡ θ z ⋅ ( a x − c x ) ) ) − sin ⁡ θ x ⋅ ( cos ⁡ θ z ⋅ ( a y − c y ) − sin ⁡ θ z ⋅ ( a x − c x ) ) {\displaystyle{\begin{array}{lcl}d_{x}&=&\cos\theta_{y}\cdot(\sin\theta_{z}\cdot(a_{y}-c_{y})+\cos\theta_{z}\cdot(a_{x}-c_{x}))-\sin\theta_{y}\cdot(a_{z}-c_{z})\\d_{y}&=&\sin\theta_{x}\cdot(\cos\theta_{y}\cdot(a_{z}-c_{z})+\sin\theta_{y}\cdot(\sin\theta_{z}\cdot(a_{y}-c_{y})+\cos\theta_{z}\cdot(a_{x}-c_{x})))+\cos\theta_{x}\cdot(\cos\theta_{z}\cdot(a_{y}-c_{y})-\sin\theta_{z}\cdot(a_{x}-c_{x}))\\d_{z}&=&\cos\theta_{x}\cdot(\cos\theta_{y}\cdot(a_{z}-c_{z})+\sin\theta_{y}\cdot(\sin\theta_{z}\cdot(a_{y}-c_{y})+\cos\theta_{z}\cdot(a_{x}-c_{x})))-\sin\theta_{x}\cdot(\cos\theta_{z}\cdot(a_{y}-c_{y})-\sin\theta_{z}\cdot(a_{x}-c_{x}))\\\end{array}}} 然后将变换后的该点通过以下方程投影到二维平面(此处投影平面为x/y平面,有时也使用x/z):[5] b x = ( d x − e x ) ( e z / d z ) b y = ( d y − e y ) ( e z / d z ) {\displaystyle{\begin{array}{lcl}\mathbf{b}_{x}&=&(\mathbf{d}_{x}-\mathbf{e}_{x})(\mathbf{e}_{z}/\mathbf{d}_{z})\\\mathbf{b}_{y}&=&(\mathbf{d}_{y}-\mathbf{e}_{y})(\mathbf{e}_{z}/\mathbf{d}_{z})\\\end{array}}} 或在齐次坐标系下可以表示为: [ f x f y f z f w ] = [ 1 0 0 − e x 0 1 0 − e y 0 0 1 0 0 0 1 / e z 0 ] [ d x d y d z 1 ] {\displaystyle{\begin{bmatrix}\mathbf{f}_{x}\\\mathbf{f}_{y}\\\mathbf{f}_{z}\\\mathbf{f}_{w}\\\end{bmatrix}}={\begin{bmatrix}1&0&0&-\mathbf{e}_{x}\\0&1&0&-\mathbf{e}_{y}\\0&0&1&0\\0&0&1/\mathbf{e}_{z}&0\\\end{bmatrix}}{\begin{bmatrix}\mathbf{d}_{x}\\\mathbf{d}_{y}\\\mathbf{d}_{z}\\1\\\end{bmatrix}}} 和 b x = f x / f w b y = f y / f w {\displaystyle{\begin{array}{lcl}\mathbf{b}_{x}&=&\mathbf{f}_{x}/\mathbf{f}_{w}\\\mathbf{b}_{y}&=&\mathbf{f}_{y}/\mathbf{f}_{w}\\\end{array}}} 观测者到显示平面的距离, e z {\displaystyle\mathbf{e}_{z}} ,直接关系到视野的大小。

α = 2 ⋅ tan − 1 ⁡ ( 1 / e z ) {\displaystyle\alpha=2\cdot\tan^{-1}(1/\mathbf{e}_{z})} 为可视角度。

(这里假设屏幕的两角为(-1,-1)和(1,1)) 如果要在一些特定的显示设备上显示该二维平面,之后还要进行一些必要的剪裁和缩放操作。

图示[编辑] 计算三维空间中位于Ax,Az的点在屏幕坐标x轴的位置: s c r e e n   x   c o o r d i n a t e   ( B x )   =   m o d e l   x   c o o r d i n a t e   ( A x ) × d i s t a n c e   f r o m   e y e   t o   s c r e e n   ( B z ) d i s t a n c e   f r o m   e y e   t o   p o i n t   ( A z ) {\displaystylescreen\x\coordinate\(Bx)\=\model\x\coordinate\(Ax)\times{\frac{distance\from\eye\to\screen\(Bz)}{distance\from\eye\to\point\(Az)}}} 对于y轴同样有: s c r e e n   y   c o o r d i n a t e   ( B y )   =   m o d e l   y   c o o r d i n a t e   ( A y ) × d i s t a n c e   f r o m   e y e   t o   s c r e e n   ( B z ) d i s t a n c e   f r o m   e y e   t o   p o i n t   ( A z ) {\displaystylescreen\y\coordinate\(By)\=\model\y\coordinate\(Ay)\times{\frac{distance\from\eye\to\screen\(Bz)}{distance\from\eye\to\point\(Az)}}} (其中Ax和Ay是透视转换前物体在空间中的坐标) 参看[编辑] 计算机图形学 三维计算机图形 透视 单应性 三维投影的数学理论:投影 参考文献[编辑] ^IngridCarlbom,JosephPaciorek,PlanarGeometricProjectionsandViewingTransformations,ACMComputingSurveys,1978,10(4):465–502,doi:10.1145/356744.356750 . ^Riley,KF.MathematicalMethodsforPhysicsandEngineering.CambridgeUniversityPress.2006:931,942.ISBN 0521679710.doi:10.2277/0521679710.  ^Goldstein,Herbert.ClassicalMechanics2ndEdn..Reading,Mass.:Addison-WesleyPub.Co.1980:146–148.ISBN 0201029189.  ^RotationAboutanArbitraryAxisin3Dimensions(页面存档备份,存于互联网档案馆)GlennMurray2013-6-6[2014-4-23] ^ Sonka,M;Hlavac,V;Boyle,R,ImageProcessing,Analysis&MachineVision2ndEdn.,ChapmanandHall:14,1995,ISBN 0412455706  深入阅读[编辑] 维基共享资源中相关的多媒体资源:三维投影 KennethC.Finney.3DGameProgrammingAllinOne.ThomsonCourse.2004:93[2009-12-23].ISBN159200136X.(原始内容存档于2012-11-12).  取自“https://zh.wikipedia.org/w/index.php?title=三维投影&oldid=66485831” 分类:​線性代數立體幾何射影几何三维计算机图形学三维成像投影圖函数隐藏分类:​使用ISBN魔术链接的页面 导航菜单 个人工具 没有登录讨论贡献创建账号登录 命名空间 条目讨论 不转换 不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體 查看 阅读编辑查看历史 更多 搜索 导航 首页分类索引特色内容新闻动态最近更改随机条目资助维基百科 帮助 帮助维基社群方针与指引互助客栈知识问答字词转换IRC即时聊天联络我们关于维基百科 工具 链入页面相关更改上传文件特殊页面固定链接页面信息引用本页维基数据项目 打印/导出 下载为PDF打印页面 在其他项目中 维基共享资源 其他语言 العربيةBosanskiCatalàEnglishEspañolEuskaraहिन्दीLatviešuമലയാളംPortuguêsSimpleEnglishSlovenčinaУкраїнськаTiếngViệt粵語 编辑链接



請為這篇文章評分?