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
stl_dim
clifford 2010-01-30 18:30:54 +00:00
parent fc1224d321
commit 2da1551129
3 changed files with 18 additions and 6 deletions

3
README
View File

@ -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/

View File

@ -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

View File

@ -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);