瀏覽代碼

Merge branch 'master' of https://github.com/libigl/libigl

Former-commit-id: 3178a49bb0d85aa80acc8481650736eab8c0a580
Daniele Panozzo 11 年之前
父節點
當前提交
8abc19496a

+ 12 - 10
include/igl/cotmatrix.cpp

@@ -6,6 +6,7 @@
 // v. 2.0. If a copy of the MPL was not distributed with this file, You can 
 // obtain one at http://mozilla.org/MPL/2.0/.
 #include "cotmatrix.h"
+#include <vector>
 
 // For error printing
 #include <cstdio>
@@ -23,9 +24,9 @@ IGL_INLINE void igl::cotmatrix(
 {
   using namespace igl;
   using namespace Eigen;
-  Eigen::SparseMatrix<double> foo;
+  using namespace std;
 
-  SparseMatrix<Scalar, RowMajor> dyn_L (V.rows(), V.rows());
+  L.resize(V.rows(),V.rows());
   Matrix<int,Dynamic,2> edges;
   int simplex_size = F.cols();
   // 3 for triangles, 4 for tets
@@ -35,7 +36,7 @@ IGL_INLINE void igl::cotmatrix(
     // This is important! it could decrease the comptuation time by a factor of 2
     // Laplacian for a closed 2d manifold mesh will have on average 7 entries per
     // row
-    dyn_L.reserve(7*V.rows());
+    L.reserve(10*V.rows());
     edges.resize(3,2);
     edges << 
       1,2,
@@ -43,7 +44,7 @@ IGL_INLINE void igl::cotmatrix(
       0,1;
   }else if(simplex_size == 4)
   {
-    dyn_L.reserve(17*V.rows());
+    L.reserve(17*V.rows());
     edges.resize(6,2);
     edges << 
       1,2,
@@ -60,6 +61,8 @@ IGL_INLINE void igl::cotmatrix(
   Matrix<Scalar,Dynamic,Dynamic> C;
   cotangent(V,F,C);
   
+  vector<Triplet<Scalar> > IJV;
+  IJV.reserve(F.rows()*edges.rows()*4);
   // Loop over triangles
   for(int i = 0; i < F.rows(); i++)
   {
@@ -68,14 +71,13 @@ IGL_INLINE void igl::cotmatrix(
     {
       int source = F(i,edges(e,0));
       int dest = F(i,edges(e,1));
-      dyn_L.coeffRef(source,dest) += C(i,e);
-      dyn_L.coeffRef(dest,source) += C(i,e);
-      dyn_L.coeffRef(source,source) += -C(i,e);
-      dyn_L.coeffRef(dest,dest) += -C(i,e);
+      IJV.push_back(Triplet<Scalar>(source,dest,C(i,e)));
+      IJV.push_back(Triplet<Scalar>(dest,source,C(i,e)));
+      IJV.push_back(Triplet<Scalar>(source,source,-C(i,e)));
+      IJV.push_back(Triplet<Scalar>(dest,dest,-C(i,e)));
     }
   }
-    // Corner indices of this triangle
-  L = SparseMatrix<Scalar>(dyn_L);
+  L.setFromTriplets(IJV.begin(),IJV.end());
 }
 
 #ifndef IGL_HEADER_ONLY

+ 2 - 2
include/igl/file_dialog_open.cpp

@@ -46,12 +46,12 @@ IGL_INLINE std::string igl::file_dialog_open()
   ZeroMemory(&ofn, sizeof(ofn));
   ofn.lStructSize = sizeof(ofn);
   ofn.hwndOwner = NULL;//hwnd;
-  ofn.lpstrFile = new wchar_t[100];
+  ofn.lpstrFile = new char[100];
   // Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
   // use the contents of szFile to initialize itself.
   ofn.lpstrFile[0] = '\0';
   ofn.nMaxFile = sizeof(szFile);
-  ofn.lpstrFilter = L"*.*\0";//off\0*.off\0obj\0*.obj\0mp\0*.mp\0";
+  ofn.lpstrFilter = "*.*\0";//off\0*.off\0obj\0*.obj\0mp\0*.mp\0";
   ofn.nFilterIndex = 1;
   ofn.lpstrFileTitle = NULL;
   ofn.nMaxFileTitle = 0;

+ 2 - 2
include/igl/file_dialog_save.cpp

@@ -48,12 +48,12 @@ IGL_INLINE std::string igl::file_dialog_save()
   ZeroMemory(&ofn, sizeof(ofn));
   ofn.lStructSize = sizeof(ofn);
   ofn.hwndOwner = NULL;//hwnd;
-  ofn.lpstrFile = new wchar_t[100];
+  ofn.lpstrFile = new char[100];
   // Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
   // use the contents of szFile to initialize itself.
   ofn.lpstrFile[0] = '\0';
   ofn.nMaxFile = sizeof(szFile);
-  ofn.lpstrFilter = L"";
+  ofn.lpstrFilter = "";
   ofn.nFilterIndex = 1;
   ofn.lpstrFileTitle = NULL;
   ofn.nMaxFileTitle = 0;

+ 20 - 8
include/igl/viewer/Viewer.cpp

@@ -1,5 +1,12 @@
 #include "Viewer.h"
 
+#ifdef _WIN32
+#  include <windows.h>
+#  undef max
+#  undef min
+#  include <GL/glew.h>
+#endif
+
 #ifdef __APPLE__
 #   include <OpenGL/gl3.h>
 #   define __gl_h_ /* Prevent inclusion of the old gl.h */
@@ -15,13 +22,6 @@
 #define GLFW_INCLUDE_GLU
 #include <GLFW/glfw3.h>
 
-#ifdef _WIN32
-#  include <windows.h>
-#  undef max
-#  undef min
-#  include <GL/glew.h>
-#endif
-
 #include <cmath>
 #include <cstdio>
 #include <sstream>
@@ -2330,7 +2330,19 @@ namespace igl
       glfwTerminate();
       exit(EXIT_FAILURE);
     }
-    glfwMakeContextCurrent(window);
+
+	glfwMakeContextCurrent(window);
+
+#ifdef _WIN32
+	glewExperimental = true;
+	GLenum err = glewInit();
+	if (GLEW_OK != err)
+	{
+		/* Problem: glewInit failed, something is seriously wrong. */
+		fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
+	}
+	fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));
+#endif
 
     #ifdef DEBUG
       int major, minor, rev;

+ 1 - 0
include/igl/viewer/Viewer.h

@@ -7,6 +7,7 @@
 
 #include <vector>
 #include <string>
+#include <cstdint>
 
 #define IGL_MOD_SHIFT           0x0001
 #define IGL_MOD_CONTROL         0x0002

+ 24 - 2
tutorial/cmake/FindANTTWEAKBAR.cmake

@@ -7,6 +7,26 @@
 # ANT_TWEAK_BAR_LIBRARY
 #
 
+IF (WIN32)
+	IF( CMAKE_SIZEOF_VOID_P EQUAL 8 )
+	  SET( BITS "64" )
+    ELSE( CMAKE_SIZEOF_VOID_P EQUAL 8 )
+      SET( BITS "" )
+    ENDIF( CMAKE_SIZEOF_VOID_P EQUAL 8 )
+	
+	FIND_PATH( ANT_TWEAK_BAR_INCLUDE_DIR AntTweakBar.h
+      PATHS
+		${PROJECT_SOURCE_DIR}/../../external/AntTweakBar/include
+		$ENV{ANT_TWEAK_BAR_ROOT}/include
+		DOC "The directory where AntTweakBar.h resides")
+
+    FIND_LIBRARY( ANT_TWEAK_BAR_LIBRARY AntTweakBar${BITS}
+        PATHS
+		${PROJECT_SOURCE_DIR}/../../external/AntTweakBar/lib
+        $ENV{ANT_TWEAK_BAR_ROOT}/lib
+        DOC "The AntTweakBar library")
+ELSE (WIN32)
+
 FIND_PATH(ANT_TWEAK_BAR_INCLUDE_DIR AntTweakBar.h
       PATHS
 	    ${PROJECT_SOURCE_DIR}/../libigl/external/AntTweakBar/include/
@@ -16,8 +36,6 @@ FIND_PATH(ANT_TWEAK_BAR_INCLUDE_DIR AntTweakBar.h
       /usr/include
       NO_DEFAULT_PATH)
 
-set(ANT_TWEAK_BAR_INCLUDE_DIR ${ANT_TWEAK_BAR_INCLUDE_DIR} ${ANT_TWEAK_BAR_INCLUDE_DIR}/../src/)
-
 FIND_LIBRARY( ANT_TWEAK_BAR_LIBRARY AntTweakBar
   PATHS
 		${PROJECT_SOURCE_DIR}/../libigl/external/AntTweakBar/lib
@@ -33,6 +51,10 @@ FIND_LIBRARY( ANT_TWEAK_BAR_LIBRARY AntTweakBar
     NO_DEFAULT_PATH
 )
 
+ENDIF (WIN32)
+
+set(ANT_TWEAK_BAR_INCLUDE_DIR ${ANT_TWEAK_BAR_INCLUDE_DIR} ${ANT_TWEAK_BAR_INCLUDE_DIR}/../src/)
+
 # message(FATAL_ERROR ${ANT_TWEAK_BAR_LIBRARY})
 
 if(ANT_TWEAK_BAR_INCLUDE_DIR AND ANT_TWEAK_BAR_LIBRARY)

+ 1 - 0
tutorial/cmake/FindEIGEN.cmake

@@ -65,6 +65,7 @@ else ()
       PATHS
       ${CMAKE_INSTALL_PREFIX}/include
       ${KDE4_INCLUDE_DIR}
+	  ${PROJECT_SOURCE_DIR}/../../../Eigen
       PATH_SUFFIXES eigen3 eigen
     )
 

+ 1 - 0
tutorial/cmake/FindGLFW.cmake

@@ -20,6 +20,7 @@ FIND_PATH(GLFW_INCLUDE_DIR GLFW/glfw3.h
 FIND_LIBRARY( GLFW_LIBRARIES NAMES glfw glfw3
   PATHS
     ${PROJECT_SOURCE_DIR}/../../external/glfw/src
+	${PROJECT_SOURCE_DIR}/../../external/glfw/lib/x64
     /usr/local
     /usr/X11
     /usr