切變是坐標系的變換,非均勻的拉伸。切變時候,角度變化,但是面積或體積不變。也可以理解為坐標軸間的角度變化,造成的扭曲。
如下圖,這是x坐標根據y坐標的切變,機器人的y坐標沒有變化,只有x坐標變化了,變化后的坐標x`可以理解為將y坐標乘以切變因子s與原坐標x的和:x` = x + sy。如果是3D則增加z坐標的切變因子t:?x` = x + sy,y` = y + tz
切變因子通過切變角度計算。
?
?
?
那么構建根據y坐標切變x坐標的代碼為:
float s = tan(D3DXToRadian(30)); D3DXMATRIX matShear(1.0f,0.0f,0.0f,0.0f, s,1.0f,0.0f,0.0f, 0.0f,0.0f,1.0f,0.0f, 0.0f,0.0f,0.0f,1.0f); g_device->SetTransform(D3DTS_WORLD,&matShear);
?