ゲームを作りたい人のための ソースコード集

私がその日作った短めのソースを簡単な解説とともに載せていきます
ゲーム制作初心者にとって参考になるかもしれないソースが多いです


<< 点同士を繋ぐ線 | main | LOSアルゴリズム >>



三次元極座標

三次元の球面上に点を描写するプログラムです

原点から一定の距離にランダムで点を配置します

 

#include "d3m.hsp"
#const double CAMERA_R 180
#const double PI 3.1415
randomize
r=60.0
camera_phi=PI/3.0
camera_theta=0.0
old_mx=0
old_my=0
d3mkparticle 0,255,255,255

sum=120
dim x,sum
dim y,sum
dim z,sum
repeat sum    ;球面上にパーティクル配置
    rad0=deg2rad(rnd(360))
    rad1=deg2rad(rnd(360))
    ;曲座標を求める式
    x(cnt)=r*sin(rad0)*cos(rad1)
    y(cnt)=r*sin(rad0)*sin(rad1)
    z(cnt)=r*cos(rad0)
loop
*main
    color:boxf:color 255,255,255
    ok1=k1:getkey k1,1:tk1=k1^ok1&k1
    gosub *move_camera
    gosub *draw
    redraw:await 17:redraw 0
    goto *main

*draw        ;座標軸とパーティクルの描写
    color 255:d3line -r,0,0,r,0,0
    color ,255:d3line 0,-r,0,0,r,0
    color ,,255:d3line 0,0,-r,0,0,r
    gmode 5, , , 255
    repeat sum
        d3particle 0, x(cnt), y(cnt), z(cnt), 5
    loop
    return
*move_camera    ;ドラッグでカメラ視点移動
    if k1{
        if ok1{
            camera_theta += 0.01 * ( old_mx - ginfo_mx )
            camera_phi   = limitf( camera_phi + 0.01 * ( old_my - ginfo_my ), 0.01, PI - 0.01 )
        }
        old_mx = ginfo_mx
        old_my = ginfo_my
    }
    d3vrotate camera_x, camera_y, camera_z, 0, 0, CAMERA_R, 0, 1, 0, camera_phi
    d3vrotate camera_x, camera_y, camera_z, camera_x, camera_y, camera_z, 0, 0, 1, camera_theta
    d3setcam  camera_x, camera_y, camera_z
    return

0
    posted by higashijugem 16:46comments(0)|-|


    この記事に対するコメント