FLImaging 6.5.8.1
FLFrustum.h
1#pragma once
2
9#include "FLQuad3.h"
10#include "FLGeometry3DPlane.h"
11#include "FLGeometry3DVector.h"
12
14namespace FLImaging
15{
17 namespace Foundation
18 {
24 template<typename T>
25 class FL_EXPORT CFLFrustum : public CFLFigure
26 {
27 public:
32 CFLQuad3<T> flqQuads[2];
33
40 {
45 EVertex_LeftTopNear = 0,
46
52
58
64
70
76
82
88
94 };
95
102 {
107 EPlane_Top = 0,
108
114
120
126
132
138 };
139
145
150 virtual ~CFLFrustum();
151
162
173
184
195
208
221
234
247
261 CFLFrustum(const CFLQuad3<float>& flqQuad1, const CFLQuad3<float>& flqQuad2);
262
276 CFLFrustum(const CFLQuad3<double>& flqQuad1, const CFLQuad3<double>& flqQuad2);
277
291 CFLFrustum(const CFLQuad3<float>* pFlqQuad1, const CFLQuad3<float>* pFlqQuad2);
292
306 CFLFrustum(const CFLQuad3<double>* pFlqQuad1, const CFLQuad3<double>* pFlqQuad2);
307
320
332 CFLFrustum(const CFLFigure* pFlf);
333
347 virtual const CResult Set(const CFLFrustum<float>& flfr);
348
362 virtual const CResult Set(const CFLFrustum<double>& flfr);
363
377 virtual const CResult Set(const CFLFrustum<float>* pFlfr);
378
392 virtual const CResult Set(const CFLFrustum<double>* pFlfr);
393
409 virtual const CResult Set(const Base::THexahedron<float>& tHexahedron);
410
426 virtual const CResult Set(const Base::THexahedron<double>& tHexahedron);
427
443 virtual const CResult Set(const Base::THexahedron<float>* pTHexahedron);
444
460 virtual const CResult Set(const Base::THexahedron<double>* pTHexahedron);
461
479 virtual const CResult Set(const CFLQuad3<float>& flqQuad1, const CFLQuad3<float>& flqQuad2);
480
498 virtual const CResult Set(const CFLQuad3<double>& flqQuad1, const CFLQuad3<double>& flqQuad2);
499
517 virtual const CResult Set(const CFLQuad3<float>* pFlqQuad1, const CFLQuad3<float>* pFlqQuad2);
518
536 virtual const CResult Set(const CFLQuad3<double>* pFlqQuad1, const CFLQuad3<double>* pFlqQuad2);
537
555 virtual const CResult SetVertex(EVertex eVertexPos, const Base::TPoint3<float>& tp3) sealed;
556
574 virtual const CResult SetVertex(EVertex eVertexPos, const Base::TPoint3<double>& tp3) sealed;
575
593 virtual const CResult SetVertex(EVertex eVertexPos, const Base::TPoint3<float>* pTp3) sealed;
594
612 virtual const CResult SetVertex(EVertex eVertexPos, const Base::TPoint3<double>* pTp3) sealed;
613
631 virtual const CResult SetVertex(EVertex eVertexPos, const Foundation::CFLPoint3<float>& flp3) sealed;
632
650 virtual const CResult SetVertex(EVertex eVertexPos, const Foundation::CFLPoint3<double>& flp3) sealed;
651
669 virtual const CResult SetVertex(EVertex eVertexPos, const Foundation::CFLPoint3<float>* pFlp3) sealed;
670
688 virtual const CResult SetVertex(EVertex eVertexPos, const Foundation::CFLPoint3<double>* pFlp3) sealed;
689
703 virtual const Foundation::CFLPoint3<T>* GetVertex(EVertex eVertexPos) const sealed;
704
718 virtual const CFLGeometry3DVector<T> GetEquationOfPlane(EPlane ePlane) const sealed;
719
733 virtual bool Contains(const Base::TPoint3<float>& tp3) const;
734
748 virtual bool Contains(const Base::TPoint3<double>& tp3) const;
749
763 virtual bool Contains(const Base::TPoint3<float>* pTp3) const;
764
778 virtual bool Contains(const Base::TPoint3<double>* pTp3) const;
779
793 virtual bool Contains(const Foundation::CFLPoint3<float>& flp3) const;
794
808 virtual bool Contains(const Foundation::CFLPoint3<double>& flp3) const;
809
823 virtual bool Contains(const Foundation::CFLPoint3<float>* pFlp3) const;
824
838 virtual bool Contains(const Foundation::CFLPoint3<double>* pFlp3) const;
839
861 virtual const CResult Contains(const Base::CFLArray<Base::TPoint3<float>>& flaVertices, Base::CFLArray<int32_t>& flaResult, bool bClearResult = true) const;
862
884 virtual const CResult Contains(const Base::CFLArray<Base::TPoint3<double>>& flaVertices, Base::CFLArray<int32_t>& flaResult, bool bClearResult = true) const;
885
907 virtual const CResult Contains(const Base::CFLArray<Base::TPoint3<float>>* pFlaVertices, Base::CFLArray<int32_t>& flaResult, bool bClearResult = true) const;
908
930 virtual const CResult Contains(const Base::CFLArray<Base::TPoint3<double>>* pFlaVertices, Base::CFLArray<int32_t>& flaResult, bool bClearResult = true) const;
931
955 virtual const CResult Contains(const Base::CFLArray<Base::TPoint3<float>>& flaVertices, const Base::CFLArray<int32_t>& flaTargetIndex, Base::CFLArray<int32_t>& flaResult, bool bClearResult = true) const;
956
980 virtual const CResult Contains(const Base::CFLArray<Base::TPoint3<double>>& flaVertices, const Base::CFLArray<int32_t>& flaTargetIndex, Base::CFLArray<int32_t>& flaResult, bool bClearResult = true) const;
981
1005 virtual const CResult Contains(const Base::CFLArray<Base::TPoint3<float>>* pFlaVertices, const Base::CFLArray<int32_t>& flaTargetIndex, Base::CFLArray<int32_t>& flaResult, bool bClearResult = true) const;
1006
1030 virtual const CResult Contains(const Base::CFLArray<Base::TPoint3<double>>* pFlaVertices, const Base::CFLArray<int32_t>& flaTargetIndex, Base::CFLArray<int32_t>& flaResult, bool bClearResult = true) const;
1031
1043 virtual bool IsCollision(const Base::TPoint3<float>& tp3Begin, const Base::TPoint3<float>& tp3End) const;
1044
1056 virtual bool IsCollision(const Base::TPoint3<double>& tp3Begin, const Base::TPoint3<double>& tp3End) const;
1057
1069 virtual bool IsCollision(const Base::TPoint3<float>* pTp3Begin, const Base::TPoint3<float>* pTp3End) const;
1070
1082 virtual bool IsCollision(const Base::TPoint3<double>* pTp3Begin, const Base::TPoint3<double>* pTp3End) const;
1083
1095 virtual bool IsCollision(const Foundation::CFLPoint3<float>& flp3Begin, const Foundation::CFLPoint3<float>& flp3End) const;
1096
1108 virtual bool IsCollision(const Foundation::CFLPoint3<double>& flp3Begin, const Foundation::CFLPoint3<double>& flp3End) const;
1109
1121 virtual bool IsCollision(const Foundation::CFLPoint3<float>* pFlp3Begin, const Foundation::CFLPoint3<float>* pFlp3End) const;
1122
1134 virtual bool IsCollision(const Foundation::CFLPoint3<double>* pFlp3Begin, const Foundation::CFLPoint3<double>* pFlp3End) const;
1135
1136
1137 virtual const CResult Set(const CFLFigure& flf) override;
1138 virtual const CResult Set(const CFLFigure* pFlf) override;
1139
1140 virtual void Clear() override;
1141
1142 virtual EFigureDeclType GetDeclType() const override;
1143 virtual EFigureTemplateType GetTemplateType() const override;
1144
1145
1158
1171
1186
1201
1202
1203 SupportToDuplicateObject(CFLFrustum<T>, *this);
1204 DeclareGetClassType();
1205 };
1206
1209 }
1210}
Template type 의 배열 클래스.
Definition RangeTree.h:19
육면체를 표현하는 간략화된 클래스
Definition THexahedron.h:38
3차원 점을 표현하는 간략화된 클래스
Definition TPoint3.h:37
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1514
도형을 표현하는 클래스의 기저 클래스
Definition FLFigure.h:27
절두체를 표현하는 클래스
Definition FLFrustum.h:26
virtual const CResult Contains(const Base::CFLArray< Base::TPoint3< float > > &flaVertices, Base::CFLArray< int32_t > &flaResult, bool bClearResult=true) const
이 절두체의 내부에 위치하는 정점의 인덱스 배열을 반환합니다.
virtual const CResult SetVertex(EVertex eVertexPos, const Base::TPoint3< double > &tp3) sealed
CFLFrustum(const CFLFrustum< float > &rhs)
복사 생성자
virtual const CResult Contains(const Base::CFLArray< Base::TPoint3< float > > &flaVertices, const Base::CFLArray< int32_t > &flaTargetIndex, Base::CFLArray< int32_t > &flaResult, bool bClearResult=true) const
이 절두체의 내부에 위치하는 정점의 인덱스 배열을 반환합니다.
virtual const CResult Contains(const Base::CFLArray< Base::TPoint3< double > > *pFlaVertices, Base::CFLArray< int32_t > &flaResult, bool bClearResult=true) const
이 절두체의 내부에 위치하는 정점의 인덱스 배열을 반환합니다.
virtual const CResult Set(const Base::THexahedron< double > &tHexahedron)
파라미터 설정 함수
virtual const CResult Set(const CFLFigure *pFlf) override
virtual const CResult Set(const CFLQuad3< float > &flqQuad1, const CFLQuad3< float > &flqQuad2)
파라미터 설정 함수
virtual const CResult Contains(const Base::CFLArray< Base::TPoint3< float > > *pFlaVertices, const Base::CFLArray< int32_t > &flaTargetIndex, Base::CFLArray< int32_t > &flaResult, bool bClearResult=true) const
이 절두체의 내부에 위치하는 정점의 인덱스 배열을 반환합니다.
virtual bool Contains(const Foundation::CFLPoint3< double > &flp3) const
정점이 이 객체의 내부에 있는지 여부를 반환합니다.
CFLFrustum(const CFLQuad3< double > *pFlqQuad1, const CFLQuad3< double > *pFlqQuad2)
초기화 생성자
CFLFrustum(const CFLFigure *pFlf)
초기화 생성자
virtual const CResult Set(const Base::THexahedron< float > *pTHexahedron)
파라미터 설정 함수
virtual void Clear() override
객체의 변수를 초기화 합니다.
virtual const CResult SetVertex(EVertex eVertexPos, const Base::TPoint3< float > *pTp3) sealed
CFLFrustum(const Base::THexahedron< double > &tHexahedron)
초기화 생성자
const CFLFrustum< T > & operator=(const Base::THexahedron< float > &rhs)
대입 연산자
virtual bool IsCollision(const Foundation::CFLPoint3< double > &flp3Begin, const Foundation::CFLPoint3< double > &flp3End) const
virtual bool IsCollision(const Base::TPoint3< double > *pTp3Begin, const Base::TPoint3< double > *pTp3End) const
virtual bool Contains(const Foundation::CFLPoint3< double > *pFlp3) const
정점이 이 객체의 내부에 있는지 여부를 반환합니다.
virtual bool IsCollision(const Foundation::CFLPoint3< float > &flp3Begin, const Foundation::CFLPoint3< float > &flp3End) const
virtual const CResult Set(const CFLQuad3< double > &flqQuad1, const CFLQuad3< double > &flqQuad2)
파라미터 설정 함수
virtual bool Contains(const Foundation::CFLPoint3< float > &flp3) const
정점이 이 객체의 내부에 있는지 여부를 반환합니다.
virtual const CResult Set(const Base::THexahedron< float > &tHexahedron)
파라미터 설정 함수
virtual bool Contains(const Base::TPoint3< double > &tp3) const
정점이 이 객체의 내부에 있는지 여부를 반환합니다.
virtual EFigureTemplateType GetTemplateType() const override
EPlane
Definition FLFrustum.h:102
@ EPlane_Left
Definition FLFrustum.h:119
@ EPlane_Near
Definition FLFrustum.h:131
@ EPlane_Bottom
Definition FLFrustum.h:113
@ EPlane_Right
Definition FLFrustum.h:125
@ EPlane_Far
Definition FLFrustum.h:137
virtual bool IsCollision(const Foundation::CFLPoint3< double > *pFlp3Begin, const Foundation::CFLPoint3< double > *pFlp3End) const
virtual const CResult SetVertex(EVertex eVertexPos, const Foundation::CFLPoint3< float > *pFlp3) sealed
virtual const CResult SetVertex(EVertex eVertexPos, const Foundation::CFLPoint3< float > &flp3) sealed
virtual const CFLGeometry3DVector< T > GetEquationOfPlane(EPlane ePlane) const sealed
virtual const CResult Set(const CFLFrustum< float > &flfr)
파라미터 설정 함수
virtual const CResult SetVertex(EVertex eVertexPos, const Base::TPoint3< double > *pTp3) sealed
const CFLFrustum< T > & operator=(const CFLFrustum< float > &rhs)
대입 연산자
const CFLFrustum< T > & operator=(const Base::THexahedron< double > &rhs)
대입 연산자
CFLFrustum(const CFLFrustum< float > *pRhs)
복사 생성자
virtual bool Contains(const Base::TPoint3< double > *pTp3) const
정점이 이 객체의 내부에 있는지 여부를 반환합니다.
virtual const CResult Set(const Base::THexahedron< double > *pTHexahedron)
파라미터 설정 함수
EVertex
Definition FLFrustum.h:40
@ EVertex_LeftTopFar
Definition FLFrustum.h:69
@ EVertex_RightBottomFar
Definition FLFrustum.h:81
@ EVertex_Count
Definition FLFrustum.h:93
@ EVertex_RightTopFar
Definition FLFrustum.h:75
@ EVertex_RightBottomNear
Definition FLFrustum.h:57
@ EVertex_LeftBottomNear
Definition FLFrustum.h:63
@ EVertex_RightTopNear
Definition FLFrustum.h:51
@ EVertex_LeftBottomFar
Definition FLFrustum.h:87
virtual bool Contains(const Base::TPoint3< float > *pTp3) const
정점이 이 객체의 내부에 있는지 여부를 반환합니다.
CFLFrustum(const CFLFigure &flf)
초기화 생성자
virtual const CResult SetVertex(EVertex eVertexPos, const Base::TPoint3< float > &tp3) sealed
virtual bool IsCollision(const Base::TPoint3< float > &tp3Begin, const Base::TPoint3< float > &tp3End) const
virtual bool IsCollision(const Foundation::CFLPoint3< float > *pFlp3Begin, const Foundation::CFLPoint3< float > *pFlp3End) const
virtual const CResult Contains(const Base::CFLArray< Base::TPoint3< double > > *pFlaVertices, const Base::CFLArray< int32_t > &flaTargetIndex, Base::CFLArray< int32_t > &flaResult, bool bClearResult=true) const
이 절두체의 내부에 위치하는 정점의 인덱스 배열을 반환합니다.
virtual bool Contains(const Base::TPoint3< float > &tp3) const
정점이 이 객체의 내부에 있는지 여부를 반환합니다.
CFLFrustum(const CFLQuad3< double > &flqQuad1, const CFLQuad3< double > &flqQuad2)
초기화 생성자
CFLFrustum(const Base::THexahedron< double > *pTHexahedron)
초기화 생성자
virtual const CResult Set(const CFLFrustum< double > &flfr)
파라미터 설정 함수
CFLFrustum(const CFLQuad3< float > &flqQuad1, const CFLQuad3< float > &flqQuad2)
초기화 생성자
virtual const CResult Set(const CFLFrustum< double > *pFlfr)
파라미터 설정 함수
virtual const CResult Contains(const Base::CFLArray< Base::TPoint3< double > > &flaVertices, Base::CFLArray< int32_t > &flaResult, bool bClearResult=true) const
이 절두체의 내부에 위치하는 정점의 인덱스 배열을 반환합니다.
CFLFrustum(const Base::THexahedron< float > *pTHexahedron)
초기화 생성자
const CFLFrustum< T > & operator=(const CFLFrustum< double > &rhs)
대입 연산자
virtual const CResult Set(const CFLQuad3< double > *pFlqQuad1, const CFLQuad3< double > *pFlqQuad2)
파라미터 설정 함수
virtual const CResult SetVertex(EVertex eVertexPos, const Foundation::CFLPoint3< double > *pFlp3) sealed
virtual bool Contains(const Foundation::CFLPoint3< float > *pFlp3) const
정점이 이 객체의 내부에 있는지 여부를 반환합니다.
virtual const CResult Set(const CFLQuad3< float > *pFlqQuad1, const CFLQuad3< float > *pFlqQuad2)
파라미터 설정 함수
virtual const CResult Set(const CFLFrustum< float > *pFlfr)
파라미터 설정 함수
CFLFrustum(const Base::THexahedron< float > &tHexahedron)
초기화 생성자
virtual const CResult Contains(const Base::CFLArray< Base::TPoint3< float > > *pFlaVertices, Base::CFLArray< int32_t > &flaResult, bool bClearResult=true) const
이 절두체의 내부에 위치하는 정점의 인덱스 배열을 반환합니다.
CFLFrustum(const CFLFrustum< double > *pRhs)
복사 생성자
CFLFrustum(const CFLFrustum< double > &rhs)
복사 생성자
virtual const CResult Contains(const Base::CFLArray< Base::TPoint3< double > > &flaVertices, const Base::CFLArray< int32_t > &flaTargetIndex, Base::CFLArray< int32_t > &flaResult, bool bClearResult=true) const
이 절두체의 내부에 위치하는 정점의 인덱스 배열을 반환합니다.
virtual EFigureDeclType GetDeclType() const override
virtual const Foundation::CFLPoint3< T > * GetVertex(EVertex eVertexPos) const sealed
virtual bool IsCollision(const Base::TPoint3< float > *pTp3Begin, const Base::TPoint3< float > *pTp3End) const
virtual const CResult SetVertex(EVertex eVertexPos, const Foundation::CFLPoint3< double > &flp3) sealed
CFLFrustum(const CFLQuad3< float > *pFlqQuad1, const CFLQuad3< float > *pFlqQuad2)
초기화 생성자
virtual const CResult Set(const CFLFigure &flf) override
virtual bool IsCollision(const Base::TPoint3< double > &tp3Begin, const Base::TPoint3< double > &tp3End) const
3D 공간 상의 벡터를 표현하며, 방향과 크기를 내포하는 클래스
Definition FLGeometry3DVector.h:33
3차원 점을 표현하는 클래스
Definition FLPoint3.h:36
3차원 사변형을 표현하는 클래스
Definition FLQuad3.h:24
EFigureDeclType
도형의 타입
Definition DefinitionsFigure.h:33
EFigureTemplateType
도형의 변수 자료형
Definition DefinitionsFigure.h:302