OSDN Git Service

クラスをファイルに分離
authorqw_fuku <fkhideaki@gmail.com>
Wed, 6 Jul 2016 12:49:13 +0000 (21:49 +0900)
committerqw_fuku <fkhideaki@gmail.com>
Wed, 6 Jul 2016 12:49:13 +0000 (21:49 +0900)
15 files changed:
Lib/LibGeo/LibGeo_vc11.vcxproj
Lib/LibGeo/LibGeo_vc11.vcxproj.filters
Lib/LibGeo/Mesh/BaseEdge.cpp [new file with mode: 0644]
Lib/LibGeo/Mesh/BaseEdge.h [new file with mode: 0644]
Lib/LibGeo/Mesh/BaseFace.cpp [new file with mode: 0644]
Lib/LibGeo/Mesh/BaseFace.h [new file with mode: 0644]
Lib/LibGeo/Mesh/BaseMaterial.cpp [new file with mode: 0644]
Lib/LibGeo/Mesh/BaseMaterial.h [new file with mode: 0644]
Lib/LibGeo/Mesh/BaseMeshInterface.h [deleted file]
Lib/LibGeo/Mesh/BaseMeshPrimitives.cpp
Lib/LibGeo/Mesh/BaseMeshPrimitives.h
Lib/LibGeo/Mesh/BasePolyline.cpp [new file with mode: 0644]
Lib/LibGeo/Mesh/BasePolyline.h [new file with mode: 0644]
Lib/LibGeo/Mesh/VertAdj.cpp [new file with mode: 0644]
Lib/LibGeo/Mesh/VertAdj.h [new file with mode: 0644]

index 0c5799e..0de9be4 100644 (file)
     <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" />
index 9048a76..272fcda 100644 (file)
     <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">
diff --git a/Lib/LibGeo/Mesh/BaseEdge.cpp b/Lib/LibGeo/Mesh/BaseEdge.cpp
new file mode 100644 (file)
index 0000000..08f091f
--- /dev/null
@@ -0,0 +1,29 @@
+#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;
+}
+
+
+}
diff --git a/Lib/LibGeo/Mesh/BaseEdge.h b/Lib/LibGeo/Mesh/BaseEdge.h
new file mode 100644 (file)
index 0000000..9438523
--- /dev/null
@@ -0,0 +1,33 @@
+#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;
+};
+
+
+}
diff --git a/Lib/LibGeo/Mesh/BaseFace.cpp b/Lib/LibGeo/Mesh/BaseFace.cpp
new file mode 100644 (file)
index 0000000..83653ea
--- /dev/null
@@ -0,0 +1,106 @@
+#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());
+}
+
+
+}
diff --git a/Lib/LibGeo/Mesh/BaseFace.h b/Lib/LibGeo/Mesh/BaseFace.h
new file mode 100644 (file)
index 0000000..d2ed313
--- /dev/null
@@ -0,0 +1,88 @@
+#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;
+};
+
+
+}
diff --git a/Lib/LibGeo/Mesh/BaseMaterial.cpp b/Lib/LibGeo/Mesh/BaseMaterial.cpp
new file mode 100644 (file)
index 0000000..4c258d9
--- /dev/null
@@ -0,0 +1,8 @@
+#include "stdafx.h"
+#include "BaseMaterial.h"
+
+
+
+namespace lib_geo
+{
+}
diff --git a/Lib/LibGeo/Mesh/BaseMaterial.h b/Lib/LibGeo/Mesh/BaseMaterial.h
new file mode 100644 (file)
index 0000000..b3a5e98
--- /dev/null
@@ -0,0 +1,29 @@
+#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;
+};
+
+
+}
diff --git a/Lib/LibGeo/Mesh/BaseMeshInterface.h b/Lib/LibGeo/Mesh/BaseMeshInterface.h
deleted file mode 100644 (file)
index e69de29..0000000
index 7b478b0..26d75cb 100644 (file)
@@ -1,166 +1,2 @@
 #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);
-}
-
-
-}
index 3baa651..263d3d1 100644 (file)
@@ -8,162 +8,8 @@
 
 #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"
diff --git a/Lib/LibGeo/Mesh/BasePolyline.cpp b/Lib/LibGeo/Mesh/BasePolyline.cpp
new file mode 100644 (file)
index 0000000..5bf2874
--- /dev/null
@@ -0,0 +1,21 @@
+#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);
+}
+
+
+}
diff --git a/Lib/LibGeo/Mesh/BasePolyline.h b/Lib/LibGeo/Mesh/BasePolyline.h
new file mode 100644 (file)
index 0000000..2bf1e74
--- /dev/null
@@ -0,0 +1,23 @@
+#pragma once
+
+#include <vector>
+
+
+
+namespace lib_geo
+{
+
+
+class BasePolyline
+{
+public:
+       void Clear(void);
+
+       void Swap(BasePolyline& pl);
+
+public:
+       std::vector<int> m_VertIds;
+};
+
+
+}
diff --git a/Lib/LibGeo/Mesh/VertAdj.cpp b/Lib/LibGeo/Mesh/VertAdj.cpp
new file mode 100644 (file)
index 0000000..402fff9
--- /dev/null
@@ -0,0 +1,26 @@
+#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;
+}
+
+
+}
diff --git a/Lib/LibGeo/Mesh/VertAdj.h b/Lib/LibGeo/Mesh/VertAdj.h
new file mode 100644 (file)
index 0000000..31784eb
--- /dev/null
@@ -0,0 +1,32 @@
+#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;
+};
+
+
+}