3次元物体1から3次元物体2への座標変換式
ある円柱の表面(側面、上下面)に分布する適当な点群を、別の場所の歪んだ円錐の側面に移動させたいと思っています。円柱は通常のいわゆる円柱ですが、円錐は通常の円錐を異なる2つの面でカットしたような形(円錐帯?)となっており、カットした面は平行ではありません。しかも円錐が歪んでおり中心軸は底面に直角ではありません。でも円柱の上下面はこの円錐帯の上下面に対応させ、円柱の側面は円錐帯の側面に対応させるような変換をする必要があるんです。ある空間を歪ませるような変換式になるかと思われますが、その考え方がわかりません。変換式の作り方のコンセプトのようなものを教えていただけないでしょうか。よろしくお願いいたします。図も添付させていただきました。
No.1ベストアンサー
- 回答日時:
考え方だけですが。
円柱の上面を円錐帯?の上面に変換する変換式は、座標系の移動・回転・拡大縮小で求めることができます。
下面の変換式も同様に求められます。
円柱の上下面の変換はこれでできます。
円柱の側面の変換は、
円柱の上面、下面のZ座標をz1,z2、側面の点の座標を(x0,y0,z0)とするとき、
z0=tz1+(1-t)z2 と表せば、
上面の点(x0,y0,z1)を変換した座標を(x3,y3,z3)、
下面の点(x0,y0,z2)を変換した座標を(x4,y4,z4)とすれば、
(x0,y0,z0)の変換座標は、
(tx3+(1-t)x4,ty3+(1-t)y4,tz3+(1-t)z4)
として求めることができます。
(側面に限らず任意の点の座標がこの方法で変換できます)
ただし、変換のしかたは一通りではないので、別の方法では別の座標になることもあります。
なるほど! ご丁寧な説明ありがとうございました。
円柱の時点で、上下面に対するその点の内分比を出しておけば、円錐帯(?)でも対応する方向の上下面上の点を同じように各座標軸上で内分してやればいい、ということですね。とてもすっきりしました。
ただ、この変換は両物体のローカル座標系がそれぞれ決まっていれば、幾何学的に1対1対応になるように気がしており、変換の仕方によらず決められた唯一の場所へ移動されると考えていました。「ただし、変換のしかたは一通りではないので、別の方法では別の座標になることもあります」という部分について簡単に教えていただけますでしょうか?
No.4
- 回答日時:
#1のnag0720です。
ちょっと気になることが1点あったので。#1の方法だと、円柱のすべての側線が円錐帯の側線になるとは限らないような気がします。
円錐帯の上面と下面が平行でない場合、円柱の1つの側線が円錐帯の側線になったとしても、別の側線が円錐帯の側線にならない場合がありえるような・・・(側線にならなければ、側面上にないことになります)
円柱のすべての側線が円錐帯の側線になるためには、上面と下面の変換式を補正する必要があるかもしれません。
もしかしたら気にしすぎかもしれませんが、ご参考まで。
ちなみに、側線とは、
円柱の場合は、上下面と垂直な側面上の直線
円錐帯の場合は、円錐帯を小さい面の方に延長して円錐にしたとき、頂点と大きい面の円周上の点を結んだ直線
のことです。
No.3
- 回答日時:
>> ただ、この変換は両物体のローカル座標系がそれぞれ決まっていれば、幾何学的に1対1対応になるように
>> 気がしており、変換の仕方によらず決められた唯一の場所へ移動されると考えていました。
ということですが、No.1さんの方法だと円柱外で1対1対応にならない点が出てきます。
たとえば変換後の円錐の頂点(円錐台の母線を延長した交点)は、変換前の複数の点に対応します。
これを解決するには、二枚の底面間を比例分割ではなく、例えば頂点からの距離の逆数が
均等になるよう(つまり調和数列)に分割するなど工夫する必要があります。
質問文ではまだ条件不足なのではっきり言えませんが、斜影変換はひとつの解になると思います。
斜影変換はすべての直線が直線に、円錐曲線(円、楕円、放物線、双曲線)が円錐曲線に
移るのが特徴で、遠近法と関係があります。例えば添付していただいた図でいうと
z軸マイナス方向の無限遠点が円錐の頂点に移るような変換です。
“円錐帯”についてどのように形状情報が与えられているのかがわかりませんのでとりあえず
概要だけにとどめます。
なるほど。とりあえず私の場合はnag0720さんの方法で十分なのですが、確かに円柱側面を範囲外まで延長すると、あるところで側面の点がすべて円錐台の頂点に変換されることになりますね。その意味で1対1対応ではないんですね。面白いもんです。着眼点の深さに感動したので、私の業務メモに残させていただきます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
5進法を10進法への直し方
-
50以下は“50”も入るのですか?
-
16進小数0.Cを10進数小数に変換...
-
HEX2BIN関数の使い方。
-
Excel 16進数
-
2進数の1010は、10進数ではいく...
-
8進数から16進数 16進数から8進数
-
dBm/HzからdBm/MHzへの単位変換
-
.7進数2654を4進数に変換した...
-
16進数の1Cを二進数と十進数で...
-
小数点が混じった2進数を8進数...
-
進数の小数点をどう変換するのか
-
2進数の0.101101101101・・・...
-
ACアダプターの消費電力の件
-
ヤコビアンが0になってしまう場...
-
10進数を5進数に変換する式
-
EXCELで10進数表記をB...
-
ベッセル関数
-
8進数55はどうやって2進数に変...
-
平行の記号
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
50以下は“50”も入るのですか?
-
5進法を10進法への直し方
-
16進小数0.Cを10進数小数に変換...
-
HEX2BIN関数の使い方。
-
Excel 16進数
-
dBm/HzからdBm/MHzへの単位変換
-
偏微分の記号をタイプするため...
-
10進数の50を2進数で表すといく...
-
dBm→dBμV/mの換算について
-
小数点が混じった2進数を8進数...
-
EXCELで10進数表記をB...
-
10進数25.25を2進数に変換する...
-
.7進数2654を4進数に変換した...
-
ヤコビアンが0になってしまう場...
-
8進数から16進数 16進数から8進数
-
2進数の1010は、10進数ではいく...
-
=(イコール)の上下に点々があ...
-
幾何と代数は同じ数学でしょうか
-
1.6dLは、何L何dLですか? 問題...
-
16進数の1Cを二進数と十進数で...
おすすめ情報