掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.27185

図形の回転
投稿者---tarou(2006/06/13 11:18:35)


visual c++ でプログラムを勉強しているのですが、
図形を描いたときに回転をさせたいのですが、うまくいきません。

ソースは
TMatrix t=rot_x(45);
    Line    a= circle_xz( 130 );
//  トーラスの素(円)の生成
    Surface f= revolve_z( move(100,0,0)*10*a, 36 );  
     f=f*t; //   トーラス(ポリゴン集合)の生成
    for(int i=0; i<f.n; i++)paint(w,f.p[i],L0,GREEN);   
    //  トーラスの描画


TMatrix t=rot_x(45);
この部分でx軸周りを45度回転させるという風に解釈したのですが、間違っているのでしょうか?

f=f*t;
ここの部分でエラーが

C:\CG\src\EX4_1.cpp(57): error C2678: 二項演算子 '*' : 型 'Surface' の左オペランドを扱う演算子が見つかりません (または変換できません)
という風に出ます。




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:図形の回転 27186 REE 2006/06/13 11:45:08


No.27186

Re:図形の回転
投稿者---REE(2006/06/13 11:45:08)


>visual c++ でプログラムを勉強しているのですが、
>図形を描いたときに回転をさせたいのですが、うまくいきません。

どううまくいかないのか具体的に書いてください。

>TMatrix t=rot_x(45);

TMatrixって何ですか?rot_x って何ですか?
自作のクラスや関数または、標準でないライブラリを使っているのなら、
その仕様(又はそれが分かるURL)を提示して下さい。



この投稿にコメントする

削除パスワード

No.27188

Re:図形の回転
投稿者---tarou(2006/06/13 12:01:44)


>どううまくいかないのか具体的に書いてください。
45度回転をさせてトーラスというドーナッツ状の図形を斜めにしたいと考えているのですが、エラーが出ているので図形には何の変化もありません。(最初にz軸で回して書いた図形のまま)

>TMatrixって何ですか?rot_x って何ですか?
c++による簡単実習 3次元cg入門という本を見ながら作っているのですが、この本には
Tmatrix t=rot_x(i);
という形で、x軸を機軸にして対象の図形をi度回転させるという風に書いてあるのですが、普通はどういう風に書くのでしょうか?
Tmatrixは座標変換行列を行うものです。



この投稿にコメントする

削除パスワード

No.27190

Re:図形の回転
投稿者---def(2006/06/13 12:23:35)


ひょっとして
#include "TMatrix.h"
なんてソースコードの一番上に書いてませんよね? (ね?

"C:\CG\src\EX4_1.cpp(57): error C2678: 二項演算子 '*' : 型 'Surface' の左オペランドを扱う演算子が見つかりません (または変換できません)"
これの意味は、型が違うのに計算方法が分からないじゃねぇか!とコンパイラが怒ってるメッセージだと思われます。
f=f*tとありますが、fとtの型が違います。
計算させるなら自分で演算子をオーバーロードしてください。
演算子のオーバーロードの際のコンパイラのコードの認識の仕方が分かれば、コンパイラが怒ってる意味の詳細が分かりますのでそっちの勉強も頑張ってください。

Tmatrix t=rot_x(i)を普通どう書くかについては、知りません。
好きに書いてください。
知ってるかも知れませんが、VisualC++は大文字小文字の区別がありますからタイプミスしないようにしましょうね(これ重要)


この投稿にコメントする

削除パスワード

No.27191

Re:図形の回転
投稿者---REE(2006/06/13 12:26:14)


>>どううまくいかないのか具体的に書いてください。
>45度回転をさせてトーラスというドーナッツ状の図形を斜めにしたいと考えているのですが、エラーが出ているので図形には何の変化もありません。(最初にz軸で回して書いた図形のまま)

コンパイルエラーがあるのに実行できるんですか?
(そこを消した状態での動作かな?)

>>TMatrixって何ですか?rot_x って何ですか?
>c++による簡単実習 3次元cg入門という本を見ながら作っているのですが、この本には
>Tmatrix t=rot_x(i);
>という形で、x軸を機軸にして対象の図形をi度回転させるという風に書いてあるのですが、普通はどういう風に書くのでしょうか?
>Tmatrixは座標変換行列を行うものです。

おそらく、その本に付属のライブラリなのでしょうが、
他にも、Line, circle_xz(), Surface, revolve_z(), move(), paint()など殆どが、標準ではないため、
これだけの情報では、その本を持っていない人には、さっぱりわかりません。

>f=f*t;
この部分のエラーはSurface型 * TMatrix型の演算が、
定義されていないということでしょう。



この投稿にコメントする

削除パスワード

No.27199

Re:図形の回転
投稿者---tarou(2006/06/13 16:46:39)


visualstdioのことなのですが、
今使っているvisualstdioC++ 6.0だと今作っているプログラムは動くのですが、2005のバージョンのものだと今作っているプログラムが、
〜exeが見つかりません 
とでて、うまく動かないのですが、どうしたら動くようになるのでしょうか?
一度聞いてみたのですが、ちょっとよくわからなかったので教えていただけると助かります。



この投稿にコメントする

削除パスワード

No.27203

Re:図形の回転
投稿者---acid(2006/06/13 17:25:45)


6.0と2005は微妙に互換性がない。
6.0→2005は何とかなるけど、逆はダメだったような。
プロジェクトの形式が違うんだったかな。

まぁプロジェクトを新規で作ってソースをインポートして
コンパイルしなおせば、多分大丈夫じゃないかな。


この投稿にコメントする

削除パスワード

No.27208

Re:図形の回転
投稿者---tarou(2006/06/13 17:33:24)


>まぁプロジェクトを新規で作ってソースをインポートして
>コンパイルしなおせば、多分大丈夫じゃないかな。
 
ありがとうございました。
とりあえずやってみます。


この投稿にコメントする

削除パスワード

No.27202

Re:図形の回転
投稿者---tarou(2006/06/13 17:22:51)


>他にも、Line, circle_xz(), Surface, revolve_z(), move(), paint()など殆どが、標準ではないため、
>これだけの情報では、その本を持っていない人には、さっぱりわかりません。

座標変換行列をそのまま書いてみたのですが、やはりうまくいきません。
普通はどうやって図形を回転させているのでしょうか?
教えていただけるととて助かります。
c=-90*PIR;
t=TMatirx(1, 0, 0, 0,
...............0,cos(c),-sin(c), 0,
...............0,sin(c),cos(c), 0,
...............0, 0, 0, 1);
↑この...は表示をそろえるためのものです。



この投稿にコメントする

削除パスワード

No.27206

Re:図形の回転
投稿者---Blue(2006/06/13 17:28:44)


>↑この...は表示をそろえるためのものです。
本題と関係ないですが、

「掲示板ご利用上の注意」にもありますが、
ソースを添付する際には<pre>タグで字下げしてください。
また、HTML変換ツールもあるのでそちらでも変換可能です。

詳しくは
http://www9.plala.or.jp/sgwr-t/c_sub/bbs.html

を読んでください。
(というか、読んでから掲示板利用してくださいよ。。。)



この投稿にコメントする

削除パスワード

No.27207

Re:図形の回転
投稿者---tarou(2006/06/13 17:31:25)


>「掲示板ご利用上の注意」にもありますが、
ソースを添付する際には<pre>タグで字下げしてください。

すいません、忘れてました。次からは気をつけます。



この投稿にコメントする

削除パスワード

No.27209

Re:図形の回転
投稿者---REE(2006/06/13 17:45:07)


>座標変換行列をそのまま書いてみたのですが、やはりうまくいきません。
>普通はどうやって図形を回転させているのでしょうか?

なにを持って普通というかによりますが・・
3D用のライブラリを使って、図形の回転をすることは普通です。
普通は、仕様の分からないライブラリの使い方を説明できません。
自分しか知らないライブラリに関する質問をするときには、その仕様を提示するのが普通です。

# 仕様を説明できないor説明する気がないなら、
#「c++による簡単実習 3次元cg入門」という本を持っている人が
#この質問を見て、答えてくれる気になるのを願うしかないでしょう。



この投稿にコメントする

削除パスワード

No.27210

Re:図形の回転
投稿者---Blue(2006/06/13 18:02:54)


> #「c++による簡単実習 3次元cg入門」という本を持っている人が
> #この質問を見て、答えてくれる気になるのを願うしかないでしょう。
代わりにサイト探してみました。

「C++による簡単実習3次元CG入門(第2版)」


というか、本に載っているアドレス載せればイイ話だったのかも。
# 結局本を持っていないといくらファイルがダウンロードできるからといっても
# どうするかわかりませんけど。


この投稿にコメントする

削除パスワード

No.27212

Re:図形の回転
投稿者---tarou(2006/06/13 18:11:18)



>代わりにサイト探してみました。
>
>「C++による簡単実習3次元CG入門(第2版)」

ありがとうございます。助かります。


この投稿にコメントする

削除パスワード

No.27214

Re:図形の回転
投稿者---REE(2006/06/13 18:30:16)


>> #「c++による簡単実習 3次元cg入門」という本を持っている人が
>> #この質問を見て、答えてくれる気になるのを願うしかないでしょう。
>代わりにサイト探してみました。
>
>「C++による簡単実習3次元CG入門(第2版)」

ここにそのライブラリのヘッダがあったので、少しみたところ
>> f=f*t;
これは、f=t*f; にすれば通りそうです。

#ヘッダファイルに実装も書いてあるので、使いにくそう・・


この投稿にコメントする

削除パスワード

No.27211

Re:図形の回転
投稿者---tarou(2006/06/13 18:08:00)


>自分しか知らないライブラリに関する質問をするときには、その仕様を提示するのが普通です。

tmatrix.h二格納されているもの
TMatrix move(Pointa)...平行移動
TMatrix rot_x(float r)...x軸を中心とする回転移動(r度)

Line l=Line(Point(10,10,10),Point(10,20,0));...指定された座標間に直線を引く

circle_xz(18)...半径1の円を18分割の線分で描く
Surfaceクラス..ポリゴンの集合
Surface revolve_z(Line& a,int n,float b=0,float e=360)
線分aをz軸回転(角度がb→e,n分割)しながら、ポリゴンモデルを生成する。
paint()...ポリゴンに色をつけていく。

こんな感じなのですが、説明はこれでいいのでしょうか?



この投稿にコメントする

削除パスワード

No.27216

Re:図形の回転
投稿者---def(2006/06/13 19:49:44)


結局元の話に戻るのですが、コンパイルのエラーはどうにかなりましたか?
行列の掛け算では左右の行列を入れ替えて、計算が出来ないなんてことはよくあることですが、f=t*fしないとコンパイルが通らないなんてのは...ねぇ...
tmatrix.h書いた人はもうちょっと見やすく書けなかったんだろうか...


この投稿にコメントする

削除パスワード

No.27276

Re:図形の回転
投稿者---tarou(2006/06/20 12:00:55)


>結局元の話に戻るのですが、コンパイルのエラーはどうにかなりましたか?



返事が遅くなってすみません。
返信を下さった皆さんありがとうございました。
何とか、動かすことができました。
ありがとうございました。




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧