FineKernelToolKit: FK/Reference.h ソースファイル

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
Reference.h
[詳解]
1#if !defined(__FK_REFERENCE_HEADER__)
2#define __FK_REFERENCE_HEADER__
3
4#include <FK/Edge.h>
5#include <FK/DataAccess.h>
6
7#include <vector>
8
9namespace FK {
10 class fk_Vertex;
11 class fk_Half;
12 class fk_Loop;
13
14 /*
15 ここで定義する参照関数 ---
16
17 頂点に関連する関数
18 - fk_Half * getOneHOnV(fk_Vertex *)
19 - vector<fk_Half *> getAllHOnV(fk_Vertex *)
20 - vector<fk_Edge *> getEOnVV(fk_Vertex *, fk_Vertex *)
21 - fk_Edge * getOneEOnV(fk_Vertex *)
22 - vector<fk_Edge *> getAllEOnV(fk_Vertex *)
23 - int getENumOnV(fk_Vertex *)
24 - fk_Loop * getOneLOnV(fk_Vertex *)
25 - vector<fk_Loop *> getAllLOnV(fk_Vertex *)
26 - vector<fk_Vertex *> getAllNeighborVOnV(fk_Vertex *)
27
28 半稜線に関連する関数
29 - fk_Vertex * getVOnH(fk_Half *)
30 - fk_Half * getMateHOnH(fk_Half *)
31 - fk_Edge * getParentEOnH(fk_Half *)
32 - fk_Loop * getParentLOnH(fk_Half *)
33
34 稜線に関連する関数
35 - fk_Vertex * getRightVOnE(fk_Edge *)
36 - fk_Vertex * getLeftVOnE(fk_Edge *)
37 - fk_Half * getRightHOnE(fk_Edge *)
38 - fk_Half * getLeftHOnE(fk_Edge *)
39 - fk_Loop * getRightLOnE(fk_Edge *)
40 - fk_Loop * getLeftLOnE(fk_Edge *)
41 - fk_EdgeStatus getEdgeStatus(fk_Edge *)
42
43 ループに関連する関数
44 - fk_Vertex * getOneVonL(fk_Loop *)
45 - vector<fk_Vertex *> getAllVOnL(fk_Loop *)
46 - int getVNumOnL(fk_Loop *)
47 - fk_Half * getOneHOnL(fk_Loop *)
48 - vector<fk_Half *> getAllHOnL(fk_Loop *)
49 - fk_Edge * getOneEOnL(fk_Loop *)
50 - vector<fk_Edge *> getAllEOnL(fk_Loop *)
51 - fk_Loop * getOneNeighorLOnL(fk_Loop *)
52 - vector<fk_Loop *> getAllNeighborLOnL(fk_Loop *)
53 - fk_Loop * getNeighborLOnLH(fk_Loop *, fk_Half *)
54 - fk_Loop * getNeighborLOnLE(fk_Loop *, fk_Edge *)
55
56 */
57
59
72
73 class fk_ReferenceL1 : public fk_DataAccess {
74 public:
75
78
80
88 fk_Half * getOneHOnV(fk_Vertex *V) const;
89
91
99 fk_Edge * getOneEOnV(fk_Vertex *V) const;
101
104
106
113 fk_Vertex * getVOnH(fk_Half *H) const;
114
116
123 fk_Half * getMateHOnH(fk_Half *H) const;
124
126
133 fk_Edge * getParentEOnH(fk_Half *H) const;
134
136
144 fk_Loop * getParentLOnH(fk_Half *H) const;
146
149
151
158 fk_Vertex * getRightVOnE(fk_Edge *E) const;
159
161
168 fk_Vertex * getLeftVOnE(fk_Edge *E) const;
169
171
178 fk_Half * getRightHOnE(fk_Edge *E) const;
179
181
188 fk_Half * getLeftHOnE(fk_Edge *E) const;
189
191
199 fk_Loop * getRightLOnE(fk_Edge *E) const;
200
202
210 fk_Loop * getLeftLOnE(fk_Edge *E) const;
211
213
226 fk_EdgeStatus getEdgeStatus(fk_Edge *E) const;
227
229
232
234
241 fk_Vertex * getOneVOnL(fk_Loop *L) const;
242
244
251 fk_Half * getOneHOnL(fk_Loop *L) const;
252
254
261 fk_Edge * getOneEOnL(fk_Loop *L) const;
263 };
264
266
279
280 class fk_ReferenceL2 : public fk_ReferenceL1 {
281 public:
282
285
287
295 fk_Vertex * getOneNeighborVOnV(fk_Vertex *V) const;
296
298
306 std::vector<fk_Half *> getAllHOnV(fk_Vertex *V) const;
307
309
317 std::vector<fk_Edge *> getAllEOnV(fk_Vertex *V) const;
318
320
328 std::vector<fk_Loop *> getAllLOnV(fk_Vertex *V) const;
329
331
338 int getENumOnV(fk_Vertex *V) const;
339
341
344
346
354 std::vector<fk_Vertex *> getAllVOnL(fk_Loop *L) const;
355
357
365 std::vector<fk_Half *> getAllHOnL(fk_Loop *L) const;
366
368
376 std::vector<fk_Edge *> getAllEOnL(fk_Loop *L) const;
377
379
387 fk_Loop * getOneNeighborLOnL(fk_Loop *L) const;
388
390
402 fk_Loop * getNeighborLOnLH(fk_Loop *L, fk_Half *H) const;
404
411 int getVNumOnL(fk_Loop *L) const;
412
414 };
415
416
418
431
432 class fk_ReferenceL3 : public fk_ReferenceL2 {
433 public:
434
436
444 std::vector<fk_Vertex *> getAllNeighborVOnV(fk_Vertex *V) const;
445
447
456 std::vector<fk_Edge *> getEOnVV(fk_Vertex *V1, fk_Vertex *V2) const;
457
459
467 fk_Loop * getOneLOnV(fk_Vertex *V) const;
468
470
482 fk_Loop * getNeighborLOnLE(fk_Loop *L, fk_Edge *E) const;
483
485
493 std::vector<fk_Loop *> getAllNeighborLOnL(fk_Loop *L) const;
494 };
495}
496
497#endif // !__FK_REFERENCE_HEADER__
498
499/****************************************************************************
500 *
501 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
502 *
503 * Redistribution and use in source and binary forms,
504 * with or without modification, are permitted provided that the
505 * following conditions are met:
506 *
507 * - Redistributions of source code must retain the above
508 * copyright notice, this list of conditions and the
509 * following disclaimer.
510 *
511 * - Redistributions in binary form must reproduce the above
512 * copyright notice, this list of conditions and the
513 * following disclaimer in the documentation and/or
514 * other materials provided with the distribution.
515 *
516 * - Neither the name of the copyright holders nor the names
517 * of its contributors may be used to endorse or promote
518 * products derived from this software without specific
519 * prior written permission.
520 *
521 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
522 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
523 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
524 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
525 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
526 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
527 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
528 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
529 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
530 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
531 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
532 * POSSIBILITY OF SUCH DAMAGE.
533 *
534 ****************************************************************************/
535/****************************************************************************
536 *
537 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
538 *
539 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
540 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
541 *
542 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
543 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
544 *
545 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
546 * および下記免責条項を含めること。
547 *
548 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
549 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
550 * 含めること。
551 *
552 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
553 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
554 * コントリビューターの名前を使用してはならない。
555 *
556 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
557 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
558 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
559 * に限定されない、いかなる保証もないものとします。著作権者もコン
560 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
561 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
562 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
563 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
564 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
565 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
566 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
567 * ついて、一切責任を負わないものとします。
568 *
569 ****************************************************************************/
DataAccess.h
Edge.h
FK::fk_DataAccess::fk_DataAccess
fk_DataAccess(void)
コンストラクタ
FK::fk_Edge
ソリッドモデルの稜線位相を管理するクラス
Definition Edge.h:41
FK::fk_Half
ソリッドモデルの半稜線位相を管理するクラス
Definition Half.h:25
FK::fk_Loop
ソリッドモデルのループ位相を管理するクラス
Definition Loop.h:43
FK::fk_ReferenceL1
位相状態参照用クラス(Level1)
Definition Reference.h:73
FK::fk_ReferenceL1::getMateHOnH
fk_Half * getMateHOnH(fk_Half *H) const
対半稜線参照関数
FK::fk_ReferenceL1::getParentLOnH
fk_Loop * getParentLOnH(fk_Half *H) const
親ループ参照関数
FK::fk_ReferenceL1::getRightVOnE
fk_Vertex * getRightVOnE(fk_Edge *E) const
右側頂点参照関数
FK::fk_ReferenceL1::getOneEOnV
fk_Edge * getOneEOnV(fk_Vertex *V) const
頂点接続稜線参照関数
FK::fk_ReferenceL1::getRightHOnE
fk_Half * getRightHOnE(fk_Edge *E) const
右側半稜線参照関数
FK::fk_ReferenceL1::getLeftLOnE
fk_Loop * getLeftLOnE(fk_Edge *E) const
左側ループ参照関数
FK::fk_ReferenceL1::getOneEOnL
fk_Edge * getOneEOnL(fk_Loop *L) const
ループ所属稜線参照関数
FK::fk_ReferenceL1::getOneVOnL
fk_Vertex * getOneVOnL(fk_Loop *L) const
ループ所属頂点参照関数
FK::fk_ReferenceL1::getRightLOnE
fk_Loop * getRightLOnE(fk_Edge *E) const
右側ループ参照関数
FK::fk_ReferenceL1::getOneHOnV
fk_Half * getOneHOnV(fk_Vertex *V) const
頂点接続半稜線参照関数
FK::fk_ReferenceL1::getLeftHOnE
fk_Half * getLeftHOnE(fk_Edge *E) const
左側半稜線参照関数
FK::fk_ReferenceL1::getParentEOnH
fk_Edge * getParentEOnH(fk_Half *H) const
親稜線参照関数
FK::fk_ReferenceL1::getLeftVOnE
fk_Vertex * getLeftVOnE(fk_Edge *E) const
左側頂点参照関数
FK::fk_ReferenceL1::getEdgeStatus
fk_EdgeStatus getEdgeStatus(fk_Edge *E) const
稜線位相状態参照関数
FK::fk_ReferenceL1::getVOnH
fk_Vertex * getVOnH(fk_Half *H) const
半稜線接続頂点参照関数
FK::fk_ReferenceL1::getOneHOnL
fk_Half * getOneHOnL(fk_Loop *L) const
ループ所属半稜線参照関数
FK::fk_ReferenceL2
位相状態参照用クラス(Level2)
Definition Reference.h:280
FK::fk_ReferenceL2::getAllHOnL
std::vector< fk_Half * > getAllHOnL(fk_Loop *L) const
ループ所属全半稜線参照関数
FK::fk_ReferenceL2::getAllEOnL
std::vector< fk_Edge * > getAllEOnL(fk_Loop *L) const
ループ所属全稜線参照関数
FK::fk_ReferenceL2::getOneNeighborLOnL
fk_Loop * getOneNeighborLOnL(fk_Loop *L) const
隣接ループ参照関数
FK::fk_ReferenceL2::getNeighborLOnLH
fk_Loop * getNeighborLOnLH(fk_Loop *L, fk_Half *H) const
半稜線条件付き隣接ループ参照関数
FK::fk_ReferenceL2::getVNumOnL
int getVNumOnL(fk_Loop *L) const
ループ上頂点数参照関数
FK::fk_ReferenceL2::getAllLOnV
std::vector< fk_Loop * > getAllLOnV(fk_Vertex *V) const
頂点接続全ループ参照関数
FK::fk_ReferenceL2::getOneNeighborVOnV
fk_Vertex * getOneNeighborVOnV(fk_Vertex *V) const
隣接頂点参照関数
FK::fk_ReferenceL2::getENumOnV
int getENumOnV(fk_Vertex *V) const
頂点接続稜線数参照関数
FK::fk_ReferenceL2::getAllVOnL
std::vector< fk_Vertex * > getAllVOnL(fk_Loop *L) const
ループ所属全頂点参照関数
FK::fk_ReferenceL2::getAllHOnV
std::vector< fk_Half * > getAllHOnV(fk_Vertex *V) const
頂点接続全半稜線参照関数
FK::fk_ReferenceL2::getAllEOnV
std::vector< fk_Edge * > getAllEOnV(fk_Vertex *V) const
頂点接続全稜線参照関数
FK::fk_ReferenceL3
位相状態参照用クラス(Level3)
Definition Reference.h:432
FK::fk_ReferenceL3::getOneLOnV
fk_Loop * getOneLOnV(fk_Vertex *V) const
頂点接続ループ参照関数
FK::fk_ReferenceL3::getEOnVV
std::vector< fk_Edge * > getEOnVV(fk_Vertex *V1, fk_Vertex *V2) const
頂点間稜線参照関数
FK::fk_ReferenceL3::getAllNeighborVOnV
std::vector< fk_Vertex * > getAllNeighborVOnV(fk_Vertex *V) const
全隣接頂点参照関数
FK::fk_ReferenceL3::getAllNeighborLOnL
std::vector< fk_Loop * > getAllNeighborLOnL(fk_Loop *L) const
全隣接ループ参照関数
FK::fk_ReferenceL3::getNeighborLOnLE
fk_Loop * getNeighborLOnLE(fk_Loop *L, fk_Edge *E) const
稜線条件付き隣接ループ参照関数
FK::fk_Vertex
ソリッドモデルの頂点位相を管理するクラス
Definition Vertex.h:26
FK
Fine Kernel Toolkit 名前空間
Definition Angle.h:6
FK::fk_EdgeStatus
fk_EdgeStatus
稜線状態を表す列挙型
Definition Edge.h:12