FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
Boundary.h
[詳解]
1#if !defined(__FK_BOUNDARY_HEADER__)
2#define __FK_BOUNDARY_HEADER__
3
4#include <FK/MatAdmin.h>
5#include <FK/DrawMode.h>
6
7namespace FK {
8
9 class fk_Model;
10 class fk_Color;
11 class fk_IndexFaceSet;
12
14 enum class fk_BoundaryMode {
15 SPHERE,
16 AABB,
17 OBB,
18 CAPSULE,
19 NONE
20 };
21
23
65 class fk_Boundary : public fk_MatrixAdmin {
66
67#if !defined(FK_DOXYGEN_USER_PROCESS)
68 class Member {
69 public:
70 fk_BoundaryMode bMode;
71 bool bDrawToggle;
72 std::unique_ptr<fk_Color> bLineColor, bIntLineColor;
73 double bLineWidth;
74
75 double bSphereRad;
76 std::unique_ptr<fk_Vector> bSpherePos;
77 std::unique_ptr<fk_Vector> bAABBMin, bAABBMax;
78 std::unique_ptr<fk_Vector> bOBBMin, bOBBMax;
79 std::unique_ptr<fk_Vector> bCapSPos, bCapEPos;
80 double bCapRad;
81
82 std::unique_ptr<fk_IndexFaceSet> bSphere;
83 std::unique_ptr<fk_IndexFaceSet> bAABB;
84 std::unique_ptr<fk_IndexFaceSet> bOBB;
85 std::unique_ptr<fk_IndexFaceSet> bCapsule;
86
87 Member(void);
88 };
89#endif
90
91 public:
92
95
97 virtual ~fk_Boundary();
98
101
103
119
121
130
133
135
144 void setSphere(double r);
145
147
157
159
166 double getSphere(void);
167
169
178
181
183
194 void setAABBSize(double x, double y, double z);
195
197
208
210
222
224
236
238
250
252
260
262
270
272
280
282
293 std::tuple<fk_Vector, fk_Vector> getAABBMaxMin(void);
294
296
299
301
312 void setOBBSize(double x, double y, double z);
313
315
325
327
340
342
354
356
368
370
378
380
388
390
398
400
411 std::tuple<fk_Vector, fk_Vector> getOBBMaxMin(void);
413
416
418
431 void setCapsule(fk_Vector sPos, fk_Vector ePos, double r);
432
434
442
444
452
454
461 void setCapsuleRadius(double r);
462
464
471 double getCapsuleRadius(void);
472
474
481 double getCapsuleLength(void);
482
484
491 std::tuple<fk_Vector, fk_Vector> getCapsulePos(void);
492
494
502
504
512
514
517
519
527 void setBDrawToggle(bool mode);
528
530
539 bool getBDrawToggle(void);
540
542
551
553
561
563
576
578
586
588
595 void setBLineWidth(double width);
596
598
605 double getBLineWidth(void);
607
608#if !defined(FK_DOXYGEN_USER_PROCESS)
609 fk_IndexFaceSet * GetBShape(void);
610#endif
611
612 private:
613 std::unique_ptr<Member> _m;
614 void MakeAABBShape();
615 void MakeOBBShape();
616 };
617}
618
619#endif // !__FK_BOUNDARY_HEADER__
620
621/****************************************************************************
622 *
623 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
624 *
625 * Redistribution and use in source and binary forms,
626 * with or without modification, are permitted provided that the
627 * following conditions are met:
628 *
629 * - Redistributions of source code must retain the above
630 * copyright notice, this list of conditions and the
631 * following disclaimer.
632 *
633 * - Redistributions in binary form must reproduce the above
634 * copyright notice, this list of conditions and the
635 * following disclaimer in the documentation and/or
636 * other materials provided with the distribution.
637 *
638 * - Neither the name of the copyright holders nor the names
639 * of its contributors may be used to endorse or promote
640 * products derived from this software without specific
641 * prior written permission.
642 *
643 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
644 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
645 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
646 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
647 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
648 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
649 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
650 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
651 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
652 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
653 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
654 * POSSIBILITY OF SUCH DAMAGE.
655 *
656 ****************************************************************************/
657/****************************************************************************
658 *
659 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
660 *
661 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
662 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
663 *
664 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
665 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
666 *
667 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
668 * および下記免責条項を含めること。
669 *
670 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
671 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
672 * 含めること。
673 *
674 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
675 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
676 * コントリビューターの名前を使用してはならない。
677 *
678 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
679 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
680 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
681 * に限定されない、いかなる保証もないものとします。著作権者もコン
682 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
683 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
684 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
685 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
686 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
687 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
688 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
689 * ついて、一切責任を負わないものとします。
690 *
691 ****************************************************************************/
境界ボリュームを管理するクラス
Definition Boundary.h:65
virtual ~fk_Boundary()
デストラクタ
std::tuple< fk_Vector, fk_Vector > getAABBMaxMin(void)
軸平行境界ボックス (AABB) 最大最小取得関数
double getCapsuleRadius(void)
カプセル型領域規定距離取得関数
fk_Vector getCapsuleEndPos(void)
カプセル型中心軸終点取得関数
fk_Color * getBLineColor(void)
境界ボリューム非干渉描画色取得関数
void setOBBSize(fk_Vector size)
有向境界ボックス (OBB) サイズ設定関数2
void setOBBMax(fk_Vector v)
有向境界ボックス (OBB) 最大値側設定関数
void setCapsuleRadius(double r)
カプセル型領域規定距離設定関数
std::tuple< fk_Vector, fk_Vector > getOBBMaxMin(void)
有向境界ボックス (OBB) 最大最小取得関数
fk_Vector getOBBMax(void)
有向境界ボックス (OBB) 最大値側取得関数
void setSpherePos(fk_Vector pos)
境界球位置設定関数
fk_Vector getAABBMin(void)
軸平行境界ボックス (AABB) 最小値側取得関数
double getBLineWidth(void)
境界ボリューム描画線幅取得関数
std::tuple< fk_Vector, fk_Vector > getCapsulePos(void)
カプセル型中心軸両端点取得関数
void setOBBMin(fk_Vector v)
有向境界ボックス (OBB) 最小値側設定関数
fk_BoundaryMode getBMode(void)
境界ボリューム選択状態参照関数
double getCapsuleLength(void)
カプセル型中心軸長取得関数
void setCapsuleStartPos(fk_Vector argP)
カプセル型中心軸始点設定関数
void setAABBMaxMin(fk_Vector max, fk_Vector min)
軸平行境界ボックス (AABB) 最大最小設定関数
void setAABBMax(fk_Vector v)
軸平行境界ボックス (AABB) 最大値側設定関数
fk_Color * getBIntLineColor(void)
境界ボリューム干渉状態描画色取得関数
void setAABBSize(fk_Vector size)
軸平行境界ボックス (AABB) サイズ設定関数2
fk_Vector getCapsuleStartPos(void)
カプセル型中心軸始点取得関数
void setBLineWidth(double width)
境界ボリューム描画線幅設定関数
void setAABBSize(double x, double y, double z)
軸平行境界ボックス (AABB) サイズ設定関数1
void setBIntLineColor(fk_Color col)
境界ボリューム干渉状態描画色設定関数
void setAABBMin(fk_Vector v)
軸平行境界ボックス (AABB) 最小値側設定関数
fk_Vector getSpherePos(void)
境界球位置参照関数
fk_Vector getAABBMax(void)
軸平行境界ボックス (AABB) 最大値側取得関数
void setOBBSize(double x, double y, double z)
有向境界ボックス (OBB) サイズ設定関数1
bool getBDrawToggle(void)
境界ボリューム描画有無取得関数
fk_Vector getOBBMin(void)
有向境界ボックス (OBB) 最小値側取得関数
void setSphere(double r)
境界球半径設定関数
void setCapsule(fk_Vector sPos, fk_Vector ePos, double r)
カプセル型設定関数
void setOBBMaxMin(fk_Vector max, fk_Vector min)
有向境界ボックス (OBB) 最大最小設定関数
fk_Boundary(fk_Type)
コンストラクタ
void setBMode(fk_BoundaryMode mode)
境界ボリューム選択関数
void setBDrawToggle(bool mode)
境界ボリューム描画有無設定関数
void setCapsuleEndPos(fk_Vector argP)
カプセル型中心軸終点設定関数
double getSphere(void)
境界球半径参照関数
fk_Vector getAABBSize(void)
軸平行境界ボックス (AABB) サイズ取得関数
void setBLineColor(fk_Color col)
境界ボリューム非干渉描画色設定関数
fk_Vector getOBBSize(void)
有向境界ボックス (OBB) サイズ取得関数
RGB色を管理するクラス
Definition Color.h:21
インデックスフェースセットによる任意形状を生成、管理するクラス
Definition IndexFace.h:68
モデルの位置や姿勢を管理するクラス
Definition MatAdmin.h:52
3次元ベクトルを管理するクラス
Definition Vector.h:45
Fine Kernel Toolkit 名前空間
Definition Angle.h:6
fk_BoundaryMode
境界ボリュームのタイプを表す列挙型
Definition Boundary.h:14
@ AABB
軸平行境界ボックス (Axis Aligned Bounding Box)
@ OBB
有向境界ボックス (Oriented Bounding Box)
@ NONE
未定義境界
fk_Type
オブジェクトインスタンスのタイプを表す列挙型
Definition Base.h:43
@ CAPSULE
fk_Capsule 型
@ SPHERE
fk_Sphere 型