|
作者:brighter.h 由火星时代动画网整理 首先看一下效果图。 
第一步:先建立一个圆柱,以一个长方体作为杆,把长方体的中心轴移到一边的位置,如图。 
这个圆柱得截面半径最好设置为整数,长方体的长,也最好是一个整数,这样有利于后面的表达式。 第二步:在长方体后面加一个场面体,并设置点约束(我这里只用了x轴向得)。 
第三步:开始创建表达式。 
第四步:表达式设置如下。 
第五步:简单分析一下,如图。 
圆柱旋转,是逆时针旋转到第二个位置,就形成了一个三角形,随着圆柱旋转a角度,长杆可以认为也旋转了b角度,同时x轴向想前位移了x,由正弦定理,r,l 知道(已经侧得)a角度就是圆柱得旋转,所以b也知道了。 float $a; float $b; $a=wheel.rotateZ; $b=asind((sind ($a))/4 ); pole.rotateZ= -$b; pole.translateX= 2*cosd ($a)-2; $b=asind((sind ($a))/4 );
asind是求反三角函数,知道三角函数值,求角度,数学里写arcsin ,多了一 d,是说这里都是用角度制,不是弧度制。 /4 是因为我的圆柱半径(r)是2,长杆长度是8。 8*sin $b=2*sin $a sin $b=(sin $a)/ pole.rotateZ= -$b; 加以个负号,是因为,圆柱是逆时针旋转,而长杆正好相反。 pole.translateX= 2*cosd ($a)-2; 这里pole.translateX等于图中得绿色的x,单也要家一个负号。
|