HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0620
チャーくん (テスト終わった)d3moduleで円柱を2未解決


チャーくん (テスト終わった)

リンク

2016/6/20(Mon) 20:35:34|NO.75923

タイトル通り、d3moduleで円柱を表示させたいです
円と円筒に分けると思うんですが
まず円の時点で無理でした。
切ったピザみたいにしようと思ってd3squareとか三角関数とかで描いたんですが
変な形になってしまいました

お願いします



この記事に返信する


暇人

リンク

2016/6/26(Sun) 22:32:46|NO.76006

>変な形になってしまいました
それを見せてもらった方が
何がおかしいのか指摘しやすいんですが・・・

#include "d3m.hsp" r=200.0 //半径 h=600.0 //高さ vmax=32 //円を作る頂点の数 vr=M_PI*2.0/vmax //360度を円の頂点数で割って頂点間の角度を得る repeat vmax+1 //閉じた円の頂点データがあった方が楽なので+1 vx(cnt)=sin(vr*cnt)*r vy(cnt)=cos(vr*cnt)*r loop ddim x,vmax*4*3 //円柱の座標用配列(1面4頂点で上下側面で3組分必要) ddim y,vmax*4*3 ddim z,vmax*4*3 //円柱上面 vi=0 //頂点のインデックス repeat vmax repeat 2,cnt x(vi)=vx(cnt) //0,1の次が1,2と前の座標と繋がるようにする y(vi)=vy(cnt) z(vi)=h //zが高さなので vi++ loop x(vi)=0.0, 0.0 //四角形なので二つの頂点を円の中心にする y(vi)=0.0, 0.0 z(vi)=h,h vi+2 loop //円柱底面 repeat vmax*4 x(vi)=x(cnt) //上面座標をコピー y(vi)=y(cnt) z(vi)=0.0 //上面とはz座標のみ違うので vi++ loop ui=0 //上面の最初のインデックス di=vmax*4 //底面の最初のインデックス //円柱下の面 repeat vmax //上面外周2頂点の座標をコピー x(vi)=x(ui), x(ui+1) y(vi)=y(ui), y(ui+1) z(vi)=z(ui), z(ui+1) ui+4 vi+2 //底面外周2頂点の座標をコピー(d3squareが左上、右上、右下、左下なので左右逆に代入) x(vi)=x(di+1), x(di) y(vi)=y(di+1), y(di) z(vi)=z(di+1), z(di) di+4 vi+2 loop *mainloop fps++ redraw 0 color : boxf ; カメラ座標を回転させる d3setcam cos(0.02 * fps) * 1000, sin(0.02 * fps) * 1000, cos(0.01 * fps) * 2000 gmode 5, , , 128 //上面 color 127, 255, 255 vi=0 repeat vmax dup d_x,x(vi) dup d_y,y(vi) dup d_z,z(vi) d3square d_x, d_y, d_z vi+4 loop //底面 color 192,96, 192 vi=vmax*4 repeat vmax dup d_x,x(vi) dup d_y,y(vi) dup d_z,z(vi) d3square d_x, d_y, d_z vi+4 loop //側面 color 127, 127, 255 vi=vmax*4*2 repeat vmax,vmax*2 dup d_x,x(vi) dup d_y,y(vi) dup d_z,z(vi) d3square d_x, d_y, d_z vi+4 loop redraw await 15 goto *mainloop



暇人

リンク

2016/6/27(Mon) 19:54:40|NO.76008

コメント編集忘れ
>//円柱下の面
//円柱側面



ONION software Copyright 1997-2023(c) All rights reserved.