-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTriangle.h
More file actions
58 lines (45 loc) · 2.17 KB
/
Triangle.h
File metadata and controls
58 lines (45 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#pragma once
#include "ColliderShape.h"
#include <array>
class Triangle : public ColliderShape
{
public:
Triangle(Vector2D *vertexA, Vector2D *vertexB, Vector2D *vertexC);
~Triangle();
double GetMinX() const override;
double GetMaxX() const override;
double GetMinY() const override;
double GetMaxY() const override;
Vector2D GetCenter() const override;
//他の衝突判定領域と交差しているかどうか
virtual bool CollisionWith(const ColliderShape *collider) const override;
virtual bool CollisionDetection(const Circle *collider) const override;
virtual bool CollisionDetection(const AABB *collider) const override;
virtual bool CollisionDetection(const OBB *collider) const override;
virtual bool CollisionDetection(const Capsule *collider) const override;
virtual bool CollisionDetection(const Triangle *collider) const override;
virtual bool CollisionDetection(const ConvexHull *collider) const override;
//他の衝突判定領域とどのように交差しているか
virtual Vector2D CalcDump(const ColliderShape *collider) const override;
virtual Vector2D CalcDumpWith(const Circle *collider) const override;
virtual Vector2D CalcDumpWith(const AABB *collider) const override;
virtual Vector2D CalcDumpWith(const OBB *collider) const override;
virtual Vector2D CalcDumpWith(const Capsule *collider) const override;
virtual Vector2D CalcDumpWith(const Triangle *collider) const override;
virtual Vector2D CalcDumpWith(const ConvexHull *collider) const override;
void Draw() override;
std::array<Vector2D*, 3> GetVertexes() const { return _vertexes; };
bool ContainInTriangle(const Vector2D point) const;
private:
void CalcIntersectDump(const Triangle *collider, const size_t index) const;
Vector2D *_vertexA, *_vertexB, *_vertexC;
std::array<Vector2D*, 3> _vertexes;
//
mutable int _result;
//It is ClosestPoint on Circle or Capsule's Bounding Volume;
mutable Vector2D _closestCache;
//交差した辺のキャッシュ
mutable Vector2D _verticalVecCache;
//交差した頂点のキャッシュ
mutable Vector2D _intersectCache;
};