From 3ef4d21001f99bd090b5579b67d0bdc557bfed0b Mon Sep 17 00:00:00 2001 From: Kearwood Kip Gilbert Date: Sat, 29 Jul 2017 18:10:54 -0700 Subject: [PATCH] /s/KRTriangle3/Triangle3/g --- kraken/KRMesh.cpp | 12 ++++---- kraken/KRMesh.h | 4 +-- kraken/public/kraken.h | 2 +- kraken/public/{KRTriangle3.h => triangle3.h} | 30 ++++++++++++++------ kraken/public/vector3.h | 4 +-- kraken/{KRTriangle3.cpp => triangle3.cpp} | 26 ++++++++--------- kraken_win/kraken.vcxproj | 4 +-- kraken_win/kraken.vcxproj.filters | 12 ++++---- 8 files changed, 54 insertions(+), 40 deletions(-) rename kraken/public/{KRTriangle3.h => triangle3.h} (76%) rename kraken/{KRTriangle3.cpp => triangle3.cpp} (91%) mode change 100755 => 100644 diff --git a/kraken/KRMesh.cpp b/kraken/KRMesh.cpp index 721c678..6a0a398 100755 --- a/kraken/KRMesh.cpp +++ b/kraken/KRMesh.cpp @@ -1104,7 +1104,7 @@ KRMesh::model_format_t KRMesh::getModelFormat() const return f; } -bool KRMesh::rayCast(const Vector3 &start, const Vector3 &dir, const KRTriangle3 &tri, const Vector3 &tri_n0, const Vector3 &tri_n1, const Vector3 &tri_n2, KRHitInfo &hitinfo) +bool KRMesh::rayCast(const Vector3 &start, const Vector3 &dir, const Triangle3 &tri, const Vector3 &tri_n0, const Vector3 &tri_n1, const Vector3 &tri_n2, KRHitInfo &hitinfo) { Vector3 hit_point; if(tri.rayCast(start, dir, hit_point)) { @@ -1154,7 +1154,7 @@ bool KRMesh::rayCast(const Vector3 &start, const Vector3 &dir, KRHitInfo &hitinf tri_vert_index[1] = getTriangleVertexIndex(submesh_index, triangle_index*3 + 1); tri_vert_index[2] = getTriangleVertexIndex(submesh_index, triangle_index*3 + 2); - KRTriangle3 tri = KRTriangle3(getVertexPosition(tri_vert_index[0]), getVertexPosition(tri_vert_index[1]), getVertexPosition(tri_vert_index[2])); + Triangle3 tri = Triangle3(getVertexPosition(tri_vert_index[0]), getVertexPosition(tri_vert_index[1]), getVertexPosition(tri_vert_index[2])); if(rayCast(start, dir, tri, getVertexNormal(tri_vert_index[0]), getVertexNormal(tri_vert_index[1]), getVertexNormal(tri_vert_index[2]), hitinfo)) hit_found = true; } @@ -1200,12 +1200,12 @@ bool KRMesh::sphereCast(const Matrix4 &model_to_world, const Vector3 &v0, const tri_vert_index[1] = getTriangleVertexIndex(submesh_index, triangle_index*3 + 1); tri_vert_index[2] = getTriangleVertexIndex(submesh_index, triangle_index*3 + 2); - KRTriangle3 tri = KRTriangle3(getVertexPosition(tri_vert_index[0]), getVertexPosition(tri_vert_index[1]), getVertexPosition(tri_vert_index[2])); + Triangle3 tri = Triangle3(getVertexPosition(tri_vert_index[0]), getVertexPosition(tri_vert_index[1]), getVertexPosition(tri_vert_index[2])); if(sphereCast(model_to_world, v0, v1, radius, tri, hitinfo)) hit_found = true; /* - KRTriangle3 tri2 = KRTriangle3(getVertexPosition(tri_vert_index[1]), getVertexPosition(tri_vert_index[0]), getVertexPosition(tri_vert_index[2])); + Triangle3 tri2 = Triangle3(getVertexPosition(tri_vert_index[1]), getVertexPosition(tri_vert_index[0]), getVertexPosition(tri_vert_index[2])); if(sphereCast(model_to_world, v0, v1, radius, tri2, new_hitinfo)) hit_found = true; */ @@ -1236,7 +1236,7 @@ bool KRMesh::sphereCast(const Matrix4 &model_to_world, const Vector3 &v0, const return hit_found; } -bool KRMesh::sphereCast(const Matrix4 &model_to_world, const Vector3 &v0, const Vector3 &v1, float radius, const KRTriangle3 &tri, KRHitInfo &hitinfo) +bool KRMesh::sphereCast(const Matrix4 &model_to_world, const Vector3 &v0, const Vector3 &v1, float radius, const Triangle3 &tri, KRHitInfo &hitinfo) { Vector3 dir = Vector3::Normalize(v1 - v0); @@ -1245,7 +1245,7 @@ bool KRMesh::sphereCast(const Matrix4 &model_to_world, const Vector3 &v0, const Vector3 new_hit_point; float new_hit_distance; - KRTriangle3 world_tri = KRTriangle3(Matrix4::Dot(model_to_world, tri[0]), Matrix4::Dot(model_to_world, tri[1]), Matrix4::Dot(model_to_world, tri[2])); + Triangle3 world_tri = Triangle3(Matrix4::Dot(model_to_world, tri[0]), Matrix4::Dot(model_to_world, tri[1]), Matrix4::Dot(model_to_world, tri[2])); if(world_tri.sphereCast(start, dir, radius, new_hit_point, new_hit_distance)) { if((!hitinfo.didHit() || hitinfo.getDistance() > new_hit_distance) && new_hit_distance <= (v1 - v0).magnitude()) { diff --git a/kraken/KRMesh.h b/kraken/KRMesh.h index 6d515cd..a4c0ab4 100755 --- a/kraken/KRMesh.h +++ b/kraken/KRMesh.h @@ -230,8 +230,8 @@ private: void getSubmeshes(); void getMaterials(); - static bool rayCast(const Vector3 &start, const Vector3 &dir, const KRTriangle3 &tri, const Vector3 &tri_n0, const Vector3 &tri_n1, const Vector3 &tri_n2, KRHitInfo &hitinfo); - static bool sphereCast(const Matrix4 &model_to_world, const Vector3 &v0, const Vector3 &v1, float radius, const KRTriangle3 &tri, KRHitInfo &hitinfo); + static bool rayCast(const Vector3 &start, const Vector3 &dir, const Triangle3 &tri, const Vector3 &tri_n0, const Vector3 &tri_n1, const Vector3 &tri_n2, KRHitInfo &hitinfo); + static bool sphereCast(const Matrix4 &model_to_world, const Vector3 &v0, const Vector3 &v1, float radius, const Triangle3 &tri, KRHitInfo &hitinfo); int m_lodCoverage; // This LOD level is activated when the bounding box of the model will cover less than this percent of the screen (100 = highest detail model) vector m_materials; diff --git a/kraken/public/kraken.h b/kraken/public/kraken.h index fc83638..54f5bba 100644 --- a/kraken/public/kraken.h +++ b/kraken/public/kraken.h @@ -8,6 +8,6 @@ #include "matrix4.h" #include "quaternion.h" #include "KRAABB.h" -#include "KRTriangle3.h" +#include "triangle3.h" #endif // KRAKEN_H diff --git a/kraken/public/KRTriangle3.h b/kraken/public/triangle3.h similarity index 76% rename from kraken/public/KRTriangle3.h rename to kraken/public/triangle3.h index fa8d30b..8a2a55e 100644 --- a/kraken/public/KRTriangle3.h +++ b/kraken/public/triangle3.h @@ -32,24 +32,24 @@ #ifndef KRAKEN_TRIANGLE3_H #define KRAKEN_TRIANGLE3_H -#include "Vector3.h" +#include "vector3.h" namespace kraken { -class KRTriangle3 +class Triangle3 { public: Vector3 vert[3]; - KRTriangle3(const KRTriangle3 &tri); - KRTriangle3(const Vector3 &v1, const Vector3 &v2, const Vector3 &v3); - ~KRTriangle3(); + Triangle3(const Triangle3 &tri); + Triangle3(const Vector3 &v1, const Vector3 &v2, const Vector3 &v3); + ~Triangle3(); Vector3 calculateNormal() const; - bool operator ==(const KRTriangle3& b) const; - bool operator !=(const KRTriangle3& b) const; - KRTriangle3& operator =(const KRTriangle3& b); + bool operator ==(const Triangle3& b) const; + bool operator !=(const Triangle3& b) const; + Triangle3& operator =(const Triangle3& b); Vector3& operator[](unsigned int i); Vector3 operator[](unsigned int i) const; @@ -62,4 +62,18 @@ public: } // namespace kraken +namespace std { + template<> + struct hash { + public: + size_t operator()(const kraken::Triangle3 &s) const + { + size_t h1 = hash()(s.vert[0]); + size_t h2 = hash()(s.vert[1]); + size_t h3 = hash()(s.vert[2]); + return h1 ^ (h2 << 1) ^ (h3 << 2); + } + }; +} // namespace std + #endif // KRAKEN_TRIANGLE3_H diff --git a/kraken/public/vector3.h b/kraken/public/vector3.h index cf575bc..c96db2b 100644 --- a/kraken/public/vector3.h +++ b/kraken/public/vector3.h @@ -34,8 +34,8 @@ #include // for hash<> -#include "Vector2.h" -#include "Vector4.h" +#include "vector2.h" +#include "vector4.h" namespace kraken { diff --git a/kraken/KRTriangle3.cpp b/kraken/triangle3.cpp old mode 100755 new mode 100644 similarity index 91% rename from kraken/KRTriangle3.cpp rename to kraken/triangle3.cpp index 44cec0e..93ccfc1 --- a/kraken/KRTriangle3.cpp +++ b/kraken/triangle3.cpp @@ -75,14 +75,14 @@ namespace { namespace kraken { -KRTriangle3::KRTriangle3(const Vector3 &v1, const Vector3 &v2, const Vector3 &v3) +Triangle3::Triangle3(const Vector3 &v1, const Vector3 &v2, const Vector3 &v3) { vert[0] = v1; vert[1] = v2; vert[2] = v3; } -KRTriangle3::KRTriangle3(const KRTriangle3 &tri) +Triangle3::Triangle3(const Triangle3 &tri) { vert[0] = tri[0]; vert[1] = tri[1]; @@ -90,22 +90,22 @@ KRTriangle3::KRTriangle3(const KRTriangle3 &tri) } -KRTriangle3::~KRTriangle3() +Triangle3::~Triangle3() { } -bool KRTriangle3::operator ==(const KRTriangle3& b) const +bool Triangle3::operator ==(const Triangle3& b) const { return vert[0] == b[0] && vert[1] == b[1] && vert[2] == b[2]; } -bool KRTriangle3::operator !=(const KRTriangle3& b) const +bool Triangle3::operator !=(const Triangle3& b) const { return vert[0] != b[0] || vert[1] != b[1] || vert[2] != b[2]; } -KRTriangle3& KRTriangle3::operator =(const KRTriangle3& b) +Triangle3& Triangle3::operator =(const Triangle3& b) { vert[0] = b[0]; @@ -114,18 +114,18 @@ KRTriangle3& KRTriangle3::operator =(const KRTriangle3& b) return *this; } -Vector3& KRTriangle3::operator[](unsigned int i) +Vector3& Triangle3::operator[](unsigned int i) { return vert[i]; } -Vector3 KRTriangle3::operator[](unsigned int i) const +Vector3 Triangle3::operator[](unsigned int i) const { return vert[i]; } -bool KRTriangle3::rayCast(const Vector3 &start, const Vector3 &dir, Vector3 &hit_point) const +bool Triangle3::rayCast(const Vector3 &start, const Vector3 &dir, Vector3 &hit_point) const { // algorithm based on Dan Sunday's implementation at http://geomalgorithms.com/a06-_intersect-2.html const float SMALL_NUM = 0.00000001; // anything that avoids division overflow @@ -184,7 +184,7 @@ bool KRTriangle3::rayCast(const Vector3 &start, const Vector3 &dir, Vector3 &hit return true; } -Vector3 KRTriangle3::calculateNormal() const +Vector3 Triangle3::calculateNormal() const { Vector3 v1 = vert[1] - vert[0]; Vector3 v2 = vert[2] - vert[0]; @@ -192,7 +192,7 @@ Vector3 KRTriangle3::calculateNormal() const return Vector3::Normalize(Vector3::Cross(v1, v2)); } -Vector3 KRTriangle3::closestPointOnTriangle(const Vector3 &p) const +Vector3 Triangle3::closestPointOnTriangle(const Vector3 &p) const { Vector3 a = vert[0]; Vector3 b = vert[1]; @@ -216,7 +216,7 @@ Vector3 KRTriangle3::closestPointOnTriangle(const Vector3 &p) const } } -bool KRTriangle3::sphereCast(const Vector3 &start, const Vector3 &dir, float radius, Vector3 &hit_point, float &hit_distance) const +bool Triangle3::sphereCast(const Vector3 &start, const Vector3 &dir, float radius, Vector3 &hit_point, float &hit_distance) const { // Dir must be normalized const float SMALL_NUM = 0.001f; // anything that avoids division overflow @@ -276,7 +276,7 @@ bool KRTriangle3::sphereCast(const Vector3 &start, const Vector3 &dir, float rad } -bool KRTriangle3::containsPoint(const Vector3 &p) const +bool Triangle3::containsPoint(const Vector3 &p) const { /* // From: http://stackoverflow.com/questions/995445/determine-if-a-3d-point-is-within-a-triangle diff --git a/kraken_win/kraken.vcxproj b/kraken_win/kraken.vcxproj index 9c55038..93e7bee 100755 --- a/kraken_win/kraken.vcxproj +++ b/kraken_win/kraken.vcxproj @@ -192,7 +192,7 @@ - + @@ -276,7 +276,7 @@ - + diff --git a/kraken_win/kraken.vcxproj.filters b/kraken_win/kraken.vcxproj.filters index a73a49e..e406e5b 100755 --- a/kraken_win/kraken.vcxproj.filters +++ b/kraken_win/kraken.vcxproj.filters @@ -33,9 +33,6 @@ Source Files - - Source Files - Source Files @@ -252,6 +249,9 @@ Source Files + + Source Files + @@ -479,9 +479,6 @@ Header Files\public - - Header Files\public - Header Files\public @@ -500,5 +497,8 @@ Header Files\public + + Header Files\public + \ No newline at end of file