diff options
| -rw-r--r-- | README | 3 | ||||
| -rw-r--r-- | openscad.pro | 9 | ||||
| -rw-r--r-- | src/polyset.cc | 12 | 
3 files changed, 18 insertions, 6 deletions
| @@ -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); | 
