トップページ > プログラム > 2016年01月26日 > CloTf5dE

書き込み順位&時間帯一覧

10 位/164 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000100100000024



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part122 [無断転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part122 [無断転載禁止]©2ch.net
73 :デフォルトの名無しさん[sage]:2016/01/26(火) 13:43:58.10 ID:CloTf5dE
>>71
書き方が悪いんだよな
プログラマの思考と反対というか

elementは複数のfaceで構成され
faceは複数のedgeで構成され
edgeは複数のvertexで構成される

ていう書き方の方がよかったと思われ
C++相談室 part122 [無断転載禁止]©2ch.net
79 :デフォルトの名無しさん[sage]:2016/01/26(火) 16:40:10.39 ID:CloTf5dE
例えば有名なモデリングソフトのメタセコイアのMQOファイルはモデルを>>73みたいに記述してあるよ
ただしedgeは無く、面は複数の頂点で表現されてたが

エレメントが複数の面で構成されるのは仕方ないし
面が複数の頂点で構成されるのも仕方ないように思うが

なんでもフラットな方が便利なのは常識だが
一体どうやってフラットにするのか興味があるわ

struct face{ int elem_no; float v[16][3]; int v_size; };
vector<face> faces;

こんなデータ構造じゃ、特定のエレメントだけ抜き出すのが大変だし
さらにもっとフラットにして

struct vertex{ int elem_no; int face_no; float v[3]; };
vector<vertex> vertices;

こんな構造にしちゃうと、かなりフラットになるが、面単位で何かするのに
まず同じface_noに属する頂点を探し回らなきゃならなくて超面倒なんだが
さらにもっとフラットにすると

struct vertex_elem{ int elem_no; int face_no; int vertex_no; int x_y_z_flag; float value; };

さすがにこれは無いか
C++相談室 part122 [無断転載禁止]©2ch.net
101 :デフォルトの名無しさん[sage]:2016/01/26(火) 23:23:01.51 ID:CloTf5dE
まぁでもコンストラクタの途中で例外が発生しても
コンストラクタの中でtry-catchして適切にリソース開放すれば良いだけでは?
C++相談室 part122 [無断転載禁止]©2ch.net
109 :デフォルトの名無しさん[sage]:2016/01/26(火) 23:31:01.96 ID:CloTf5dE
ちなみにnewしたオブジェクトのコンストラクタ内で例外が発生した場合
デストラクタは走らないけどoperator deleteは呼ばれるからメモリリークしないよ


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。