旋转四面体的c语言函数 制作一个旋转的正四面体( 十 )


sx=sx1+(x-x1)*(sx2-sx1)/(x2-x1)
sy=sy1+(y-y1)*(sy2-sy1)/(y2-y1)
写成简式
sx=k1*x+a
sy=k2*y+b
这里
a=sx1-k1*x1
b-sy1-k2*y1
k1=(sx2-sx1)/(x2-x1)
k2=(sy2-sy1)/(y2-y1)
2. 实型值到整型值的变换
上面对窗口内图形上任一点坐标(x,y)变换到屏幕上视口内成为(sx,sy),
sx=k1*x+a
sy=k2*y+bk1,k2,a,b同上
这样计算出来的sx,sy一般是实型值,而屏幕上视口内屏幕坐标是整型值,因此要将sx,sy实型值转换成屏幕坐标系的整型值 。这可以通过四舍五入的方法将实型值的绝对值圆整化 。由于C语言中已经替我们想到了这点,它提供的函数可以自动取整 , 因此用户在调用标准函数在屏幕上绘图时一般不需要考虑这个问题 。当然也可以用赋值的类型转换规则来实现实型值到整型值的变换 。
3. y坐标值方向变换
一般屏幕坐标系是直角左手系,y轴方向向下为正,原点在屏幕的左上角,如图2-2所示 。
窗口内图形上任一点(x,y)变换到视口内成为(sx,xy),而(x,y)是相对用户坐标系(直角右手系)的 。(sx,sy)是相对屏幕坐标系(直角左手系)的 , 因此y轴方向相反 。为使窗口内图形变换到视口上图形其形状一致,需将视口上图形y轴方向变换成窗口内图形y轴方向 。这只要将求得的视口内各点的sy整型坐标均用sy2去减,即sy2-sy(整型)代替sy(整型)即可,经这样的坐标轴方向变换后得到的视口内图形与窗口内图形一致 。
4.长宽比例变换
屏幕坐标系x方向与y方向上的刻度可能不一样,这取决于水平方向像素间距与垂直方向偈素间距大小是否一致 。如果两个方向的刻度不相等,那么用户坐标系下一个正方形将显示(或绘制)成为一个长方形有,一个圆将成为一个椭圆 。
为保持原图形的长宽比 。使图形显示(或绘制)后不走样,需求出屏幕上两侍标轴刻度的比值(即纵横比) 。可以用函数getaspectratio()(见前文所述)返回x方向和y方向的比例数,从而求得这个比值 。再瘵原图形y方向坐标乘以该比值,这样显示(或绘制)出来的图形应不走样 。若不考虑图形的走样,就不必作这个变换 。
第二节 二维几何变换
图形的几何变换一般是指对图形的几何信息经过变换后产生新的图形,图形几何变换既可以看作是坐标系不动而图形变动,变动后的图形在坐标系中的坐标值发生变化;出可以看作图形不动而坐标系变动,变动后的图形在新坐标系下具有新的坐标值 。这两种情况本质上都是一样的,都是图形由新的坐标值表示,因此是新产生的图形 。图形几何变换包括比例变换、对称变换、错切变换、旋转变换、平移变换及其复合变换 。图形上所有的点在几何变换前后的坐标关系一般用解析几何方法可以求得,但这些几何关系用矩阵方法表示,运算更为方便 。
一、基本变换
图形基本几何变换是指比例变换、对称变换、错切变换、旋转变换和平移变换等 。除平移变换外,这里其它四种几何变换都可以用组成图形的点向量(或称1×2阶矩阵)和2×2阶变换矩阵相乘表示,而平移变换需引入新方法来实现 。
1、比例变换
设图形上一点P(x,y),经比例变换后成为新的菜上一点P'(x',y') , 即有
x'=a*x
y'=d*y
式中a,d为比例因子
将此比例变换式写成矩阵式得
a0
[x' y']=[x y]= [x y] * T
0d
a0
这里 T=叫做比例变换矩阵 。若a=d,则x,y坐标按同一比例变换 。
0d
当a=d1时,图形放大;当0a=d1时,图形缩小 。
若a≠d,则x,y坐标按各自不同比例变换 。
30
例 1: 设有比例变换矩阵 T=, 三角形abc经过比例变换成为三角形a'b'c' 。

推荐阅读