新しく発言する EXIT インデックスへ
グラフィックについて

  グラフィックについて 学生 2005/01/23 16:49:21 
  サンプルプログラムの 白石和夫 2005/01/23 17:06:13 
  拙作の3次元viewewrです。 青木太一 2005/01/23 19:44:36 
  一応参考までに shino 2005/01/23 22:56:37 
  │└すいません shino 2005/01/24 00:22:34 
  白石さん、青木さん、shinoさん、ありがとう... 学生 2005/01/24 14:16:00 
   └サンプルプログラムを基準にやってみたので... 学生 2005/01/24 16:13:01 
    └うまいこと配列X3,Y3,Bu,Jnを用意できればO... 青木太一 2005/01/24 17:18:13 
     └コードの一部分だけですいません。学校の研... 学生 2005/01/24 17:56:28 
      └Buの無駄は本題ではないですが、一応反応し... 青木太一 2005/01/25 12:41:18 

  グラフィックについて 学生 2005/01/23 16:49:21  ツリーへ

グラフィックについて 返事を書く
学生 2005/01/23 16:49:21
3次元の座標系をグラフィック出力の際に扱うことは出来ないでしょうか。3次元データを2次元にして、グラフィック画面の上下で2面図にして表示しているのですが、もし3次元的な描写が可能であれば便利だなと思いまして・・・。

  サンプルプログラムの 白石和夫 2005/01/23 17:06:13  ツリーへ

Re: グラフィックについて 返事を書く
白石和夫 2005/01/23 17:06:13
サンプルプログラムの
\SAMPLE\3DPLOT.BAS
を参考にしてください。

  拙作の3次元viewewrです。 青木太一 2005/01/23 19:44:36  ツリーへ

Re: グラフィックについて 返事を書く
青木太一 2005/01/23 19:44:36
拙作の3次元viewewrです。
3次元空間上の点を、マウスやキーボードで視界をグリグリうごかしながら見ることができます。
http://www2.tba.t-com.ne.jp/aoki/taichi/decimal_basic/3dviewer01.bas.txt

もっといいプログラムあるのかもしれないけれど、一応宣伝。

  一応参考までに shino 2005/01/23 22:56:37  ツリーへ

Re: グラフィックについて 返事を書く
shino 2005/01/23 22:56:37
一応参考までに
私の作ったプログラムです。
以前に途中まで作ってしばらくそのままだったのですが、
せっかくなので公開します。
http://proxy.ymdb.yahoofs.jp/users/7fd230df/bc/3Dtest.BAS?bchKzGCBKDhrZ4Ig

途中までしかできていないので
中途半端な操作しかできませんが、
マウスドラッグで回転、
上下キーでズーム調整です。
画面の枠は残念ながら今のところただの飾りです。
右クリックでプログラムを終了します。

しかし、直線と塗りつぶしの基本描画は
そろっているので少しは役に立つかもしれません。
描画方法はtest2モジュールを参考にしてください。

  │└すいません shino 2005/01/24 00:22:34  ツリーへ

Re: 一応参考までに 返事を書く
shino 2005/01/24 00:22:34
すいません
IEなどでPermission Deniedと出る場合は
リンクを右クリックして対象を保存してください。

  白石さん、青木さん、shinoさん、ありがとう... 学生 2005/01/24 14:16:00  ツリーへ

Re: グラフィックについて 返事を書く
学生 2005/01/24 14:16:00
白石さん、青木さん、shinoさん、ありがとうございます。
参考にしてがんばってみます。

   └サンプルプログラムを基準にやってみたので... 学生 2005/01/24 16:13:01  ツリーへ

Re: 白石さん、青木さん、shinoさん、ありがとう... 返事を書く
学生 2005/01/24 16:13:01
サンプルプログラムを基準にやってみたのですがうまくいきませんでした。x(I),y(I),z(I)座標が決まっており、また、各点同士を結ぶ直線も決まっているのですが、2次元のグラフィックのように

FOR I=1 TO N
FOR J=1 TO Jn(I)
PLOT LINES: X3(I),Y3(I) ; X3(Bu(I,J)),Y3(Bu(I,J))
NEXT J
NEXT I

といった表記は出来ないのでしょうか。

    └うまいこと配列X3,Y3,Bu,Jnを用意できればO... 青木太一 2005/01/24 17:18:13  ツリーへ

Re: サンプルプログラムを基準にやってみたので... 返事を書く
青木太一 2005/01/24 17:18:13
うまいこと配列X3,Y3,Bu,Jnを用意できればOKですが、学生さんのプログラムを読むだけではそれぞれの変数がなにをするのかいまいちわかりません。どのようなデータ構造なのでしょう?

私の勝手な想像ですが、
三次元座標x(i),y(i),z(i)を二次元に投影したものがx3(i),y3(i)で、
点iから伸びる線の本数がJn(i)、
その線の向かう点の番号がBu(i,j)でしょうか?
(この方法だと二次元配列Buに無駄が多いような気もしますが)

うまくいかなかったコードを貼り付けていただけますか?

私の書いたプログラムではありませんが、白石先生の紹介したプログラムの
SUB PlotTo(x,y,z)、SUB PenUp
shinoさんが書いたプログラムの
PICTURE PlotLine(x1,y1,z1,x2,y2,z2)
を活用すれば、そもそもx,y,zを変換してx3,y3にする処理を自分で書かなくてよくなるので、そちらを使ったほうが便利だと思いますが。

     └コードの一部分だけですいません。学校の研... 学生 2005/01/24 17:56:28  ツリーへ

Re: うまいこと配列X3,Y3,Bu,Jnを用意できればO... 返事を書く
学生 2005/01/24 17:56:28
コードの一部分だけですいません。学校の研究室で使用しているプログラムなので、コードを記述することが出来ません。ごめんなさい。

>>三次元座標x(i),y(i),z(i)を二次元に投影したものがx3(i),y3(i)で、点iから伸びる線の本数がJn(i)、その線の向かう点の番号がBu(i,j)でしょうか?

はい、その通りです。Buに無駄が多いとのご指摘ですが、計算の前半にて無駄な部分は排除するようになっていますので大丈夫です。(計算に無駄が生じますが・・・)

もう少し考えてみます。

      └Buの無駄は本題ではないですが、一応反応し... 青木太一 2005/01/25 12:41:18  ツリーへ

Re: コードの一部分だけですいません。学校の研... 返事を書く
青木太一 2005/01/25 12:41:18
Buの無駄は本題ではないですが、一応反応してみます。
Buの無駄というのは、記憶領域が無駄になると思いました。
すべての点から同じだけの本数の線がでていればいいですが、実際には本数は違うでしょうから、(だからこそJnを使っていらっしゃる)
Bu(点の数,Jnの最大数)だけメモリを確保するのに、
実際にはJnの最大数も必要ない点が多いはずです。
問題にならないレベルなのかもしれませんが、データ構造として美しくないと感じました。

私だったら点の数がn
線の本数がmとして、データ構造は
dim x(1 to n),y(1 to n),z(1 to n)!点の座標
dim x3(1 to n),y3(1 to n)!点の座標(投影後の位置)
dim connect(m, 0 to 1)!どの点とどの点がつながっているかの情報。
などとしますね。

線を描くところの処理は
for i=1 to m
a=connect(i,0)
b=connect(i,1)
plot lines: x3(a),y3(a); x3(b),y3(b)
next i
となります。
まあ、他のもろもろの理由でもともとの学生さんの選択したデータ構造の方がいいこともあるのかもしれませんが。

なお、本題のほうですが、結局x,y,zをx3,y3に変換する処理がかけないでいるのですかね?
もし白石先生、私、shinoさんのコードを参考にするのでしたら、
白石先生のは等角投影、私とshinoさんのは透視投影(遠いものほど小さく見える)ということに注意してください。
既知でしたら失礼。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。