<ClCompile Include="CrossSectionUnit.cpp" />
<ClCompile Include="CSCache.cpp" />
<ClCompile Include="KdTree.cpp" />
+ <ClCompile Include="Mesh\BaseEdge.cpp" />
+ <ClCompile Include="Mesh\BaseFace.cpp" />
<ClCompile Include="Mesh\BaseMeshPrimitives.cpp" />
+ <ClCompile Include="Mesh\BasePolyline.cpp" />
<ClCompile Include="Mesh\PLY\PLYHeader.cpp" />
<ClCompile Include="Mesh\PLY\PLYMesh.cpp" />
+ <ClCompile Include="Mesh\VertAdj.cpp" />
<ClCompile Include="Path.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<ClInclude Include="GeomPrimitives.h" />
<ClInclude Include="KdTree.h" />
<ClInclude Include="Mesh\BaryCoord.h" />
+ <ClInclude Include="Mesh\BaseEdge.h" />
+ <ClInclude Include="Mesh\BaseFace.h" />
<ClInclude Include="Mesh\BaseMeshPrimitives.h" />
+ <ClInclude Include="Mesh\BasePolyline.h" />
<ClInclude Include="Mesh\PLY\PLYFace.h" />
<ClInclude Include="Mesh\PLY\PLYHeader.h" />
<ClInclude Include="Mesh\PLY\PLYMesh.h" />
<ClInclude Include="Mesh\SubObject.h" />
+ <ClInclude Include="Mesh\VertAdj.h" />
<ClInclude Include="Path.h" />
<ClInclude Include="Shape.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="UniformGrid.h" />
<ClInclude Include="Mesh\BaseMesh.h" />
<ClInclude Include="Mesh\BaseMeshGen.h" />
- <ClInclude Include="Mesh\BaseMeshInterface.h" />
<ClInclude Include="Mesh\STL\STLMesh.h" />
<ClInclude Include="Mesh\Mqo\GlMqoDrawer.h" />
<ClInclude Include="Mesh\Mqo\Mqo.h" />
<ClCompile Include="Mesh\BaseMeshPrimitives.cpp">
<Filter>Mesh</Filter>
</ClCompile>
+ <ClCompile Include="Mesh\BaseFace.cpp">
+ <Filter>Mesh</Filter>
+ </ClCompile>
+ <ClCompile Include="Mesh\BaseEdge.cpp">
+ <Filter>Mesh</Filter>
+ </ClCompile>
+ <ClCompile Include="Mesh\VertAdj.cpp">
+ <Filter>Mesh</Filter>
+ </ClCompile>
+ <ClCompile Include="Mesh\BasePolyline.cpp">
+ <Filter>Mesh</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="GeomPrimitives.h">
<ClInclude Include="Mesh\BaseMeshGen.h">
<Filter>Mesh</Filter>
</ClInclude>
- <ClInclude Include="Mesh\BaseMeshInterface.h">
- <Filter>Mesh</Filter>
- </ClInclude>
<ClInclude Include="Mesh\STL\STLMesh.h">
<Filter>Mesh\STL</Filter>
</ClInclude>
<ClInclude Include="Mesh\SubObject.h">
<Filter>Mesh</Filter>
</ClInclude>
+ <ClInclude Include="Mesh\BaseFace.h">
+ <Filter>Mesh</Filter>
+ </ClInclude>
+ <ClInclude Include="Mesh\BaseEdge.h">
+ <Filter>Mesh</Filter>
+ </ClInclude>
+ <ClInclude Include="Mesh\VertAdj.h">
+ <Filter>Mesh</Filter>
+ </ClInclude>
+ <ClInclude Include="Mesh\BasePolyline.h">
+ <Filter>Mesh</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="LibGeo_vc11.vsprops">
--- /dev/null
+#include "stdafx.h"
+#include "BaseEdge.h"
+
+
+
+namespace lib_geo
+{
+
+
+void BaseEdge::Clear(void)
+{
+ m_VertIds[0] = -1;
+ m_VertIds[1] = -1;
+
+ ClearAdjBuffer();
+}
+
+void BaseEdge::ClearAdjBuffer(void)
+{
+ m_AdjFids.clear();
+}
+
+bool BaseEdge::IsBound(void) const
+{
+ return m_AdjFids.size() != 2;
+}
+
+
+}
--- /dev/null
+#pragma once
+
+#include <vector>
+
+
+
+namespace lib_geo
+{
+
+
+//! \8aî\96{\83G\83b\83W
+class BaseEdge
+{
+public:
+ BaseEdge(void)
+ {
+ m_VertIds[0] = -1;
+ m_VertIds[1] = -1;
+ }
+
+ virtual void Clear(void);
+ virtual void ClearAdjBuffer(void);
+
+ bool IsBound(void) const;
+
+public:
+ int m_VertIds[2];
+
+ std::vector<int> m_AdjFids;
+};
+
+
+}
--- /dev/null
+#include "stdafx.h"
+#include "BaseFace.h"
+
+
+
+namespace lib_geo
+{
+
+
+//! \91S\83o\83b\83t\83@\82ð\83N\83\8a\83A
+void BaseFace::ClearFace(void)
+{
+ m_VertIds.clear();
+ m_NormIds.clear();
+ m_UVIds.clear();
+
+ ClearAdjBuffer();
+
+ m_MatIdx = -1;
+}
+
+void BaseFace::ClearAdjBuffer(void)
+{
+ m_AdjEids.clear();
+}
+
+size_t BaseFace::NumVertices(void) const
+{
+ return m_VertIds.size();
+}
+
+size_t BaseFace::NumTriangles(void) const
+{
+ size_t num_verts = m_VertIds.size();
+ if (num_verts < 3)
+ return 0;
+ return num_verts - 2;
+}
+
+// \88Ê\92u\88È\8aO\82Ì\97v\91f\82ð\8e\9d\82Á\82Ä\82¢\82é\82©\8am\94F\82·\82é.
+bool BaseFace::HasNormal(void) const
+{
+ return !m_NormIds.empty();
+}
+
+bool BaseFace::HasUV(void) const
+{
+ return !m_UVIds.empty();
+}
+
+bool BaseFace::VerifyElementCounts(void) const
+{
+ // \92¸\93_ID\82ð\8aî\8f\80\82É\91½\8ap\8c`\82ª\8d\\90¬\82³\82ê\82é. \91¼\82Ì\97v\91f\82Í\8ap\82Ì\91®\90«\82ð\95\\82·
+ if( m_VertIds.empty() )
+ {
+ if( !m_NormIds.empty() ) return false;
+ if( !m_UVIds.empty() ) return false;
+ }
+ else
+ {
+ if( !m_NormIds.empty() )
+ {
+ if( m_VertIds.size() != m_NormIds.size() ) return false;
+ if( m_UVIds.size() != m_UVIds.size() ) return false;
+ }
+ }
+
+ return true;
+}
+
+void BaseFace::CopySubTriangle(BaseFace& f, int lvid0, int lvid1, int lvid2) const
+{
+ f.m_MatIdx = m_MatIdx;
+
+ f.m_VertIds.resize(3);
+ f.m_VertIds[0] = m_VertIds[lvid0];
+ f.m_VertIds[1] = m_VertIds[lvid1];
+ f.m_VertIds[2] = m_VertIds[lvid2];
+
+ if (!m_NormIds.empty())
+ {
+ f.m_NormIds.resize(3);
+ f.m_NormIds[0] = m_NormIds[lvid0];
+ f.m_NormIds[1] = m_NormIds[lvid1];
+ f.m_NormIds[2] = m_NormIds[lvid2];
+ }
+
+ if (!m_UVIds.empty())
+ {
+ f.m_UVIds.resize(3);
+ f.m_UVIds[0] = m_UVIds[lvid0];
+ f.m_UVIds[1] = m_UVIds[lvid1];
+ f.m_UVIds[2] = m_UVIds[lvid2];
+ }
+}
+
+void BaseFace::FlipIndexBuf(void)
+{
+ std::reverse(m_VertIds.begin(), m_VertIds.end());
+ std::reverse(m_NormIds.begin(), m_NormIds.end());
+ std::reverse(m_UVIds.begin(), m_UVIds.end());
+ std::reverse(m_AdjEids.begin(), m_AdjEids.end());
+}
+
+
+}
--- /dev/null
+#pragma once
+
+#include <vector>
+
+
+
+namespace lib_geo
+{
+
+
+//! \8aî\96{\83|\83\8a\83S\83\93
+class BaseFace
+{
+public:
+ BaseFace(void)
+ : m_MatIdx(-1)
+ {}
+
+ void ClearFace(void);
+ void ClearAdjBuffer(void);
+
+ //! \92¸\93_\90\94\82ð\8eæ\93¾\82·\82é.
+ size_t NumVertices(void) const;
+ //! \8eO\8ap\89»\82µ\82½\82Æ\82«\82Ì\8eO\8ap\8c`\82Ì\96\87\90\94\82ð\8eæ\93¾\82·\82é.
+ size_t NumTriangles(void) const;
+
+ // \88Ê\92u\88È\8aO\82Ì\97v\91f\82ð\8e\9d\82Á\82Ä\82¢\82é\82©\8am\94F\82·\82é.
+ bool HasNormal(void) const;
+ bool HasUV(void) const;
+
+ //! \97v\91f\90\94\82É\88Ù\8fí\82ª\96³\82¢\82©\8c\9f\8fØ\82·\82é
+ bool VerifyElementCounts(void) const;
+
+ bool HasValidMatIdx(void) const { return m_MatIdx != -1; }
+
+ void CopySubTriangle(BaseFace& f, int lvid0, int lvid1, int lvid2) const;
+
+ void FlipIndexBuf(void);
+
+public:
+ std::vector<int> m_VertIds; //!< \92¸\93_\83C\83\93\83f\83b\83N\83X
+ std::vector<int> m_NormIds; //!< \92¸\93_\82É\83o\83C\83\93\83h\82³\82ê\82½\96@\90ü\83C\83\93\83f\83b\83N\83X
+ std::vector<int> m_UVIds; //!< \92¸\93_\82É\83o\83C\83\93\83h\82³\82ê\82½UV\83C\83\93\83f\83b\83N\83X
+
+ std::vector<int> m_AdjEids;
+
+ int m_MatIdx; //!< \83|\83\8a\83S\83\93\82Ì\8cÂ\95Ê\83}\83e\83\8a\83A\83\8b\83C\83\93\83f\83b\83N\83X. \96¢\8ew\92è => -1
+};
+
+
+class SubfaceIdx
+{
+public:
+ SubfaceIdx(void) :
+ fid(-1),
+ subface(-1)
+ {
+ }
+ SubfaceIdx(int fid_, int subface_) :
+ fid(fid_),
+ subface(subface_)
+ {
+ }
+
+ void Set(int fid_, int subface_)
+ {
+ fid = fid_;
+ subface = subface_;
+ }
+
+ void Reset(void)
+ {
+ fid = -1;
+ subface = -1;
+ }
+
+ bool IsValid(void) const
+ {
+ return (fid != -1 && subface != -1);
+ }
+
+public:
+ int fid;
+ int subface;
+};
+
+
+}
--- /dev/null
+#include "stdafx.h"
+#include "BaseMaterial.h"
+
+
+
+namespace lib_geo
+{
+}
--- /dev/null
+#pragma once
+
+#include <vector>
+#include <string>
+
+#include <C2/graph/material.h>
+
+
+
+namespace lib_geo
+{
+
+
+class BaseMaterial : public lib_graph::Material
+{
+public:
+ BaseMaterial(void) : lib_graph::Material() {}
+ BaseMaterial(const lib_graph::Material& m) : lib_graph::Material(m) {}
+
+ void operator=(const lib_graph::Material& m)
+ {
+ (*dynamic_cast<lib_graph::Material*>(this)) = m;
+ }
+
+ std::string m_Name;
+};
+
+
+}
#include "stdafx.h"
#include "BaseMeshPrimitives.h"
-
-
-
-namespace lib_geo
-{
-
-
-// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-// BaseEdge
-
-void BaseEdge::Clear(void)
-{
- m_VertIds[0] = -1;
- m_VertIds[1] = -1;
-
- ClearAdjBuffer();
-}
-
-void BaseEdge::ClearAdjBuffer(void)
-{
- m_AdjFids.clear();
-}
-
-bool BaseEdge::IsBound(void) const
-{
- return m_AdjFids.size() != 2;
-}
-
-
-// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-// BaseFace
-
-//! \91S\83o\83b\83t\83@\82ð\83N\83\8a\83A
-void BaseFace::ClearFace(void)
-{
- m_VertIds.clear();
- m_NormIds.clear();
- m_UVIds.clear();
-
- ClearAdjBuffer();
-
- m_MatIdx = -1;
-}
-
-void BaseFace::ClearAdjBuffer(void)
-{
- m_AdjEids.clear();
-}
-
-size_t BaseFace::NumVertices(void) const
-{
- return m_VertIds.size();
-}
-
-size_t BaseFace::NumTriangles(void) const
-{
- size_t num_verts = m_VertIds.size();
- if (num_verts < 3)
- return 0;
- return num_verts - 2;
-}
-
-// \88Ê\92u\88È\8aO\82Ì\97v\91f\82ð\8e\9d\82Á\82Ä\82¢\82é\82©\8am\94F\82·\82é.
-bool BaseFace::HasNormal(void) const
-{
- return !m_NormIds.empty();
-}
-
-bool BaseFace::HasUV(void) const
-{
- return !m_UVIds.empty();
-}
-
-
-bool BaseFace::VerifyElementCounts(void) const
-{
- // \92¸\93_ID\82ð\8aî\8f\80\82É\91½\8ap\8c`\82ª\8d\\90¬\82³\82ê\82é. \91¼\82Ì\97v\91f\82Í\8ap\82Ì\91®\90«\82ð\95\\82·
- if( m_VertIds.empty() )
- {
- if( !m_NormIds.empty() ) return false;
- if( !m_UVIds.empty() ) return false;
- }
- else
- {
- if( !m_NormIds.empty() )
- {
- if( m_VertIds.size() != m_NormIds.size() ) return false;
- if( m_UVIds.size() != m_UVIds.size() ) return false;
- }
- }
-
- return true;
-}
-
-void BaseFace::CopySubTriangle(BaseFace& f, int lvid0, int lvid1, int lvid2) const
-{
- f.m_MatIdx = m_MatIdx;
-
- f.m_VertIds.resize(3);
- f.m_VertIds[0] = m_VertIds[lvid0];
- f.m_VertIds[1] = m_VertIds[lvid1];
- f.m_VertIds[2] = m_VertIds[lvid2];
-
- if (!m_NormIds.empty())
- {
- f.m_NormIds.resize(3);
- f.m_NormIds[0] = m_NormIds[lvid0];
- f.m_NormIds[1] = m_NormIds[lvid1];
- f.m_NormIds[2] = m_NormIds[lvid2];
- }
-
- if (!m_UVIds.empty())
- {
- f.m_UVIds.resize(3);
- f.m_UVIds[0] = m_UVIds[lvid0];
- f.m_UVIds[1] = m_UVIds[lvid1];
- f.m_UVIds[2] = m_UVIds[lvid2];
- }
-}
-
-void BaseFace::FlipIndexBuf(void)
-{
- std::reverse(m_VertIds.begin(), m_VertIds.end());
- std::reverse(m_NormIds.begin(), m_NormIds.end());
- std::reverse(m_UVIds.begin(), m_UVIds.end());
- std::reverse(m_AdjEids.begin(), m_AdjEids.end());
-}
-
-
-
-// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-// VertAdj
-
-void VertAdj::ClearAdjBuffer(void)
-{
- m_AdjEids.clear();
- m_AdjFids.clear();
-
- m_NormalAvg.set(0.0f, 0.0f, 0.0f);
-}
-
-void VertAdj::FlipFace(void)
-{
- std::reverse(m_AdjEids.begin(), m_AdjEids.end());
- std::reverse(m_AdjFids.begin(), m_AdjFids.end());
- m_NormalAvg *= -1.0f;
-}
-
-
-// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-// BasePolyline
-
-void BasePolyline::Clear(void)
-{
- m_VertIds.clear();
-}
-
-void BasePolyline::Swap(BasePolyline& pl)
-{
- pl.m_VertIds.swap(m_VertIds);
-}
-
-
-}
#include <C2/graph/material.h>
-
-
-namespace lib_geo
-{
-
-
-class BaseEdge;
-class BaseFace;
-class VertAdj;
-class BaseMesh;
-
-
-
-//! \8aî\96{\83G\83b\83W
-class BaseEdge
-{
-public:
- BaseEdge(void)
- {
- m_VertIds[0] = -1;
- m_VertIds[1] = -1;
- }
-
- virtual void Clear(void);
- virtual void ClearAdjBuffer(void);
-
- bool IsBound(void) const;
-
-public:
- int m_VertIds[2];
-
- std::vector<int> m_AdjFids;
-};
-
-
-//! \8aî\96{\83|\83\8a\83S\83\93
-class BaseFace
-{
-public:
- BaseFace(void)
- : m_MatIdx(-1)
- {}
-
- void ClearFace(void);
- void ClearAdjBuffer(void);
-
- //! \92¸\93_\90\94\82ð\8eæ\93¾\82·\82é.
- size_t NumVertices(void) const;
- //! \8eO\8ap\89»\82µ\82½\82Æ\82«\82Ì\8eO\8ap\8c`\82Ì\96\87\90\94\82ð\8eæ\93¾\82·\82é.
- size_t NumTriangles(void) const;
-
- // \88Ê\92u\88È\8aO\82Ì\97v\91f\82ð\8e\9d\82Á\82Ä\82¢\82é\82©\8am\94F\82·\82é.
- bool HasNormal(void) const;
- bool HasUV(void) const;
-
- //! \97v\91f\90\94\82É\88Ù\8fí\82ª\96³\82¢\82©\8c\9f\8fØ\82·\82é
- bool VerifyElementCounts(void) const;
-
- bool HasValidMatIdx(void) const { return m_MatIdx != -1; }
-
- void CopySubTriangle(BaseFace& f, int lvid0, int lvid1, int lvid2) const;
-
- void FlipIndexBuf(void);
-
-public:
- std::vector<int> m_VertIds; //!< \92¸\93_\83C\83\93\83f\83b\83N\83X
- std::vector<int> m_NormIds; //!< \92¸\93_\82É\83o\83C\83\93\83h\82³\82ê\82½\96@\90ü\83C\83\93\83f\83b\83N\83X
- std::vector<int> m_UVIds; //!< \92¸\93_\82É\83o\83C\83\93\83h\82³\82ê\82½UV\83C\83\93\83f\83b\83N\83X
-
- std::vector<int> m_AdjEids;
-
- int m_MatIdx; //!< \83|\83\8a\83S\83\93\82Ì\8cÂ\95Ê\83}\83e\83\8a\83A\83\8b\83C\83\93\83f\83b\83N\83X. \96¢\8ew\92è => -1
-};
-
-
-class SubfaceIdx
-{
-public:
- SubfaceIdx(void) :
- fid(-1),
- subface(-1)
- {
- }
- SubfaceIdx(int fid_, int subface_) :
- fid(fid_),
- subface(subface_)
- {
- }
-
- void Set(int fid_, int subface_)
- {
- fid = fid_;
- subface = subface_;
- }
-
- void Reset(void)
- {
- fid = -1;
- subface = -1;
- }
-
- bool IsValid(void) const
- {
- return (fid != -1 && subface != -1);
- }
-
-public:
- int fid;
- int subface;
-};
-
-
-//! \92¸\93_\82Ì\97×\90Ú\8fî\95ñ
-class VertAdj
-{
-public:
- VertAdj(void)
- {}
-
- virtual void ClearAdjBuffer(void);
-
- void FlipFace(void);
-
-public:
- std::vector<int> m_AdjEids;
- std::vector<int> m_AdjFids;
-
- lm::vec3f m_NormalAvg;
-};
-
-
-class BasePolyline
-{
-public:
- void Clear(void);
-
- void Swap(BasePolyline& pl);
-
-public:
- std::vector<int> m_VertIds;
-};
-
-
-class BaseMaterial : public lib_graph::Material
-{
-public:
- BaseMaterial(void) : lib_graph::Material() {}
- BaseMaterial(const lib_graph::Material& m) : lib_graph::Material(m) {}
-
- void operator=(const lib_graph::Material& m)
- {
- (*dynamic_cast<lib_graph::Material*>(this)) = m;
- }
-
- std::string m_Name;
-};
-
-
-}
+#include "BaseFace.h"
+#include "BaseEdge.h"
+#include "VertAdj.h"
+#include "BasePolyline.h"
+#include "BaseMaterial.h"
--- /dev/null
+#include "stdafx.h"
+#include "BasePolyline.h"
+
+
+
+namespace lib_geo
+{
+
+
+void BasePolyline::Clear(void)
+{
+ m_VertIds.clear();
+}
+
+void BasePolyline::Swap(BasePolyline& pl)
+{
+ pl.m_VertIds.swap(m_VertIds);
+}
+
+
+}
--- /dev/null
+#pragma once
+
+#include <vector>
+
+
+
+namespace lib_geo
+{
+
+
+class BasePolyline
+{
+public:
+ void Clear(void);
+
+ void Swap(BasePolyline& pl);
+
+public:
+ std::vector<int> m_VertIds;
+};
+
+
+}
--- /dev/null
+#include "stdafx.h"
+#include "VertAdj.h"
+
+
+
+namespace lib_geo
+{
+
+
+void VertAdj::ClearAdjBuffer(void)
+{
+ m_AdjEids.clear();
+ m_AdjFids.clear();
+
+ m_NormalAvg.set(0.0f, 0.0f, 0.0f);
+}
+
+void VertAdj::FlipFace(void)
+{
+ std::reverse(m_AdjEids.begin(), m_AdjEids.end());
+ std::reverse(m_AdjFids.begin(), m_AdjFids.end());
+ m_NormalAvg *= -1.0f;
+}
+
+
+}
--- /dev/null
+#pragma once
+
+#include <vector>
+
+#include <C2/lm/vector3.h>
+
+
+
+namespace lib_geo
+{
+
+
+//! \92¸\93_\82Ì\97×\90Ú\8fî\95ñ
+class VertAdj
+{
+public:
+ VertAdj(void)
+ {}
+
+ virtual void ClearAdjBuffer(void);
+
+ void FlipFace(void);
+
+public:
+ std::vector<int> m_AdjEids;
+ std::vector<int> m_AdjFids;
+
+ lm::vec3f m_NormalAvg;
+};
+
+
+}