• 締切済み

N面体の各面のなす角を算出したい。

三次元の空間に、N面体があります。 各面のなす角は0~360度で、星型のように、180度以上となる角もあります そのN面体において、隣り合う各面で成される角を算出したいのですが。。。 角度はN面体を外側から見た場合の角度と定義します。 隣り合う平面の方程式を (1) Ax+By+Cz=D (2) ax+by+cz=d と定義した場合に、 成される角は各面の法線ベクトルを用いて、 θ=arccos{(A*a+B*b+C*c)/√((A^2+B^2+C^2)*(a^2+b^2+c^2))} で算出できることが分かりました。 ただ、この式ですと結果が±θと±(180-θ)のうちどれとなるのか分かりません。 成す角が上記の4つのうち、どれなのか知る手立てはありませんか。

みんなの回答

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.6

#3の補足です。 「面を構成する頂点の順番(外側から見て左回りで)」について。 凹凸が複雑に入り組んでいて、全体像が把握できないような多面体なら、どっちが外側か内側かを判断するのは難しいかもしれません。 その場合は、#5さんのような方法で計算するしかないでしょう。 ただ、形を想像できるような多面体なら、どっちが外側か内側かは分かっていると思いますので、最初からそれをデータとして持ったほうが簡単です。 もうひとつ、 2平面の角度を確定するためには、平面の裏表だけではなく、共有する辺の方向の情報も必要になります。 これがないと、+θと-θの区別がつきませんので。

glooooobal
質問者

お礼

なんとなくですが、イメージがつかめたような気がします。 そこまで複雑な多面体ではなく、点の順序もつけることができそうなので、一度チャレンジしてみたいと思います。 ありがとうございました。

noname#152422
noname#152422
回答No.5

2番です。 「S以外のすべての面とPとの共有点の総数」という言い方が大まかなので若干補足します。 AのS上のr近傍(S上で中心A半径rの開円盤)Vを考えます。V上の任意の点A'について同様にP'が定義できて他の面との共有点を調べることができます。 V上のすべての点についてそのようなP'を考えて、S以外のすべての面との共有点の総数を調べます。 rを十分小さくとって、V上の点のすべてにおいてそのような共有点の総数がすべて同じであれば、その数を採用します。 rをいくら小さくとってもそのような共有点の総数が同じにならない場合がありますが、その場合はそれらの総数のうちの最小な値を採用します。面の数が有限なので最小値が存在します。 このようにしてSの法線が他の面の辺をかすめて偶奇が逆転したり、他の面に法線の一部の線分が含まれてしまったりして共有点の数が∞になってしまう場合をうまく除外することができます。 3番さんの説明にある「面を構成する頂点の順番(外側から見て左回りで)」について、それを決定するのは難しいです。ローカルには、隣り合う面同士で共有する辺上で逆向きになるように順番を指定すれば、内側か外側かどちらか一方にそろえることができますが、そろえたとしても、それが実際に内側なのか外側なのか決定する手段が与えられていません。

glooooobal
質問者

お礼

2回もアドバイスいただき、ありがとうございました。 難しく、理解が未だついていっていませんが、参考に考えてみたいと思います。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.4

#3の追記です。 多面体の情報として、 面の表(外側)方向の法線ベクトル もあったほうがいいです。 これがないとどっちが表かを判断するのが(不可能ではありませんが)難しいですから。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.3

#1です。 2つの法線ベクトルの外積は、2つの平面が共有する辺のベクトルになります。 その辺のベクトル方向が、(1)の平面の表(外側)から見て左回りか右回りかを判定すれば+θか-θが決定できます。(どっちが+でどっちが-かは確認していないので分かりませんが、必ずどちらかに固定されます) 2つの平面の方程式のほかに、 「平面の表(外側)はどちらか」、 「2つの平面が共有する辺の端点P,Qの座標」と、 「(1)の平面の表(外側)から見て、P→Qは左回りか右回りか」 の情報があれば角度の計算ができます。 #2さんの回答は、平面の裏表を判定する方法として、 多面体を構成する面と直線とが共有点を持つかどうかを調べることとしていますが、これを計算するには面を構成する辺の情報が必要で、かなり難しい計算になるし、精度の関係で正しい答がでるかどうかも不明です。 上記の「(1)の平面の表(外側)から見て、P→Qは左回りか右回りか」 という判定も、面を構成する頂点の座標が分かっていれば可能ですが、これも計算が厄介です。 なので、多面体の情報として、 頂点の座標 面を構成する頂点の順番(外側から見て左回りで) 辺を共有する面の情報(どの面とどの面が辺を共有しているか) を把握しておけば、計算が楽になるでしょう。

noname#152422
noname#152422
回答No.2

2つの面が与えられただけでは面のどちらが外側でどちらが内側か判断することはできません。 ある面Sのどちらが内側でどちらが外側かは、以下のようにして判断できます。 その面上の点Aを一つ固定し、Aを通りその面に垂直な直線lを考えます。 l上のAと異なる点を一つとって固定します。それをBとします。 l上の点Xで、ベクトルAXとベクトルABとの内積が正であるもの全体をP、負であるもの全体をQとすると、P∪{A}∪Q=lとなります。 S以外のすべての面とPとの共有点の総数が偶数である場合、BはそのN面体の外側にあり、奇数である場合は内側にあることになります。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

とりあえず、考え方だけ。 角度を確定させるためには、面の裏表の情報が必要です。 それで±(180-θ)の候補は除かれます。 あとは、外積を使えば、±θのどちらであるかを決定できます。

glooooobal
質問者

補足

お返事、ありがとうございます。 知識が無くて、頓珍漢なことを聞いてしまったらすみません。 外積はベクトルの形になると思うのですが、その外積結果をどう見たらよいのでしょうか。 たとえば、法線ベクトルAと法線ベクトルBの外積A×B=(a,b,c)とした場合、 それから、±θはどのように判断したら良いのでしょうか?

関連するQ&A

  • 3次元での点群に対する最小二乗法での平面の算出について(点と平面の距離

    3次元での点群に対する最小二乗法での平面の算出について(点と平面の距離。残差ではない。) -- 点と平面のZ軸方向の距離(残差)の二乗和を最小とする場合には、 平面をax+by+c=zとして、Σ(ax+by+c-z)^2をa,b,cのそれぞれで偏微分して それを=0とした連立方程式を解くことで解を得ることが出来ました。 また、式の形も、ある点のxとyを平面の式へ代入した際の値と、点のz値の差分を見ており、 簡単に納得のできるものとなりました。 これに対して、点と平面の距離(空間的な最小距離)の二乗和を最小とする場合には、 どのような流れで計算すれば良いのでしょうか? 点と平面の距離は|Ax+By+Cz+D| (A,B,Cは単位ベクトル)として求まりますが、 これをどう使うのかが分かりません。 Σ(Ax+By+Cz+D)^2をA,B,C,Dのそれぞれで偏微分して=0としても、 定数項が無いため、連立方程式の解がすべてゼロとなってしまいます。 強引に、Σ(A'x+B'y+C'z+1)^2として変形させて解いてみましたが、 得られたA',B',C'からA,B,C,Dに戻すと、Dがきちんと出ませんでした。(他についても怪しい。) こういった状況に迷い込んでしまい、どう考えるのが良いのか分からなくなってしまいました。 指南いただけませんでしょうか?

  • 2直線のなす角

    平面(2次元)上に次の2直線 y = ax + b y = cx + d があるとき tanθ = |(a-c)/(1+ac)| として角を求めますが、 立体(3次元)上に次の2直線 z = ax + by + c z = dx + ey + f があるときの2直線のなす角の公式は どうなりますか?解答お願いします。

  • 4次元のベクトルpとqに対して、|p|*|q|*sinθはどのようにかける?

    2次元のベクトルp=(a,b)とベクトルq=(x,y)に対して、 なす角をθとすると、 |p|*|q|*cosθ=ax+by, |p|*|q|*sinθ=±(ay-bx) となります。 4次元のベクトルp=(a,b,c,d)とベクトルq=(x,y,z,w)に対しては、そのなす角θというものが、 |p|*|q|*cosθ=ax+by+cz+dw で定義されますが、このとき、 |p|*|q|*sinθ は成分を用いてどのようにかけるのでしょうか?

  • 空間図形の点と直線の距離の公式について

    xyz空間内の点P(p,q,r)から平面ax+by+cz=dにおろした垂線の長さを求めよ という問題(というか公式を示す証明)を見たときに、 (解) 平面ax+by+cz=dに垂直なベクトルのひとつを v→=(a,b,c) とする。平面ax+by+cz=d上にA(x0,y0,z0)をとると、求める長さは h=|AP→・v→|÷|v→| である。 (x0,y0,z0)がax0+by0+cz0=dを満たすことから、 h=|AP→・v→|÷|v→| =|(p-x0,q-y0,r-z0)・(a,b,c)|÷√(a^2+b^2+c^2) =|ap+bq+cr-d|÷√(a^2+b^2+c^2) となっていたのですが、どうしても h=|AP→・v→|÷|v→|である。 の部分が理解できません。検索して調べてみても分からず、結局内積とはなんだろう?と言うところまで調べてみたのですが、2つのベクトルがどれだけ似ているかを示す量、とだけ書いてあるくらいでさっぱり分かりません。 そこで、 (1)なぜ、hが上の式のようになるのでしょうか? (2)幾何学的な意味としては内積は何を表すものなのでしょうか? 以上2点、よろしくお願いいたします。

  • 数学 大学

    次の平面の方程式を求めよ 3点(a,0,0) (0,b,0) (0,0,c) を通る平面 度々すいません。Ax+By+Cz+D=0 をつかって考えたら、Dが邪魔できません やり方を教えてください。お願いします。

  • 球面の方程式の一般形

    球面の方程式は、(x-a)^2+(y-b)^2 +(Z-C)^2=r^2を展開して整理すると x^2+y^2+z^2-2ax-2by-2cz+a^2+b^2+c^2-r^2=0  ここで。-2a=A -2b=B -2c=C a^2+b^2+c^2-r^2=0 とおくと x^2+y^2+z^2+Ax+By+Cz+D=0…(1) ただし、a^2+b^2+c^2-D=A^2/4+ B^2/4 +C^2/4 -D=r^2>0  からA^2+B^2+C^2-4D>0…(2) (2)の条件のもとで、(1)を球面の方程式の一般形とよぶことがある。 とあるのですが。 「ただし」のあとの a^2+b^2+c^2-D=A^2/4+ B^2/4 +C^2/4 -D のところがわかりません。 どことどこの式を用いてこの式が得られたのか、 つながりをおしえてほしいです よろしくお願いいたします。

  • 複数あります。

    (1)a≦b≦c、x≦y≦z のとき、  (a+b+c)(x+y+z)+ax+by+cz=(a+b)(x+y)+(b+c)(y+z)+(c+a)(z+x)  2(ax+by)≧(a+b)(x+y)  の二つの式が証明されています。  3(ax+by+cz)≧(a+b+c)(x+y+z) を証明せよ。 (2)(a^2+b^2)(x^2+y^2)≧(ax+by)^2 が証明されています。  x^2+y^2=4 のとき,5x+2y の最大値を求めよ。 どなたか回答お願いします。

  • 3次元の平面と対称点の問題を教えて下さい。

    この問題です。 A(3,1,0),B(0,1,-1),C(8,0,1)∊R³を(通る平面Πは原点を通らないので、 {(x,y,z)∊R³|ax+by+cz=5}と表わすことができる (1)a,b,cを求めよ。 (2)X(-3,3,4)のΠに関する対称点Y=Sπ(X)の座標を求めなさい という問題です。 解いたのですが、あっているか確認お願いいたします (1) ax+by+cz=5にA、B、Cを代入し3つの式を連立 a=1、b=2、c=-3 (2) 移動した対称点の座標をX'とする。X=(-3,3,4)、a=(1,2,-3)、d=5とおくと X'=X-((2a・x-2d)/(a・a))・a より、 X'=(-1,7,-2) となる。

  • 行列の問題です。

    行列の問題です。 Ha,b,c={(x,y,z)∈R^3| ax+by+cz=0} Ha,b,c∩Ha,b,d∩H1,0,1=(0,0,0) となるための必要十分条件をa,b,c,dを使って書け (G(a,b,c,d)≠0) わかる方よろしくお願いします。

  • 次の方程式をx,yについて解き簡単な形にせよ。

    次の方程式をx,yについて解き簡単な形にせよ。 (1){x+ay+(a^2)z=a^3  {x+by+(b^2)z=b^3  {x+cy+(c^2)z=c^3 (2){x+y+z=1  {ax+by+cz=d  {(a^2)x+(b^2)y+(c^2)z=d^2 どうやって解いたらよいのか分からないので教えてください。