FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
Loop.h
[詳解]
1#if !defined(__FK_LOOP_HEADER__)
2#define __FK_LOOP_HEADER__
3
4#include <FK/Topology.h>
5#include <FK/Vector.h>
6
7namespace FK {
8
9 class fk_Surface;
10 class fk_Half;
11 class fk_Vertex;
12
13
14#if !defined(FK_DOXYGEN_USER_PROCESS)
15
16 enum class fk_LoopCrossStatus {
17 FRONT,
18 BACK,
19 ONEDGE,
20 ONFACE,
21 NO,
22 ERR,
23 };
24
25#endif
26
28
43 class fk_Loop : public fk_Topology {
44
45 friend class fk_Operation;
46 friend class fk_DataBase;
47 friend class fk_IFSetHandle;
48
49#if !defined(FK_DOXYGEN_USER_PROCESS)
50 class Member {
51 public:
52 int oneHalf;
53 fk_Vector norm;
54 bool normFlag, errorFlag;
55 bool tesselateFlag, tesselateMode;
56 fk_Surface *surf;
57 std::vector<fk_Vertex *> tesselateVertex;
58 std::vector<int> tesselateIndex;
59 int ifsID;
60
61 Member(void);
62 };
63#endif
64
65 public:
67 fk_Loop(int = FK_UNDEFINED);
69 virtual ~fk_Loop();
70
72
79 fk_Half * getOneHalf(void) const;
80
82
91
93
100 int getVNum(void) const;
101
103
120 void setTesselateMode(bool mode);
121
123
132
134
146 bool isTesselated(void);
147
149
157
159
167
168#if !defined(FK_DOXYGEN_USER_PROCESS)
169 void Init(fk_DataBase *, int);
170 std::vector<fk_Vertex *> * GetTesselateVertex(void);
171 std::vector<int> * GetTesselateIndex(void);
172 void Print(void) const;
173 bool Check(void) const;
174 bool Compare(fk_Loop *) const;
175 void SetIFSID(int);
176 int GetIFSID(void);
177
178 fk_LoopCrossStatus IsCross(const fk_Vector &, const fk_Vector &, fk_Vector * = nullptr);
179#endif
180 private:
181 std::shared_ptr<Member> _m;
182
183 bool SetNormal(void);
184 void ModifyLoop(void);
185 int SetOneHalf(int);
186 void MakeTesselateData(void);
187 };
188}
189
190#endif // !__FK_LOOP_HEADER__
191
192/****************************************************************************
193 *
194 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
195 *
196 * Redistribution and use in source and binary forms,
197 * with or without modification, are permitted provided that the
198 * following conditions are met:
199 *
200 * - Redistributions of source code must retain the above
201 * copyright notice, this list of conditions and the
202 * following disclaimer.
203 *
204 * - Redistributions in binary form must reproduce the above
205 * copyright notice, this list of conditions and the
206 * following disclaimer in the documentation and/or
207 * other materials provided with the distribution.
208 *
209 * - Neither the name of the copyright holders nor the names
210 * of its contributors may be used to endorse or promote
211 * products derived from this software without specific
212 * prior written permission.
213 *
214 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
215 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
216 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
217 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
218 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
219 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
220 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
221 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
222 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
223 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
224 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
225 * POSSIBILITY OF SUCH DAMAGE.
226 *
227 ****************************************************************************/
228/****************************************************************************
229 *
230 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
231 *
232 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
233 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
234 *
235 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
236 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
237 *
238 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
239 * および下記免責条項を含めること。
240 *
241 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
242 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
243 * 含めること。
244 *
245 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
246 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
247 * コントリビューターの名前を使用してはならない。
248 *
249 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
250 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
251 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
252 * に限定されない、いかなる保証もないものとします。著作権者もコン
253 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
254 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
255 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
256 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
257 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
258 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
259 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
260 * ついて、一切責任を負わないものとします。
261 *
262 ****************************************************************************/
ソリッドモデルの半稜線位相を管理するクラス
Definition Half.h:25
ソリッドモデルのループ位相を管理するクラス
Definition Loop.h:43
friend class fk_IFSetHandle
Definition Loop.h:47
fk_Half * getOneHalf(void) const
接続半稜線取得関数
fk_Vector * getNormal(void)
法線ベクトル取得関数
void setSurfGeometry(fk_Surface *surface)
幾何曲面形状設定関数
bool isTesselated(void)
テセレーション状態参照関数
void setTesselateMode(bool mode)
テセレーション設定関数
friend class fk_DataBase
Definition Loop.h:46
fk_Loop(int=FK_UNDEFINED)
コンストラクタ
bool getTesselateMode(void)
テセレーション設定取得関数
virtual ~fk_Loop()
デストラクタ
fk_Surface * getSurfGeometry(void)
幾何曲面形状取得関数
int getVNum(void) const
頂点数取得関数
オイラー操作用クラス
Definition Operation.h:47
曲面用純粋仮想クラス
Definition Surface.h:36
ソリッドモデル位相要素用基底クラス
Definition Topology.h:28
3次元ベクトルを管理するクラス
Definition Vector.h:45
Fine Kernel Toolkit 名前空間
Definition Angle.h:6
@ BACK
目標ノードから開始
@ FRONT
OpenGL フロントバッファ