剛體的平面運動

2022-01-12 08:20:52 字數 1460 閱讀 7682

利用矩陣乘法來實現剛體的平面運動,並繪製剛體運動前後的圖形

用平面座標系中的乙個閉合圖形來描述剛體,用乙個矩陣x來描述它。x的一列表示剛體乙個頂點的座標。為了使圖形閉合,x的最後一列和第一列相同;

為了實現剛體的平移運算,給矩陣x新增元素值為1的一行,使矩陣x的形狀為3xn

若有矩陣:

可以證明:矩陣y1是剛體沿x軸正方向平移c1、沿y軸正方向平移c2後的結果;矩陣y2是剛體x以座標原點為中心逆時針轉動t弧度的結果

例:用下列資料表示大寫字母a,對圖形a進行以下平面運動,並繪製移動前後的圖形

x  0 4 6 10 8 5 3.5 6.1 6.5 3.2 2 0

y  0 14 14 0 0 11 6 6 4.5 4.5 0 0

(1)向上移動15,向左移動30

(2)逆時針轉動∏/3

(3)先逆時針轉動∏3/4,然後向上移動30,向右移動20

clear all

x = [0 4 6 10 8 5 3.5 6.1 6.5 3.2 2 0];

y = [0 14 14 0 0 11 6 6 4.5 4.5 0 0];

a = [x;y;ones(1,length(x))];

axis equal%縱、橫座標軸採用等長刻度

plot(x,y)

hold on %保持當前圖形視窗

%向上移動15

m = [1 0 0;0 1 15;0 0 1];%一行3列設為0,二行3列設為15

y1 = m*a;

%然後,向左移動30

m = [1 0 -30;0 1 0;0 0 1];

y1 = m*y1;

fill(y1(1,:),y1(2,:),'red')

%逆時針轉動pi/3

m = [cos(pi/3) -sin(pi/3) 0;sin(pi/3) cos(pi/3) 0;0 0 1];

y1 = m*a;

fill(y1(1,:),y1(2,:),'blue')

%先逆時針轉動pi*3/4,然後向上移動30,向右移動20

m = [cos(3*pi/4) -sin(3*pi/4) 0;sin(3*pi/4) cos(3*pi/4) 0;0 0 1];

y1 = m*a;

m = [1 0 0;0 1 30;0 0 1];%一行3列設為0,二行3列設為30

y1 = m*y1;

m = [1 0 20;0 1 0;0 0 1];

y1 = m*y1;

fill(y1(1,:),y1(2,:),'green')

grid on %新增網格線

平移剛體上各點的加速度和速度 剛體的平面運動方程

建議閱讀原文 預備知識動量定理,轉動慣量 任意慣性系中,若剛體質量為 只延乙個固定的方向轉動 如剛體的二維運動 且該方向關於質心的轉動慣量為 其中 是質心的加速度,是繞質心轉動的角加速度 這是說,我們可以把剛體的運動分解成質心的移動和相對質心的轉動,並用合力計算前者,用關於質心的合力矩計算後者 推導...

斜面上的根骨骼運動以及剛體測試

測試方法為給膠囊加乙個恆定的力,然後推動另乙個膠囊 方向一致的情況 推動的話,設定對力的方向就不會有問題。就好像addforce,給乙個y軸的力肯定會飛 沿著地面法線移動即可,否則會像圖1一樣下滑很奇怪 移動,未重置方向,注意下滑 移動,重置方向 很多遊戲會有這種低摩擦力的斜面 左邊 要求不高的話用...

斜面上的根骨骼運動以及剛體測試

測試方法為給膠囊加乙個恆定的力,然後推動另乙個膠囊 方向一致的情況 推動的話,設定對力的方向就不會有問題。就好像addforce,給乙個y軸的力肯定會飛 沿著地面法線移動即可,否則會像圖1一樣下滑很奇怪 移動,未重置方向,注意下滑 移動,重置方向 很多遊戲會有這種低摩擦力的斜面 左邊 要求不高的話用...