More ... | HSPコンテスト:ショートプログラム:数学・物理編:sin/cos
モジュール物体の回転や斜め移動には欠かせない三角比(sin/cos)を作成するモジュールです。 右端切れていますが、範囲選択してコピーすれば大丈夫だと思います。 dim sintable, 65
sintable = 0,6,13,19,25,31,38,44,50,56,62,68,74,80,86,92,98,104,109,115,121,126,132,137,142,147,152,157,162,167,172,177,181,185,190,194,198,202,206,209,213,216,220,223,226,229,231,234,237,239,241,243,245,247,248,250,251,252,253,254,255,255,256,256,256
#module
#deffunc sincos int
mref i
dup result, sin@
repeat 2
rad = i&0xFF
sign = 1
if rad>=128: sign = -1: rad - 128
if rad>=64: rad = 128-rad
result = sintable@.rad*sign
dup result, cos@: i+ 64
loop
return
#global
;●使い方
sincos 128; 256で一周。
mes "sin = "+sin+"/256"; 出力は256倍
mes "cos = "+cos+"/256"; 出力は256倍
もっといいのがあったら書いてってください。
使い方sincos モジュールの一番便利な使い方は sincos 角度
x = cos*距離/256
y = sin*距離/256
とすると、指定した角度と距離から座標が計算できることです。 ; さっきのモジュールをここにインクルードして
#const Radius 200
repeat 256
await 50
sincos cnt
x = cos*Radius/256
y = sin*Radius/256
line x+320, y+240, 320, 240
loop
stop
応用しだいでいろんなことに使えます。 関連リンク
|