- 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は呼ばれるからメモリリークしないよ
|