参数图形几何变换
2010-04-04 15:07
113 查看
前二节所介绍的二维、三维图形的几何变换均是基于点的几何变换。对于可用参数表示的曲线、曲面图形,若其几何变换仍然基于点,则计算工作量和存储空间都很大,下面介绍几种对参数表示的点、贡线及曲面直接进行几何变换的算法。
1圆锥曲线的几何变换
圆锥曲线的二次方程是Ax2+Bxy+Cy2+Dx+Ey+F=0,其相应的矩阵表达式是
[x y 1]
=0,简记为XSXT=0。
(1)平移变换。若对圆锥曲线平移变换,平移矩阵是Tr=
,则平移后的圆锥曲线矩阵方程是XTrSTTrXT=0。
(2)旋转变换。若对圆锥曲线相对坐标原点作旋转变换,旋转变换矩阵是
R=
,则旋转后的圆锥曲线矩阵方程是XRSRTXT=0。
若对圆锥曲线相对(m,n)点作旋转θ角变换,则旋转后的圆锥曲线是上述Tr、R变换的复合变换,变换后圆锥曲线的矩阵方程是XTrRSRTTTrXT=0。
(3)比例变换。若对圆锥曲线相对(m,n)点比例变换,比例变换矩阵为
ST=
,则变换后圆锥曲线的矩阵方程是XTrSTSSTTTTrXT=0。
对于二次曲面也有与上述类似的矩阵表示和几何变换表达式。
2参数曲线、曲面的几何变换
(1)平移
若指定一个平移矢量t,对曲线平移t,即对曲线上的每一点P都平移t。平移后的点P*有
P*=P+t
对于参数曲线和曲面的几何系数矩阵B和代数系数矩阵A,可以直接实现平移变换,即有
B*=B+T,T=[t t 0 0]T
B*是经平移后参数曲线的几何系数矩阵,变换结果如图3.8所示。
因为双三次曲面片的系数矩阵是4×4的,故其平移变换矩阵为
T=
(2)旋转
形体的旋转变换有绕主轴旋转,或绕空间任一直线旋转等多种形式。若令Rθ表示绕z轴转θ角,Rβ表示绕y轴转β角,Rγ表示绕x轴转γ角,则点P绕x、y、z轴转γ、β、θ角的变换公式是
R=RθRβRγ=
对于参数曲线或曲面的代数系数矩阵和几何系数矩阵的变换公式是
A*=AR, B*=BR
对于绕空间任一直线旋转,如图3.9所示。设空间任一直线(即轴)由矢量r1r2定义(即该直线的端点),空间参数曲线要绕此轴旋转φ角,则该变换可以由以下几步完成
第一步:平移曲线和此轴,令平移量为r1,使该轴的一端点变为坐标原点,则t=-r1,若P为曲线上任一点,则有:P*=P-r1
第二步:旋转曲线和该轴,使该轴和x轴共线,先绕z轴转-θ角,再绕y轴旋转-β角,
θ=tan-1[(y2-y1)/(x2-x1)],β=sin-1((z2-z1)/|r2-r1|)
则 P*=[P-r1]Rθβ
第三步:绕x轴转γ角,γ=φ,则有:P*=[P-r1]RθβRr
第四步:对第二步的变换求逆,即:P*=[P-r1]RθβRrR_θβ
第五步:对第一步的变换求逆,即:P*=[P-r1]RθβRrR_θβ+r1
经过上述五步,即在新的位置上定义了参数曲线。使用几何系数矩阵B实现上述变换的公式是
B*=[B+T]RθβRrR_θβ-T T=[-r1 -r1 0 0]T
若令 Ra=RθβRr R_θβ
则 B*=[B+T]Ra-T=BRa+TRa-T
令 Ta=TRa-T
则 B*=BRa+Ta
(3)变比例
令比例系数为s, 对参数曲线作变比例变换,只要对几何系数矩阵B作变比例变换即可, 也就是
B*=sB或B*=[sP0 sP1 sPu0 SPu1]T
图3.10中定义的曲线P(μ)和P*(μ)是相似的,它们相对原点作了变换比例变换。图3.11所示参数曲线对Q点作变比例变换的情况,其变换表达式是
B*=sB+Ts
Ts=[-Q(s-1)-Q(s-1)0 0]T
(4)对称反射变换
对称反射变换可用下式表示:B*=BRf其中
①对x=0的平面作对称反射变换,则
Rf=
②对y=0的平面作对称反射变换,则
Rf=
③对z=0的平面作对称反射变换,则
Rf=
④对x轴作对称反射变换,则
Rf=
⑤对y轴作对称反射变换,则
Rf=
⑥对z轴作对称反射变换,则
Rf=
⑦对坐标原点作对称反射变换,则
Rf=
图3.12表示对在xy平面上的曲线作对称反射变换的例子,图3.13表示一条参数曲线对空间任一点Q作对称反射变换的情况,其中
P*=P-2(Q-P),P*u=-Pu
对应的几何系数矩阵B*为
B*=[2Q-P0, 2Q-P1,-Pu0 -Pu1]T
图3.14表示一条参数曲线对任一点Q作对称反射放大变换的情况,放大系数为m,其几何系数矩阵表达式是
以上讨论了对参数曲线、曲面的控制点及其矢量,即对其几何系数矩阵(或代数系数矩阵)直接进行几何变换的情况。对某些应用,在保持形体拓扑关系不变的情况下,还可以把这类几何变换矩阵的元素为常数的变换转化为其矩阵元素为线性或非线性函数的变换,从而可以扩大几何造型的域。
1圆锥曲线的几何变换
圆锥曲线的二次方程是Ax2+Bxy+Cy2+Dx+Ey+F=0,其相应的矩阵表达式是
[x y 1]
=0,简记为XSXT=0。
(1)平移变换。若对圆锥曲线平移变换,平移矩阵是Tr=
,则平移后的圆锥曲线矩阵方程是XTrSTTrXT=0。
(2)旋转变换。若对圆锥曲线相对坐标原点作旋转变换,旋转变换矩阵是
R=
,则旋转后的圆锥曲线矩阵方程是XRSRTXT=0。
若对圆锥曲线相对(m,n)点作旋转θ角变换,则旋转后的圆锥曲线是上述Tr、R变换的复合变换,变换后圆锥曲线的矩阵方程是XTrRSRTTTrXT=0。
(3)比例变换。若对圆锥曲线相对(m,n)点比例变换,比例变换矩阵为
ST=
,则变换后圆锥曲线的矩阵方程是XTrSTSSTTTTrXT=0。
对于二次曲面也有与上述类似的矩阵表示和几何变换表达式。
2参数曲线、曲面的几何变换
(1)平移
若指定一个平移矢量t,对曲线平移t,即对曲线上的每一点P都平移t。平移后的点P*有
P*=P+t
对于参数曲线和曲面的几何系数矩阵B和代数系数矩阵A,可以直接实现平移变换,即有
B*=B+T,T=[t t 0 0]T
B*是经平移后参数曲线的几何系数矩阵,变换结果如图3.8所示。
因为双三次曲面片的系数矩阵是4×4的,故其平移变换矩阵为
T=
(2)旋转
形体的旋转变换有绕主轴旋转,或绕空间任一直线旋转等多种形式。若令Rθ表示绕z轴转θ角,Rβ表示绕y轴转β角,Rγ表示绕x轴转γ角,则点P绕x、y、z轴转γ、β、θ角的变换公式是
R=RθRβRγ=
对于参数曲线或曲面的代数系数矩阵和几何系数矩阵的变换公式是
A*=AR, B*=BR
对于绕空间任一直线旋转,如图3.9所示。设空间任一直线(即轴)由矢量r1r2定义(即该直线的端点),空间参数曲线要绕此轴旋转φ角,则该变换可以由以下几步完成
第一步:平移曲线和此轴,令平移量为r1,使该轴的一端点变为坐标原点,则t=-r1,若P为曲线上任一点,则有:P*=P-r1
第二步:旋转曲线和该轴,使该轴和x轴共线,先绕z轴转-θ角,再绕y轴旋转-β角,
θ=tan-1[(y2-y1)/(x2-x1)],β=sin-1((z2-z1)/|r2-r1|)
则 P*=[P-r1]Rθβ
第三步:绕x轴转γ角,γ=φ,则有:P*=[P-r1]RθβRr
第四步:对第二步的变换求逆,即:P*=[P-r1]RθβRrR_θβ
第五步:对第一步的变换求逆,即:P*=[P-r1]RθβRrR_θβ+r1
经过上述五步,即在新的位置上定义了参数曲线。使用几何系数矩阵B实现上述变换的公式是
B*=[B+T]RθβRrR_θβ-T T=[-r1 -r1 0 0]T
若令 Ra=RθβRr R_θβ
则 B*=[B+T]Ra-T=BRa+TRa-T
令 Ta=TRa-T
则 B*=BRa+Ta
(3)变比例
令比例系数为s, 对参数曲线作变比例变换,只要对几何系数矩阵B作变比例变换即可, 也就是
B*=sB或B*=[sP0 sP1 sPu0 SPu1]T
图3.10中定义的曲线P(μ)和P*(μ)是相似的,它们相对原点作了变换比例变换。图3.11所示参数曲线对Q点作变比例变换的情况,其变换表达式是
B*=sB+Ts
Ts=[-Q(s-1)-Q(s-1)0 0]T
(4)对称反射变换
对称反射变换可用下式表示:B*=BRf其中
①对x=0的平面作对称反射变换,则
Rf=
②对y=0的平面作对称反射变换,则
Rf=
③对z=0的平面作对称反射变换,则
Rf=
④对x轴作对称反射变换,则
Rf=
⑤对y轴作对称反射变换,则
Rf=
⑥对z轴作对称反射变换,则
Rf=
⑦对坐标原点作对称反射变换,则
Rf=
图3.12表示对在xy平面上的曲线作对称反射变换的例子,图3.13表示一条参数曲线对空间任一点Q作对称反射变换的情况,其中
P*=P-2(Q-P),P*u=-Pu
对应的几何系数矩阵B*为
B*=[2Q-P0, 2Q-P1,-Pu0 -Pu1]T
图3.14表示一条参数曲线对任一点Q作对称反射放大变换的情况,放大系数为m,其几何系数矩阵表达式是
以上讨论了对参数曲线、曲面的控制点及其矢量,即对其几何系数矩阵(或代数系数矩阵)直接进行几何变换的情况。对某些应用,在保持形体拓扑关系不变的情况下,还可以把这类几何变换矩阵的元素为常数的变换转化为其矩阵元素为线性或非线性函数的变换,从而可以扩大几何造型的域。
相关文章推荐
- 实现双线性插值图形图像平面几何变换
- WPF-画刷、绘图、几何绘图、图形的效果与滤镜、图形变换和动画
- OpenGL(三)图形变换之几何变换
- 实验2 二维图形几何变换
- HDU 4998 Rotate (二维图形几何变换)
- 二维图形几何变换
- 打印如下图案:要求,通过输入不同的参数(比如1、2、3、4...N)该图案可以90°*N的倍数进行顺时针旋转。不需要图形化界面,在控制台中输出即可。注意:图中的“I”为占位符,真实的图形不应该有此符号
- [jzoj]3498. 【NOIP2013模拟联考14】图形变换(transform) (计算几何+矩阵乘法)
- 算法模板——计算几何1(图形面积)
- OpenGL入门学习之三——绘制几何图形的一些细节问题
- python-opencv笔记 图像的读取和简单几何图形绘制
- Android学习之——图形图像处理(使用Matrix控制变换)(二)
- Direct3D几何流水线由世界变换、观察变换、投影变换和视口变换几个部分组成。
- android自定义View绘制几何图形
- [转]C语言图形编程(五) -二维图形变换①
- 【学习OpenGL】(六)——图形变换
- Direct2D教程(三)简单几何图形
- 【NOIP2013模拟联考14】图形变换(transform)
- Android绘制几何图形
- 【Ubuntu+OpenCV】使用opencv中cvCopy的mask参数实现对不规制图形的提取