CVector{
double x;
double y;
double z;
}
CVector V[4];
この V[0] V[1] V[2] V[3]
は 四角形Vの頂点を表しています。
ここでは rand 関数を 用いて 適当に数値を代入します。
つぎに CVector B[4];
これは 四角形B の頂点を 表しています。
ここでも rand関数を用いて 頂点の値を代入します。
そして この 二つの 四角形が 交わっているかいないかを しらべたいのです。
どうすればいいのでしょうか?高校数学のベクトルの知識はあるのですが、どうプログラムしていいのか わかりません。
どなたか わかる人いらっしゃいましたら、簡単にプログラムとして 書いていただけないでしょうか?
お願いします。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
>三角錐でも立体でもありません。
3次元空間における 平面の四角形です。4点をランダムに選んだら4点すべてが一平面上にあるとは限らないので、4点目はランダムに選んだ3点と同じ平面状にランダムに置く。ということでよろしいですか?
方針としては、四角形を三角形2つに分解して、三角形同士の交差判定、もしくは三角形と線分の交差判定でいけそうな気がしますが。。
No.6
- 回答日時:
#4です。
まず、与えられた、4角形の3点から、
この3点を含む平面を次式に代入し連立をときます
aX+bY+cZ=d
平面Vと平面Bをそれぞれ求めたら、
平面の式2つを連立させて平面が交わって出来る直線を求めます。
x-a y-b z-c
---=---=---
i j k
この直線は平面V、Bの両方の上に存在します。
この直線と四角形Vと四角形Bの各位置関係を求めます。
この直線に対して四角形Vの各頂点がすべて同一方向にあれば四角形Vはこの直線を含んでいません。
すなわち平面Bとは交わっていません。
(頂点が直線上にある場合もあるので注意)
四角形Vの頂点がこの直線を挟む場合、四角形Vは平面Bと交わっています。
同様に四角形Bについて平面Vと交わっているかを確認します。
四角形VとBがお互いに相手の平面に交わっていれば、四角形Vと四角形Bは空間上で交わっていると考えられる。
四角形の頂点と直線の位置関係は各頂点から直線におろした垂線のベクトルの向きを調べれば良いと思う。
これで何とかならないかな^^;;
ソースはないけど、良さそうなライブラリを見つけたので使ってみる、参考にして見るのもいいかな^^
このリンクを上にたどっていくとライブラリがDLできる。
参考URL:http://www.sccs.chukyo-u.ac.jp/~miyazaki/educati …
No.5
- 回答日時:
>交差点が四角形B内であるというのは どうやって しれべればいいのでしょうか・・・
多角形の内外判定については参考サイトに分かりやすくありますが、基本的には
点から右に直線を引いて、多角形の辺と奇数回交差すれば点は多角形内
という方法で行います。
「右」は面に垂直でなければどの方向でもいいので(1,0,0)か(0,1,0)を使い、前者ならy,z、後者ならz,xだけを使って2次元で計算できます。
辺との交差は、辺の両端の座標と点の座標の相対位置から分かります。
参考URL:http://kone.vis.ne.jp/diary/diarylst.html
No.4
- 回答日時:
その四角形は平面とういう前提なのか、#2さんの言うような立体なのか?
三角錐どうしのあたり判定?
No.2
- 回答日時:
空間上に4点を置いてできるのは、四角形というより四面体ですね。
1)
CVector V[4]; // 四面体
CVector p; // 点
で、点が四面体に含まれるかどうか?
2)
CVector V[4]; // 四面体
CVector l[2]; // 線分
で、線分が四面体と交わるかどうか?
3)
CVector V[4]; // 四面体
CVector d[3]; // 三角形
で、三角形が四面体と交わるかどうか?
と、順を追って考えてゆくとよろしいのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# ある線が円の範囲に入っているかの計算 1 2022/12/07 16:14
- 高校 数学Aの問題で、円に内接するN角形(N>4)の対角線の総数は ア 本である。また、Fの頂点三つからで 1 2023/04/13 17:47
- その他(プログラミング・Web制作) 3Dモデルにおける法線の計算について(Python,OpenGL) 1 2023/04/25 23:46
- 中学校 OA=OB=OC=AB=AC=1、 ∠BOC=90°となる四面体OABCの 辺OA上に点DをOD:D 4 2022/10/11 10:07
- 数学 問題文 正n角形がある(nは3以上の整数)。この正n角形のn個の頂点のうちの3個を頂点とする三角形に 4 2023/03/22 14:57
- 数学 数Bベクトル 平行四辺形ABCDにおいて、辺ABを3:2に内分する点をE、対角線BDを2:5に内分す 3 2022/06/19 12:11
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- 数学 三角形の3つの頂点から出る3本の直線が1点で交わる条件で 「少なくとも1本の直線は、角の二等分線であ 2 2023/02/21 21:24
- 数学 数学B 私の回答はあっていますか? A(1,3), B(2,5), C(6,8), D(5,6), 8 2022/05/22 00:55
- Excel(エクセル) エクセルの値を元に図形の色を変えたい 2 2022/05/11 01:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
ダイアログ内コントロールの位...
-
任意の座標が、閉図形の内側か...
-
図形が重なりあっているかどうか
-
座標を持った平面範囲に座標を...
-
エクセルである点からの距離で...
-
ビットマップ画像の座標を小数...
-
OpenGLの線の太さ
-
住所から経緯経度を出したい
-
ClientToScreen
-
VB6→VS2005アップグレード後
-
C言語で制作するピラミッドアー...
-
始点、終点の二つの座標と半径...
-
ワード上Shapeの位置情報を統一...
-
OpenCvSharp4による画像判定解...
-
Fortranで直交座標から極座標変...
-
y=x^2の座標をプロットするプロ...
-
シーケンサー(PLC?)で制...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルで回転する座標の出し方
-
エクセルである点からの距離で...
-
3次元空間上の2つの座標から...
-
閉図形の座標の配列が右回りか...
-
ダイアログ内コントロールの位...
-
始点、終点の二つの座標と半径...
-
座標を持った平面範囲に座標を...
-
空間上の二点を結ぶ直線上に任...
-
エクセルシート上のマウスポイ...
-
多角形の内部かどうか判定する方法
-
ワード上Shapeの位置情報を統一...
-
Excel VBA で自在に図形を変化...
-
OpenCvSharp4による画像判定解...
-
C言語 配列で座標
-
シーケンサー(PLC?)で制...
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
VB6のPrinter.ScaleWidth に対...
おすすめ情報