やったー
意外に簡単に裏面の処理ができちゃった!
まさか2つのベクトルの外積の計算式がこんなところで役に立つなんて。
ただ1つの面を調べるのに8回もatan使ってます。
速度は大丈夫かな、描写速度よりは計算速度のほうが速いからいいけど。
だれか4点から右方向に回転か、左方向に回転か調べる方法でもっといい方法があったら教えて下さい^^
/*4点が左回転か右回転かを調べる*/ #defcfunc gsqcheck array gsqc_dx,array gsqc_dy dimtype gsqcheck_p,vartype("double"),4 gsqcheck_p_2=0 gsqcheck_p(0)=(atan((gsqc_dy(1)-gsqc_dy(0)),(gsqc_dx(1)-gsqc_dx(0)))-atan((gsqc_dy(2)-gsqc_dy(1)),(gsqc_dx(2)-gsqc_dx(1)))) gsqcheck_p(1)=(atan((gsqc_dy(2)-gsqc_dy(1)),(gsqc_dx(2)-gsqc_dx(1)))-atan((gsqc_dy(3)-gsqc_dy(2)),(gsqc_dx(3)-gsqc_dx(2)))) gsqcheck_p(2)=(atan((gsqc_dy(3)-gsqc_dy(2)),(gsqc_dx(3)-gsqc_dx(2)))-atan((gsqc_dy(0)-gsqc_dy(3)),(gsqc_dx(0)-gsqc_dx(3)))) gsqcheck_p(3)=(atan((gsqc_dy(0)-gsqc_dy(3)),(gsqc_dx(0)-gsqc_dx(3)))-atan((gsqc_dy(1)-gsqc_dy(0)),(gsqc_dx(1)-gsqc_dx(0)))) repeat 4 if gsqcheck_p(cnt)>0{gsqcheck_p_2++} loop if gsqcheck_p_2>2{return 1}else{return 0}
キーボードの矢印キーで動かせるようにしたやつ。
立方体のみだからZソートしなくても、裏面処理のおかげでなんとか普通に見える。
そういえば、陰面処理したポリゴンの上に陰線処理したワイヤーを乗せると、アニメっぽくなるね。
コメント