5.3 補間による運動表現
著者:梅谷 武
語句:球面線形補間法
球面線形補間法により、物体の運動を表現する例を示す。
作成:2010-07-27
更新:2011-03-08
 並進運動と回転運動は独立して記述する。次の例は円周の四分の一を飛行機が旋回するもので、重心の並進運動は円運動、回転運動は始点と終点の姿勢を四元数で与え、slerpで補間したものである。
package.path = "std/?.lua"
require( "Geometry" )
PI = 3.14159265358979
PI_180 = 3.14159265358979 / 180.0
 
q0 = Quaternion.new( EulerAngles.new( 180.0*PI_180, 0.0, 30.0*PI_180 ) )
q1 = Quaternion.new( EulerAngles.new( -90.0*PI_180, 0.0, 30.0*PI_180 ) )
Traj = {}
for t = 0.0, 1.0, 0.02 do
local s = PI / 2.0
table.insert( Traj, 5.0 * math.cos( s * t ) )
table.insert( Traj, 5.0 * math.sin( s * t ) )
table.insert( Traj, 0.0 )
local q = Slerp( q0, q1, t )
local e = EulerAngles.new( q )
table.insert( Traj, e.yaw / PI_180 )
table.insert( Traj, e.pit / PI_180 )
table.insert( Traj, e.rol / PI_180 )
table.insert( Traj, 0.0 )
end
 
tnLoadObject( "z0", [[.\obj\zerosen.obj]] )
tnSetTrajectory( "z0", #Traj/7, Traj )
Published by SANENSYA Co.,Ltd.