Tutorial 8:Scaling Transformation

来源:互联网 发布:手机连接网络摄像机 编辑:程序博客网 时间:2024/06/05 09:33

本文源自:http://ogldev.atspace.co.uk/www/tutorial08/tutorial08.html

  • Scaling Transformation
    • Background
    • Source walkthru

Scaling Transformation

Background

缩放变换非常的简单,它用于增加或者缩小物体的大小。比如说,当你对同一个模型(大小不同却完全一致)生成一些不同的物体,或者你想让世界中的物体大小保持一致的时候,你可能会想做缩放处理。在前面的例子,我想直接在三个坐标轴缩放顶点位置,但是有时候你只能在一个或两个坐标轴进行缩放,这使得模型会变厚或变薄。
展开变换矩阵非常的复杂。我们从单位矩阵着手,原因是矩阵对角线的元素(即1)会直接与相应向量相对的组件直接相乘,结果依然是向量保持不变。因此,替换任何一个对角线的值,当取值大于1的时候会导致物体在一个坐标轴上会变大,相应的在小于1的时候会缩小。

Source walkthru

World.m[0][0]=sinf(Scale); World.m[0][1]=0.0f;        World.m[0][2]=0.0f;        World.m[0][3]=0.0f; World.m[1][0]=0.0f;        World.m[1][1]=sinf(Scale); World.m[1][2]=0.0f;        World.m[1][3]=0.0f; World.m[2][0]=0.0f;        World.m[2][1]=0.0f;        World.m[2][2]=sinf(Scale); World.m[2][3]=0.0f; World.m[3][0]=0.0f;        World.m[3][1]=0.0f;        World.m[3][2]=0.0f;        World.m[3][3]=1.0f; 

通过上面的描述,前面教程中所作的唯一改变是我们直接替换world变换矩阵。从上面我们可以直接看到,对每个坐标系进行缩放,缩放系数在-1和1之间。在(0,1]范围内三角形会变小,当缩放系数为0的时候就会完全消失。在[-1,0)范围里也是一样的,只是位置会变反。

0 0
原创粉丝点击