JP4095120B2 - 領域内における内外判定方法、及び装置 - Google Patents
領域内における内外判定方法、及び装置 Download PDFInfo
- Publication number
- JP4095120B2 JP4095120B2 JP12813895A JP12813895A JP4095120B2 JP 4095120 B2 JP4095120 B2 JP 4095120B2 JP 12813895 A JP12813895 A JP 12813895A JP 12813895 A JP12813895 A JP 12813895A JP 4095120 B2 JP4095120 B2 JP 4095120B2
- Authority
- JP
- Japan
- Prior art keywords
- region
- point
- intersection
- boundary
- determined
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Generation (AREA)
Description
【産業上の利用分野】
この発明は、CAD等にn次元の領域における点の内外判定方法に関するものである。
【0002】
【従来の技術】
2次元の平面上における領域内の内外判定としては、領域が多角形の場合、図3のように判定しようとする点と多角形の頂点の列を結ぶベクトルの作る角の総和を求めて、0であれば外部の点、±πであれば内部の点と判定する方法や、図4のように判定したい点から半無限直線を引き、境界を構成しようとする各稜線との交点の個数を数え、偶数なら外部の点、奇数なら内部の点と判定する方法が知られている。
【0003】
【発明が解決しようとしている課題】
従来、CAD等で計算機を使って、2次曲面や自由曲面等を含む3次元の面上の領域において内外判定を行なう時、計算機が厳密な計算を行なえないため、計算機による誤差によって、内外判定の結果が正しく得られないことがあり、安定な内外判定を行なうことが難しく、3次元のCADのモデリング等において、3次元の領域における一点の内外判定を利用した図形処理が多用されるため、安定的に、3次元の図形処理を行なうことが難しいという問題点があった。
【0004】
また、3次元の内外判定の場合、2次元の場合と違い、領域の乗っている面の種類、領域の境界を構成する稜線の種類に関わらず、同一の手段で統一的に内外判定行なうことが難しいという課題があった。
【0005】
【課題を解決するための手段】
メモリに記憶されたプログラムに従って中央処理装置によって処理を行なう図形処理装置の内外判定方法であって、判定したい点が、N次元の面に乗っているかを前記中央処理装置によって判定するステップと、前記判定したい点が前記N次元の面上において領域の境界を構成する稜線に乗っているかを前記中央処理装置によって判定するステップと、前記判定したい点を通り、前記領域と交点を持つ切断面を前記中央処理装置によって求めるステップと、前記切断面と領域の乗っている面との交線を前記中央処理装置によって求めるステップと、前記切断面と前記領域の境界を構成する稜線の交点を前記中央処理装置によって求めるステップと、前記交線上に乗っていて、領域外にある点を前記中央処理装置によって求めるステップと、前記判定したい点と領域外にある点の間にある、前記領域の境界と前記交線との交点の数が偶数か奇数かを前記中央処理装置によって判定するものである。
また、判定したい点が、N次元の面に乗っているかを判定する手段と、前記判定したい点が前記N次元の面上における領域の境界を構成する稜線に乗っているかを判定する手段と、前記判定したい点を通り、前記領域と交点を持つ切断面を求める手段と、前記切断面と領域の乗っている面との交線を求める手段と、前記切断面と前記領域の境界を構成する稜線の交点を求める手段と、前記交線上に乗っていて、領域外にある点を求める手段と、前記判定したい点と領域外にある点の間にある、前記領域の境界と前記交線との交点の数が偶数か奇数かを判定する手段とを有する領域内における内外判定装置である。
【0006】
【実施例】
図1は、本発明の実施例の動作の流れを説明するフローチャートである。
【0007】
図2は、本発明を利用する図形処理装置のブロック図であり、バス1(制御線、データ線およびアドレス線を含む)には、中央処理装置(CPU)2、リード・オンリ・メモリ(ROM)3、ランダム・アクセス・メモリ(RAM)4、入力インターフェース5を介して入力装置6、CRTインターフェース7を介してCRT8、外部記憶装置インターフェース9を介して、磁気ディスク、磁気テープ等の外部記憶装置10が接続されている。ROM3に記憶されたプログラムに応じ、RAM4を一時記憶装置として種々の処理及び制御、例えば図形入力制御、図形表示、ピック処理、隠面処理、内外判定等を行なう。入力装置6はキーボード、タブレット、マウス等であり、図形データの入力を行なうが、この図形データはホスト・コンピュータから受けてもよい。CRT8は必要に応じて複数のビット・マップ・プレーン等を含んでおり図形を表示する。
【0008】
次に、図1及び図5,図6,図7,図8を参照して本発明の好適な実施例を説明するが、以下に述べる処理及び判断はCPU2がROM3に記憶された図1に示す手順のプログラムに従って行なう。
【0009】
(領域の定義)
本実施例では、図5のような平面および円筒面、円錐面、球等の2次曲面およびトーラス、Bezier曲面、NURBS(Non Uniformed Rational B−spline)曲面等の自由曲線などの幾何形状を持つ面上にあり、線分および円弧、楕円弧、放射線、双曲線等の2次曲線、Bezier曲面、NURBS(Non Uniformed Rational B−spline)曲線等の幾何形状を持つ稜線からなる境界によって囲まれた領域内に、ある空間上の点がその領域内にあるかどうかを判定するものである。
【0010】
ここで図6のように境界は稜線の集まりからなる外周ループと内周ループよりなり、外周ループは領域の最外周を表現するループで、内周ループは領域における穴を表現するループである。外周ループは、反時計回りを正方向とし、内周ループは時計回りを正方向とし、その順番に稜線がならんでいるものとする。よって稜線上をループの正方向に進んでいったとき左側に領域の実体があるものとする。
【0011】
以下に図1の本実施例の流れを示すフローチャートのステップS1〜S13の順番にしたがって内外判定の処理が図2のブロックの中で実行される説明を行なう。
【0012】
(S1:ON−SURFACE判定)
本実施例では、判定する点が領域の乗っている面上にまず乗っているか判定する。判定する点と領域の乗っている面との距離が、定められた長さに関する幾何的許容誤差ε以内だとON−SURFACE、そうでなければOFF−SURFACEと判定する。S2においてOFF−SURFACEのときはS13において領域外と判定して処理を終了する。
【0013】
(S3:与点が境界上にあるかどうかの判定)
上記の処理の後与点が境界上にあるかどうかを判定をする。判定は境界を構成する各稜線と与点との距離を算出し、いずれかの稜線と与点との距離が定められた長さに関する幾何的許容誤差ε以内にあれば与点は境界上にあると判定され処理を終了する。この処理により計算誤差による微妙な領域外の内外判定のエラーをあらかじめ防ぐことができる。
【0014】
(S5:与点を通り領域の境界と確実に交点を持つ切断面の算出)
ここでは、切断面として平面を考える。領域の境界と確実に交点を持つ切断面の算出するため、領域の境界を構成する任意の稜線の中点を算出する。また別の一点を乱数を使って発生させる。与点、任意の稜線の中点、乱数を使った一点が同一直線にならんでいなかったら3点を通る平面を切断面とする。同一直線にならんでいたならばなくなるまで乱数を使って、点を求める。後述するように、内外判定にはここで求めた切断面と領域との交線と境界との交点の数を使うので図7のように微妙な計算誤差により判定結果がわかれるケースがある。ここで乱数を使い切断平面を求めることによって上記のような微妙な位置関係になる確率が低くなる。さらにこの切断平面を求める処理以下を奇数回行ない、多い方の判定結果を採用することにより正しい判定結果を得られる確率が非常に高くなる。
【0015】
(S6:切断面と領域の乗っている面との交線の算出)
上記で求めた切断平面と領域の乗っている面との交線Cを算出する。
【0016】
(S7:切断面と領域の境界との交点を算出)
上記で求めた切断面と境界を構成する各稜線との交点を求めて、境界との交点を算出する。ここで算出された交点は、上記で算出された交線上に乗っている。
【0017】
(S8:交線C上に乗っている領域外の点を算出)
交線C上に乗っている領域外の点を求める。本実施例では以下のような手順にしたがって求める。
【0018】
まず上記で求めた切断面と境界との交点のうち任意の一点P0を取り出す。また、その点ののっている稜線をE0とする。ここでP0における領域の乗っている面の法線ベクトルをn0とする。また点P0におけるE0の接線の単位方向ベクトルで、E0におけるE0の所属しているループの回り向きと同方向のベクトルをTEとする。また点P0における交線Cの接線の方向ベクトルで、大きさが定められた長さに関する幾何的許容誤差εよりも十分に小さい大きさepsdを持つベクトルをTC1、TC2とする。(図8参照)ここで、
n1=TC1×TE (1)
n2=TC2×TE (2)
θ1=(n0とn1のなす角) (0≦θ1≦π) (3)
θ2=(n0とn2のなす角) (0≦θ2≦π) (4)
ここでθi(i=1,2)<π/2のときTC=TCiとする。このとき、
Pout0=P0+TC (5)
とする。またPout0から交線Cに下ろした垂線の足をPoutとする。Poutが求める交線C上に乗っている領域外の点である。
【0019】
(S9:与点、切断面と領域の境界との交点、領域外の点の交線上にならんでいる順番を認識)
与点、切断面と領域の境界との交点、領域外の点の交線上にならんでいる順番にソートする。ソートは以下の方法による。
【0020】
まず交線Cのパラメトリック表現を考える。ここでパラメトリック表現としては、パラメータが交線Cの進む方向にしたがって単調に増減する必要がある。このようなパラメータ表現を取ることによりパラメータの大きさ順にならべることによって、交線上にならんでいる順番を得ることができる。ここでパラメータ表現の例としては、直線の場合、
P=P0+tV(−∞≦t≦∞) (6)
P0:直線上の任意の一点
V:直線の方向ベクトル
t:パラメータ
円の場合、
P=C+r(ucost+vcost) (0≦t≦2π) (7)
C:円の中心
r:円の半径
u:基準ベクトル1(円と同じ平面上の単位ベクトル)
v:基準ベクトル2(円と同じ平面上の単位ベクトル)
ただしu・v=0
t:パラメータ
楕円の場合
P=C+acost+bsint (0≦t≦2π) (8)
C:楕円の中心
a:長軸ベクトル
b:短軸ベクトル
ただしa・b=0
t:パラメータ
双曲線の場合
P=C+asect+btant (0≦t≦2π) (9)
C:基準位置ベクトル
a:基準ベクトル1
b:基準ベクトル2
t:パラメータ
放物線の場合
P=C+p・t^2u+2ptv (0≦t≦π) (10)
C:基準位置のベクトル
p:焦点距離
u:基準単位軸方向ベクトル1
v:基準単位軸方向ベクトル2
t:パラメータ
ただしu・v=0
【0021】
(S10:領域の内外判定)
上記で認識した点の順番にそって、与点と領域外の点Poutとの間の領域の交点の数をカウントする。その交点の数に応じて
奇数ならば 領域内
偶数ならば 領域外
と判定する。
【0022】
(他の実施例)
領域ののっている面の種類、境界を構成する稜線の種類を変更しても同様の方法で、内外判定を行なえる。
【0023】
【発明の効果】
以上説明したように、3次元上の領域における一点の内外判定を行なうことにより3次元のCADのモデリング等における、3次元の領域における一点の内外判定を利用した図形処理を安定的に行なうことができるという効果がある。
【図面の簡単な説明】
【図1】本発明の好適な一実施例を示す流れ図。
【図2】図に示す制御手段が実行されるブロック図。
【図3】本発明を説明する図。
【図4】本発明を説明する図。
【図5】本発明を説明する図。
【図6】本発明を説明する図。
【図7】本発明を説明する図。
【図8】本発明を説明する図。
【符号の説明】
1 バス
2 中央処理装置
Claims (4)
- メモリに記憶されたプログラムに従って中央処理装置によって処理を行なう図形処理装置の内外判定方法であって、
判定したい点が、3次元の面に乗っているかを前記中央処理装置によって判定するステップと、
前記判定したい点が前記3次元の面上において領域の境界を構成する稜線に乗っているかを前記中央処理装置によって判定するステップと、
前記判定したい点を通り、前記領域と交点を持つ切断面を前記中央処理装置によって求めるステップと、
前記切断面と領域の乗っている面との交線を前記中央処理装置によって求めるステップと、
前記切断面と前記領域の境界を構成する稜線の交点を前記中央処理装置によって求めるステップと、
前記交線上に乗っていて、領域外にある点を前記中央処理装置によって求めるステップと、
前記判定したい点と領域外にある点の間にある、前記領域の境界と前記交線との交点の数が偶数か奇数かを前記中央処理装置によって判定するステップとを有する領域内における内外判定方法。 - 前記判定したい点が境界を構成する稜線に乗っていれば、境界上にあると前記中央処理装置によって判定するステップとを有する請求項1の領域内における内外判定方法。
- 判定したい点及び領域外の点及び切断面と領域の境界を構成する稜線の交点を切断面と領域の乗っている面との交線上において並んでいる順番を前記中央処理装置によって認識するステップとを有する請求項1の領域内における内外判定方法。
- 判定したい点が、3次元の面に乗っているかを判定する手段と、
前記判定したい点が前記3次元の面上における領域の境界を構成する稜線に乗っているかを判定する手段と、
前記判定したい点を通り、前記領域と交点を持つ切断面を求める手段と、
前記切断面と領域の乗っている面との交線を求める手段と、
前記切断面と前記領域の境界を構成する稜線の交点を求める手段と、
前記交線上に乗っていて、領域外にある点を求める手段と、
前記判定したい点と領域外にある点の間にある、前記領域の境界と前記交線との交点の数が偶数か奇数かを判定する手段とを有する領域内における内外判定装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12813895A JP4095120B2 (ja) | 1995-05-26 | 1995-05-26 | 領域内における内外判定方法、及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12813895A JP4095120B2 (ja) | 1995-05-26 | 1995-05-26 | 領域内における内外判定方法、及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08320938A JPH08320938A (ja) | 1996-12-03 |
JP4095120B2 true JP4095120B2 (ja) | 2008-06-04 |
Family
ID=14977347
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP12813895A Expired - Fee Related JP4095120B2 (ja) | 1995-05-26 | 1995-05-26 | 領域内における内外判定方法、及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4095120B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010176493A (ja) * | 2009-01-30 | 2010-08-12 | Daikin Ind Ltd | 情報処理装置及び方法、プログラム並びに記録媒体 |
-
1995
- 1995-05-26 JP JP12813895A patent/JP4095120B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010176493A (ja) * | 2009-01-30 | 2010-08-12 | Daikin Ind Ltd | 情報処理装置及び方法、プログラム並びに記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
JPH08320938A (ja) | 1996-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jiménez et al. | 3D collision detection: a survey | |
Kim et al. | Voronoi diagram of a circle set from Voronoi diagram of a point set: II. Geometry | |
Farouki | Exact offset procedures for simple solids | |
US6504541B1 (en) | Warping geometric objects | |
Casale | Free-form solid modeling with trimmed surface patches | |
Price et al. | Hexahedral mesh generation by medial surface subdivision: Part I. Solids with convex edges | |
Ding et al. | Oriented bounding box and octree based global interference detection in 5-axis machining of free-form surfaces | |
Jensen et al. | Tool selection for five-axis curvature matched machining | |
CN114266800B (zh) | 一种平面图形的多矩形包围盒生成方法及系统 | |
Li et al. | Detail feature recognition and decomposition in solid model | |
Gursoz et al. | Boolean set operations on non-manifold boundary representation objects | |
Mi et al. | Tool orientation optimization for 5-axis machining with C-space method | |
EP1710720A1 (en) | Method of computer-aided design of a modeled object having several faces | |
Zhiwei et al. | Approximate tool posture collision-free area generation for five-axis CNC finishing process using admissible area interpolation | |
CN109615702B (zh) | 网格补洞方法、图像处理设备及具有存储功能的装置 | |
JP3526605B2 (ja) | 3次元的な物体の変形方法及びモデリングシステム | |
US4608653A (en) | Form creating system | |
Kaul | Computing Minkowski sums | |
JP4095120B2 (ja) | 領域内における内外判定方法、及び装置 | |
JPH0962850A (ja) | 線対称図形整形装置及び任意の数の対称軸の全てについて線対称な図形を生成する方法 | |
Yuen et al. | Scheme for automatic dimensioning of CSG defined parts | |
CN111251335B (zh) | 基于包围盒算法的高精度机械臂碰撞检测方法 | |
US7439987B2 (en) | Vector graphic normalizer | |
JPH0896025A (ja) | 図形処理方法および装置 | |
JP3679436B2 (ja) | 3次元上領域における領域内外の点の抽出方法及び装置、及び同一曲線上の点の並び順判定方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040422 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040427 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040628 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040824 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041020 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20041116 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041207 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20041213 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20050128 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080307 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110314 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120314 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130314 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140314 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |