summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2010-01-30 18:30:54 (GMT)
committerclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2010-01-30 18:30:54 (GMT)
commit2da15511294d2f89f2337ee0330db9062a4cfdce (patch)
tree03ef1c32856766c871138a1cbce93a8f2047fcc4
parentfc1224d321ad39a5e63d947e6454344d9e86bf95 (diff)
Clifford Wolf:
Started to use eigen2 for linear algebra problems git-svn-id: http://svn.clifford.at/openscad/trunk@376 b57f626f-c46c-0410-a088-ec61d464b74c
-rw-r--r--README3
-rw-r--r--openscad.pro9
-rw-r--r--src/polyset.cc12
3 files changed, 18 insertions, 6 deletions
diff --git a/README b/README
index 86669bb..9288811 100644
--- a/README
+++ b/README
@@ -52,6 +52,9 @@ development. Other versions may or may not work as well..
* GLEW (bundled with OpenCSG)
http://glew.sourceforge.net/
+* Eigen2 (2.0.11)
+ http://eigen.tuxfamily.org/
+
* GCC C++ Compiler (4.0, 4.2, 4.3.1):
http://gcc.gnu.org/
diff --git a/openscad.pro b/openscad.pro
index cb8afe7..60b9ab4 100644
--- a/openscad.pro
+++ b/openscad.pro
@@ -39,6 +39,13 @@ mdi {
include(cgal.pri)
include(opencsg.pri)
+!isEmpty(EIGEN2_DIR) {
+ QMAKE_CXXFLAGS += -I$$EIGEN2_DIR
+}
+else {
+ QMAKE_CXXFLAGS += -I/usr/include/eigen2
+}
+
QMAKE_CXXFLAGS_RELEASE = -O3 -march=pentium
QMAKE_CXXFLAGS_DEBUG = -O0 -ggdb
@@ -46,8 +53,6 @@ QMAKE_CXXFLAGS_DEBUG = -O0 -ggdb
# QMAKE_CXXFLAGS += -pg
# QMAKE_LFLAGS += -pg
-
-
LEXSOURCES += src/lexer.l
YACCSOURCES += src/parser.y
diff --git a/src/polyset.cc b/src/polyset.cc
index 7110f95..83c1cfc 100644
--- a/src/polyset.cc
+++ b/src/polyset.cc
@@ -25,6 +25,9 @@
#include "printutils.h"
#include "Preferences.h"
+#include <Eigen/Core>
+#include <Eigen/LU>
+
QCache<QString,PolySet::ps_cache_entry> PolySet::ps_cache(100);
PolySet::ps_cache_entry::ps_cache_entry(PolySet *ps) :
@@ -129,10 +132,11 @@ static void gl_draw_triangle(GLint *shaderinfo, const PolySet::Point *p0, const
void PolySet::render_surface(colormode_e colormode, csgmode_e csgmode, double *m, GLint *shaderinfo) const
{
- double m_scale_rotate_det =
- m[0]*m[5]*m[10] + m[4]*m[9]*m[2] + m[8]*m[1]*m[6] -
- (m[8]*m[5]*m[2] + m[4]*m[1]*m[10] + m[0]*m[9]*m[6]);
- bool mirrored = m_scale_rotate_det < 0;
+ Eigen::Matrix3f m3f;
+ m3f << m[0], m[4], m[8],
+ m[1], m[5], m[9],
+ m[2], m[6], m[10];
+ bool mirrored = m3f.determinant() < 0;
if (colormode == COLORMODE_MATERIAL) {
const QColor &col = Preferences::inst()->color(Preferences::OPENCSG_FACE_FRONT_COLOR);
contact: Jan Huwald // Impressum