投影变换

投影变换

1 >基本概念

    在计算机图形软件中所采用笛卡尔(cartesian)直角三维坐标系统,按照z轴方向的不同有两种形式:

    1右手系统:当用右手握住z轴时,大姆指指向z轴的正方向(3.20(a)),其余四个手指从x轴到y轴形成一个弧。

    2左手系统:当用左手握住z轴时,大姆指指向z轴的正方向(3.20(b)));其余四个手指从x轴到y轴形成一个弧。

 

 

 

    

在三维坐标系统中,物体上的每一点都以三个分量(x,y,z)描述,这样的物体称为三维物体。要想将一个三维物体描画在一个二维的平面,如纸面,荧光屏面上,必须对三维物体进行投影。投影(project)是一种使三维对象映射为二维对象的变换。它可描述为:

    project(object(x,y,z))object(x′,y)

    投影的要素除投影对象,投影面外,还有投影线。按照投影线角度的不同,有两种基本投影方法:

    1平行投影(parallel projection)。它使用一组平行投影将三维对象投影到投影平面上去(3.21(a))

    2透视投影(perspective projection)。它使用一组由投影中心产生的放射投影线,将三维对象投影到投影平面上去。

    在图3.21中,F为投影平面;p1p2为三维直线;p′,p′是p1p2F上的投影;虚线显示投影线;o是投影中心。

由平行投影方法表现三维对象的图,称为正视图和轴测图,由透视投影方法表现三维对象的图,称为透视图。在以下几节的讨论中,假设投影面与xoy面重合,即在投影面上z0

 

 

 

2 >平行投影变换

    按照标准线与投影面的交角不同,平行投影分为两类:正交平行投影和斜交平行投影。

    1正交平行投影(orthographic P.P.)的投影线与投影平面成90°角。将一个三维点(x,y,z)用正交平行投影法投影平面xoy上,得到一个二维点(xp,yp)。这种变换,可以由正交平行交换公式来计算,它为

xpx

ypy

zp0

    同样,也可以将三维物体正交平行投影于xozyoz平面上,分别获平视与侧视图。设计中常用正交平行投影来产生三视图称为正视图。它们具有x,y方向易于测量的特点,因此作为主要的工程施工图纸。

   2斜交平行投影(oblique P.P.)的投影线与投影面成α交角。图3.21示出一个三维点(x,y,z)以斜交平行投影方法投影在投影面上,形成投影坐标xp,yp的情况。其中投影线与投影面的夹角为α,交点a离开正交投影与投影面的交点b的距离为LLx轴之夹角为φ。斜交投影变换的公式为:

xpxLcosφ

ypyLwinφ

    由图3.21可知,L与α具有如下关系:

tgα=z/L

    由此可知,当α一定时,Lz成比例。令L1=L/z,即z1时的L之长。则上式改写为:

xpxz(L1·cosφ)

ypyz(L1·sinφ)

zp0

它的矩阵运算式为:

xp yp z1 1]=[x y z 1

 

 

                               

 

                                  

 

 

            上式中的L1与φ是任意斜交平行投影重要的显示参数。它们的物理意义由图3.23可知。φ控制与z轴平行的线的投影的方向。L1则控制投影的长度。在工程制图中,经常选择一些兼有美观及绘图方便的φ与L1之值来投影。常用值有:

    1)φ=45°或φ=30°,此时既美观,绘图也方便。

    2)L1=1,即Lz(tgα=1,α=45°)此时可以在投影图上直接量出z的大小。

    3)L10.5,即z2L(tgα=2,α=634°)此时图形比较美观,z值也较易算出。

    斜交平行投影也称轴测投影,所获的图称轴测图。

3 >透视投影变换

    在讨论透视投影变换时,投影中心设在z轴的负轴上。投影中心c到位于投影平面上的坐标原点o之距为d。图3.24这些设定是为了简化透视变换的计算。

    为求透视投影变换公式,先列出直线PC的参数方程:

        x′=xxu

        y′=xyu

        z′=z(zd)u

    其中参数u的变化范围在01之间。当u0地,(x′,yz,′)等于(x,y,z),即p点;当u=1时,(x′,y′,z)等于(00,-d),即c点,因此,u值表示直线pc上的位置。直线pc与投影平面

 

             

   

xoy之交点处z′=0,即uz/(zd)。将u值代入另两个参数方程,便得透视投影变换公式:

xpx·d/(zd)

ypy·d/(zd)

zp0

矩阵运算的形式为:

xp yp zp 1]=[x y z 1

 

你可能感兴趣的:(c,object,XP,图形,parallel)