お世話になります。
プログラム言語に直接関係する質問でなく申し訳ありませんが、CADやIGES形式をご存知の方がいらっしゃればと思いまして、質問させていただきます。
現在、UnityでIGES形式のデータを3D表示させるプログラムを作成する必要があります。
(この説明だけですと既存のビューワを使えばいいのにと思われると思いますが、それは考えない・使わないと思ってください)
それでIGES形式について調べ、必要な内容や変換行列による座標の計算の仕方はわかりました。
しかし、唯一「円弧」について私の理解が違うのか、うまく表示できない状況です。「うまく表示できない」というのは、円弧自体の表示はできるのですが、座標位置や弧の長さが想定(期待)と異なるという状態です。
IGESの円弧のデータ形式(パラメータデータ)は、以下のように説明されます。
円・円弧は、ある平面上にあると想定し、その平面からの高さ、中心点、開始点、終了点、で表します。
そしてx,y,z直交座標系からその平面への変換行列を設定し、ディレクトリエントリの変換行列項目に
その変換行列要素への索引番号を指定する事になります。(円は、開始点と終了点が同じになります)
(http://afsoft.jp/cad/p08.html より)
そして、実際のIGESで円弧を示す部分が、例えば下記のようだったとします。
100, 5, 0, 0, 100, 100, 100, 150; 23P022
124, ...変換行列は省略
これが3Dオブジェクトを表すIGESの一部だった場合、私は上記を「中心点(0, 0, 5)、弧の始点(100, 100, 5)、弧の終点(100, 150, 5)」と考えて、変換行列を使って座標を計算していました。今回うまくいかないのは、そもそも最初の中心点や始点終点の解釈が間違っているのだろうと思っています。
「円・円弧は、ある平面上にあると想定」ということは、IGES全体が3Dを表そうが円弧のデータは2Dとして記述し、変換行列で3Dとするのだろう、とまでは考えているのですが、実際にどう解釈して計算すれば良いのかがわかっていません。
ちなみに変換行列による計算の仕方はわかっているつもりで、
変換後のxyz座標 ※3×1行列 = (3×3の変換行列)(変換前のxyz座標 ※3×1行列) + (3×1の変換行列)
の認識です。今回わからないと感じているのは、(変換前の座標xyz)にあたる座標がIGESのパラメータデータの部分から、どう出せばいいのだろうかということです。
非常にわかりにくい説明な上に、CADや3次元数学の部分をご存じの方が少ないかもしれませんが、誤りをご教授いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。