平移
平移一个三角形,你需要对顶点坐标的每个分量(x和y),加上三角形在对应轴(如X轴或Y轴)上平移的距离。比如,将点p(x, y, z)平移到p’(x’, y’, z’),在X轴、Y轴、Z轴三个方向上平移的距离分别为Tx,Ty,Tz,其中Tz为0,如下图所示。
那么在坐标的对应分量上,直接加上这些T值,就可以确定p’的坐标了,如下所示。
x’= x +Tx
y’ = y + Ty
z’=z+Tz
我们只需要着色器中为顶点坐标的每个分量加上一个常量就可以实现上面的等式。显然,这是一个逐顶点操作,上述修改应当发生在顶点着色器,而不是片元着色器中。
修改代码时,将平移距离Tx、Ty、Tz的值传入顶点着色器,然后分别加在顶点坐标的对应分量上,再赋值给gl_Position。下面看看修改后的示例程序。
旋转
旋转比平移稍微复杂一些,为了描述一个旋转,你必须指明:
●旋转轴(图形将围绕旋转轴旋转)。
●旋转方向(方向:顺时针或逆时针)。
●旋转角度(图形旋转经过的角度)。
设点p(x, y, z)旋转β角度之后变为了点p ‘(x ’ , y ‘,z’):首先旋转是绕Z轴进行的,所以z坐标不会变,可以直接忽略﹔然后,
webgl_图形变换(旋转,平移,缩放)
最新推荐文章于 2025-06-07 15:53:36 发布