鎖や紐の簡易表現

if a のコメントを入れ替えると動作が変わります。

if a のコメントを入れ替えると動作が変わります。

  • タグ:
  • タグはありません
obj_num = 15	; 点の数
obj_arm = 30.0	; 点間の距離
ddim obj_px, obj_num
ddim obj_py, obj_num

*main
	redraw 1 : await 16 : redraw 0 : color 255, 255, 255 : boxf : color : pos 0,0
	obj_px(0) = double(mousex)
	obj_py(0) = double(mousey)

	repeat obj_num - 1
		i = cnt + 1
		;	距離
		x = obj_px(i) - obj_px(cnt)
		y = obj_py(i) - obj_py(cnt)
		a = sqrt(x * x + y * y)
		
		;	牽引されている点の座標を計算
		;if a > obj_arm {	; 紐
		if a ! 0 {			; 固い梁
			; ターゲット(obj_px(0),obj_py(0))から既定の長さ距離の位置に移動
			obj_px(i) = x / a * obj_arm + obj_px(cnt)
			obj_py(i) = y / a * obj_arm + obj_py(cnt)
		}
	loop

	;	描画
	r = 5
	color 0, 0, 255
	circle obj_px(0)-r, obj_py(0)-r, obj_px(0)+r, obj_py(0)+r
	
	repeat obj_num - 1
		i = cnt + 1
		color 255, 0, 0
		circle obj_px(i)-r, obj_py(i)-r, obj_px(i)+r, obj_py(i)+r
		color
		line obj_px(i), obj_py(i), obj_px(cnt), obj_py(cnt)
	loop

	goto *main