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

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
GraphNode.h
[詳解]
1#if !defined(__FK_GRAPH_NODE_HEADER__)
2#define __FK_GRAPH_NODE_HEADER__
3
4#include <list>
5#include <string>
6#include <FK/GraphEdge.h>
7#include <FK/Point.h>
8#include <FK/Line.h>
9
10namespace FK {
11
12 class fk_Graph;
13
15
27 class fk_GraphNode : public fk_BaseObject {
28
29#if !defined(FK_DOXYGEN_USER_PROCESS)
30 class Member {
31 public:
32 unsigned int ID;
33 fk_Vector position;
34 unsigned int generation;
35
36 std::list<fk_GraphEdge *> edgeS; // 始点稜線
37 std::list<fk_GraphEdge *> edgeE; // 終点稜線
38 std::list<fk_GraphEdge *> edgeB; // 無向稜線
39 std::list<fk_GraphEdge *> edgeAll; // 全稜線
40
41 std::vector<std::tuple<bool, int, int>> intCost;
42 std::vector<std::tuple<bool, double, int>> doubleCost;
43 fk_Graph *baseGraph; // 元グラフインスタンス
44
45 Member(unsigned int, fk_Graph *);
46 };
47#endif
48 public:
49#if !defined(FK_DOXYGEN_USER_PROCESS)
50 fk_GraphNode(unsigned int, fk_Graph *);
51 ~fk_GraphNode();
52#endif
53
55
60 unsigned int getID(void);
61
63
68 void setPosition(fk_Vector pos);
69
71
76 fk_Vector & getPosition(void);
77
79
84 unsigned int getGeneration(void);
85
87
95 bool isConnect(fk_GraphNode *node);
96
98
113 bool isConnect(bool mode, fk_GraphNode *node);
114
116
121 std::list<fk_GraphEdge *> getAllEdge(void);
122
124
129 void getAllEdge(std::list<fk_GraphEdge *> *list);
130
132
140 std::list<fk_GraphEdge *> getStartEdge(void);
141
143
151 void getStartEdge(std::list<fk_GraphEdge *> *list);
152
154
162 std::list<fk_GraphEdge *> getEndEdge(void);
163
165
173 void getEndEdge(std::list<fk_GraphEdge *> *list);
174
176
188 std::list<fk_GraphNode *> getNextNode(void);
189
191
203 void getNextNode(std::list<fk_GraphNode *> *list);
204
206
218 std::list<fk_GraphNode *> getPrevNode(void);
219
221
233 void getPrevNode(std::list<fk_GraphNode *> *list);
234
236
245 void setIntCost(unsigned int ID, int cost, int prev = -1);
246
248
257 void setDoubleCost(unsigned int ID, double cost, int prev = -1);
258
260
271 int getIntCost(unsigned int ID);
272
274
285 double getDoubleCost(unsigned int ID);
286
288
295 void clearIntCost(unsigned int ID);
296
298
305 void clearDoubleCost(unsigned int ID);
306
308
318 bool isDoneIntCost(unsigned int ID);
319
321
331 bool isDoneDoubleCost(unsigned int ID);
332
334
339 void setColor(fk_Color col);
340
342
347 void setColor(fk_Color *col);
348
349#if !defined(FK_DOXYGEN_USER_PROCESS)
350 std::string print(void);
351 void ConnectEdge(bool, fk_GraphEdge *);
352 void DeleteEdge(fk_GraphEdge *);
353 bool IsBase(fk_Graph *);
354
355 int GetIntPrev(unsigned int);
356 int GetDoublePrev(unsigned int);
357#endif
358 private:
359 std::unique_ptr<Member> _m;
360 };
361}
362
363#endif
364
365/****************************************************************************
366 *
367 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
368 *
369 * Redistribution and use in source and binary forms,
370 * with or without modification, are permitted provided that the
371 * following conditions are met:
372 *
373 * - Redistributions of source code must retain the above
374 * copyright notice, this list of conditions and the
375 * following disclaimer.
376 *
377 * - Redistributions in binary form must reproduce the above
378 * copyright notice, this list of conditions and the
379 * following disclaimer in the documentation and/or
380 * other materials provided with the distribution.
381 *
382 * - Neither the name of the copyright holders nor the names
383 * of its contributors may be used to endorse or promote
384 * products derived from this software without specific
385 * prior written permission.
386 *
387 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
388 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
389 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
390 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
391 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
392 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
393 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
394 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
395 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
396 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
397 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
398 * POSSIBILITY OF SUCH DAMAGE.
399 *
400 ****************************************************************************/
401/****************************************************************************
402 *
403 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
404 *
405 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
406 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
407 *
408 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
409 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
410 *
411 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
412 * および下記免責条項を含めること。
413 *
414 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
415 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
416 * 含めること。
417 *
418 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
419 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
420 * コントリビューターの名前を使用してはならない。
421 *
422 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
423 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
424 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
425 * に限定されない、いかなる保証もないものとします。著作権者もコン
426 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
427 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
428 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
429 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
430 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
431 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
432 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
433 * ついて、一切責任を負わないものとします。
434 *
435 ****************************************************************************/
GraphEdge.h
Line.h
Point.h
FK::fk_BaseObject::fk_BaseObject
fk_BaseObject(fk_Type type=fk_Type::BASEOBJECT)
コンストラクタ
FK::fk_Color
RGB色を管理するクラス
Definition Color.h:21
FK::fk_GraphEdge
グラフ構造の辺を制御するクラス
Definition GraphEdge.h:37
FK::fk_GraphNode
グラフ構造のノードを制御するクラス
Definition GraphNode.h:27
FK::fk_GraphNode::getPrevNode
std::list< fk_GraphNode * > getPrevNode(void)
接続始点取得関数1
FK::fk_GraphNode::getGeneration
unsigned int getGeneration(void)
位置変更回数取得関数
FK::fk_GraphNode::getPrevNode
void getPrevNode(std::list< fk_GraphNode * > *list)
接続始点取得関数2
FK::fk_GraphNode::getDoubleCost
double getDoubleCost(unsigned int ID)
実数型コスト取得関数
FK::fk_GraphNode::getIntCost
int getIntCost(unsigned int ID)
整数型コスト取得関数
FK::fk_GraphNode::setIntCost
void setIntCost(unsigned int ID, int cost, int prev=-1)
整数型コスト設定関数
FK::fk_GraphNode::setPosition
void setPosition(fk_Vector pos)
位置ベクトル設定関数
FK::fk_GraphNode::getEndEdge
std::list< fk_GraphEdge * > getEndEdge(void)
終点接続辺取得関数1
FK::fk_GraphNode::getPosition
fk_Vector & getPosition(void)
位置ベクトル取得関数
FK::fk_GraphNode::getStartEdge
std::list< fk_GraphEdge * > getStartEdge(void)
始点接続辺取得関数1
FK::fk_GraphNode::setColor
void setColor(fk_Color *col)
色指定関数2
FK::fk_GraphNode::getAllEdge
void getAllEdge(std::list< fk_GraphEdge * > *list)
全接続辺取得関数2
FK::fk_GraphNode::setDoubleCost
void setDoubleCost(unsigned int ID, double cost, int prev=-1)
実数型コスト設定関数
FK::fk_GraphNode::getEndEdge
void getEndEdge(std::list< fk_GraphEdge * > *list)
終点接続辺取得関数2
FK::fk_GraphNode::getNextNode
std::list< fk_GraphNode * > getNextNode(void)
接続終点取得関数1
FK::fk_GraphNode::isDoneIntCost
bool isDoneIntCost(unsigned int ID)
整数型コスト設定状態参照関数
FK::fk_GraphNode::isConnect
bool isConnect(fk_GraphNode *node)
接続ノード確認関数
FK::fk_GraphNode::clearIntCost
void clearIntCost(unsigned int ID)
整数型コスト設定解除関数
FK::fk_GraphNode::isDoneDoubleCost
bool isDoneDoubleCost(unsigned int ID)
実数型コスト設定状態参照関数
FK::fk_GraphNode::getAllEdge
std::list< fk_GraphEdge * > getAllEdge(void)
全接続辺取得関数1
FK::fk_GraphNode::getID
unsigned int getID(void)
ID 取得関数
FK::fk_GraphNode::getStartEdge
void getStartEdge(std::list< fk_GraphEdge * > *list)
始点接続辺取得関数2
FK::fk_GraphNode::setColor
void setColor(fk_Color col)
色指定関数1
FK::fk_GraphNode::isConnect
bool isConnect(bool mode, fk_GraphNode *node)
方向判定付き接続ノード確認関数
FK::fk_GraphNode::getNextNode
void getNextNode(std::list< fk_GraphNode * > *list)
接続終点取得関数2
FK::fk_GraphNode::clearDoubleCost
void clearDoubleCost(unsigned int ID)
実数型コスト設定解除関数
FK::fk_Graph
グラフ構造を制御するクラス
Definition Graph.h:42
FK::fk_Vector
3次元ベクトルを管理するクラス
Definition Vector.h:45
FK
Fine Kernel Toolkit 名前空間
Definition Angle.h:6