1/20/07

1.1.4 剪切變形(Shearing)

座標值之剪切變形,是因對某特定面為界,進行相對移動。例如在X方面作剪切時,其方程式應為:

x' = x + (Sy) y
y' = y -----------1.16

[A] = [ 1 0 0
Sy 1 0
0 0 1 ]-----1.17

在Y方面作剪切時,方程式為:

x' = x
y' = y + (Sx) x + y -----------1.18

[A] = [ 1 Sx 0
0 1 0
0 0 1 ]-----1.19

三維部份之剪切問題則可由下式表示:

x' = x + (Sxy) y + (Sxz) z
y' = (Syx) y + y + (Syz) z
z' = (Szx) x + (Szy) y + z -----------1.20



其對應之特性矩陣為:

[A] = [ 1 Syz Szx 0
Sxy 1 Szy 0
Sxz Syz 1 0
0 0 0 1 ]----------------1.21

上述公式可利用trans4Sh()函數求得,其程式內容如下。其中shear為剪切之參數,屬行矩陣。其內容在2D時為[Sxy;Syx];3D時為 [Sxy Sxz;Syx Syz;Szx Szy]。但其內容項可為零值,若在3D時,後面項不埴滿時,程式會自動設為零。

function xprime=trans4Sh(C,shear)
%
%function xprime=trans4Sh(C,shear)
%To shear one axis of the coordinates
%Inputs:
% C: the row matrix to be transformed
% shear: shear factor in column,eg [Sxy;Syx]for 2D
% [Sxy Sxz;Syx Syz;Szx Szy]for 3D
% xprime: resultant matrix transformed
% Example: xprime=trans4Sh([2 3],[2;0])
%Author: D.S. Fon, Bime, NTU, Date: Nov.20,2004
[n,m]=size(C);C=[C,ones(n,1)];A=eye(m+1);
shx=zeros(3,2);[k,p]=size(shear);
shx(1:k,1:p)=shx(1:k,1:p)+shear;
A(2,1)=shx(1,1);A(1,2)=shx(2,1);
if m>2
A(3,1)=shx(1,2); %[1 Sxy Sxz]]' for x
A(3,2)=shx(2,2); %[Syx 1 Syz]' for y
A(1:2,3)=shx(3,:)'; %[Szx Szy 1]' for z
end
xx=C*A;xprime=xx(:,1:m);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

實例:以X軸剪切



>> c1=[-4 -3;4 -3;0 3;-4 -3]
c1 =
-4 -3
4 -3
0 3
-4 -3
>> c2=trans4Sh(c1,[2; 0])
c2 =
-10 -3
-2 -3
6 3
-10 -3
>> line(c1(:,1),c1(:,2))
>> line(c1(:,1),c1(:,2))
>> line(c2(:,1),c2(:,2))
>> axis equal;grid on



圖1.5 座標之以X軸進行剪切

實例:以Y軸剪切



>> c2=trans4Sh(c1,[0;1])
c2 =
-4 -7
4 1
0 3
-4 -7
>> line(c2(:,1),c2(:,2))
>> line(c1(:,1),c1(:,2))
>> axis equal;grid on


圖1.6 座標之以Y軸進行剪切


至於3D之實例,讀者可自行印證之。程式中shear之參數決定剪切之方位。