Commit 749f6086 authored by untereiner's avatar untereiner

deleteEdge+collapseEdge Map3 !!

parent b70a54c5
......@@ -24,60 +24,22 @@
#include "tuto5.h"
#include <iostream>
#include "Topology/generic/parameters.h"
#include "Topology/map/embeddedMap3.h"
#include "Geometry/vector_gen.h"
#include "Algo/Geometry/boundingbox.h"
#include "Algo/Render/GL2/mapRender.h"
#include "Utils/Shaders/shaderSimpleColor.h"
#include "Algo/Modelisation/primitives3d.h"
#include "Algo/Modelisation/polyhedron.h"
#include "Algo/Modelisation/subdivision.h"
#include "Algo/Render/GL2/topo3Render.h"
#include "Topology/generic/cellmarker.h"
#include "Utils/text3d.h"
#include "Utils/pointSprite.h"
#include "Utils/Shaders/shaderVectorPerVertex.h"
#include "Utils/cgognStream.h"
#include "Algo/Render/SVG/mapSVGRender.h"
using namespace CGoGN ;
struct PFP: public PFP_STANDARD
{
// definition de la carte
typedef EmbeddedMap3 MAP;
//typedef Map3 MAP;
};
PFP::MAP myMap;
PFP::TVEC3 position ;
Dart dglobal;
void MyQT::balls_onoff(bool x)
void Tuto5::balls_onoff(bool x)
{
render_balls = !render_balls;
updateGL();
CGoGNerr << " balls_onoff "<< CGoGNendl;
}
void MyQT::vectors_onoff(bool x)
void Tuto5::vectors_onoff(bool x)
{
render_vectors = !render_vectors;
updateGL();
CGoGNerr << " vectors_onoff "<< CGoGNflush;
}
void MyQT::text_onoff(bool x)
void Tuto5::text_onoff(bool x)
{
render_text = !render_text;
updateGL();
......@@ -85,34 +47,32 @@ void MyQT::text_onoff(bool x)
}
void MyQT::topo_onoff(bool x)
void Tuto5::topo_onoff(bool x)
{
render_topo = !render_topo;
updateGL();
CGoGNerr << " topo_onoff " << CGoGNflush;
}
void MyQT::slider_balls(int x)
void Tuto5::slider_balls(int x)
{
m_sprite->setSize(0.05f*x);
updateGL();
}
void MyQT::slider_vectors(int x)
void Tuto5::slider_vectors(int x)
{
m_lines->setScale(0.02*x);
updateGL();
}
void MyQT::slider_text(int x)
void Tuto5::slider_text(int x)
{
m_strings->setScale(0.02f*x);
updateGL();
}
void MyQT::animate()
void Tuto5::animate()
{
// transfoMatrix() = glm::rotate(transfoMatrix(), 0.5f, glm::vec3(0.5773f,0.5773f,0.5773f));
transfoRotate( 0.5f, 0.5773f,0.5773f,0.5773f);
......@@ -120,11 +80,11 @@ void MyQT::animate()
}
void MyQT::storeVerticesInfo()
void Tuto5::storeVerticesInfo()
{
CellMarker mv(myMap,VERTEX);
for (Dart d=myMap.begin(); d!=myMap.end(); myMap.next(d))
CellMarker mv(m,VERTEX);
for (Dart d=m.begin(); d!=m.end(); m.next(d))
{
if (!mv.isMarked(d))
{
......@@ -136,7 +96,7 @@ void MyQT::storeVerticesInfo()
}
}
void MyQT::cb_initGL()
void Tuto5::cb_initGL()
{
// choose to use GL version 2
Utils::GLSLShader::setCurrentOGLVersion(2);
......@@ -184,11 +144,11 @@ void MyQT::cb_initGL()
registerShader(m_sprite);
registerShader(m_lines);
m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::TRIANGLES);
m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::LINES);
m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::POINTS);
m_render->initPrimitives<PFP>(m, allDarts, Algo::Render::GL2::TRIANGLES);
m_render->initPrimitives<PFP>(m, allDarts, Algo::Render::GL2::LINES);
m_render->initPrimitives<PFP>(m, allDarts, Algo::Render::GL2::POINTS);
m_render_topo->updateData<PFP>(myMap, allDarts, position, 0.9f, 0.9f, 0.9f);
m_render_topo->updateData<PFP>(m, allDarts, position, 0.9f, 0.9f, 0.9f);
// timer example for animation
......@@ -196,7 +156,7 @@ void MyQT::cb_initGL()
connect( m_timer, SIGNAL(timeout()), SLOT(animate()) );
}
void MyQT::cb_redraw()
void Tuto5::cb_redraw()
{
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_LIGHTING);
......@@ -213,9 +173,9 @@ void MyQT::cb_redraw()
if (render_topo)
m_render_topo->drawTopo();
Dart d = myMap.phi2(myMap.begin());
Dart d = m.phi2(m.begin());
m_render_topo->overdrawDart(d, 5, 1.0f, 0.0f, 1.0f);
d = myMap.phi1(myMap.begin());
d = m.phi1(m.begin());
m_render_topo->overdrawDart(d, 5, 1.0f, 0.0f, 1.0f);
glDisable(GL_POLYGON_OFFSET_FILL);
......@@ -237,11 +197,11 @@ void MyQT::cb_redraw()
}
}
void MyQT::cb_mousePress(int button, int x, int y)
void Tuto5::cb_mousePress(int button, int x, int y)
{
if (Shift())
{
Dart d = m_render_topo->picking<PFP>(myMap, allDarts, x,y);
Dart d = m_render_topo->picking<PFP>(m, allDarts, x,y);
if (d != Dart::nil())
{
CGoGNout << "Dart "<< d << " clicked" << CGoGNendl;
......@@ -253,16 +213,16 @@ void MyQT::cb_mousePress(int button, int x, int y)
}
}
void MyQT::cb_keyPress(int code)
void Tuto5::cb_keyPress(int code)
{
if (code == 's')
{
std::string filename = selectFileSave("Export SVG file ");
CGoGNout << "Exporting "<<filename<<CGoGNendl;
Algo::Render::SVG::SVGOut svg(filename,modelViewMatrix(),projectionMatrix());
// svg.renderLinesToSVG<PFP>(myMap,position);
// svg.renderLinesToSVG<PFP>(m,position);
svg.setColor(Geom::Vec3f(1.,0.,0.));
svg.renderFacesToSVG<PFP>(myMap,position,0.8f);
svg.renderFacesToSVG<PFP>(m,position,0.8f);
//svg destruction close the file
}
if (code == 't')
......@@ -274,129 +234,296 @@ void MyQT::cb_keyPress(int code)
}
}
Dart embedCube()
Dart Tuto5::embedCube()
{
Dart d = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(myMap,6);
Dart d = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,6);
myMap.closeMap();
m.closeMap();
Dart dres = d;
position[d] = PFP::VEC3(0,0,0);
position[myMap.phi1(d)] = PFP::VEC3(1,0,0);
position[myMap.phi1(myMap.phi1(d))] = PFP::VEC3(1,0,1);
position[myMap.phi_1(d)] = PFP::VEC3(0,0,1);
d = myMap.phi_1(myMap.phi2(myMap.phi_1(myMap.phi_1(myMap.phi2(myMap.phi_1(d))))));
position[m.phi1(d)] = PFP::VEC3(1,0,0);
position[m.phi1(m.phi1(d))] = PFP::VEC3(1,0,1);
position[m.phi_1(d)] = PFP::VEC3(0,0,1);
d = m.phi_1(m.phi2(m.phi_1(m.phi_1(m.phi2(m.phi_1(d))))));
position[d] = PFP::VEC3(1,1,0);
position[myMap.phi1(d)] = PFP::VEC3(0,1,0);
position[myMap.phi1(myMap.phi1(d))] = PFP::VEC3(0,1,1);
position[myMap.phi_1(d)] = PFP::VEC3(1,1,1);
position[m.phi1(d)] = PFP::VEC3(0,1,0);
position[m.phi1(m.phi1(d))] = PFP::VEC3(0,1,1);
position[m.phi_1(d)] = PFP::VEC3(1,1,1);
return myMap.phi2(myMap.phi1(dres));
return m.phi2(m.phi1(dres));
}
Dart embedCube2()
Dart Tuto5::embedCube2()
{
Dart d = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(myMap,6);
Dart d = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,6);
myMap.closeMap();
m.closeMap();
Dart dres = d;
position[d] = PFP::VEC3(2,0,0);
position[myMap.phi1(d)] = PFP::VEC3(3,0,0);
position[myMap.phi1(myMap.phi1(d))] = PFP::VEC3(3,0,1);
position[myMap.phi_1(d)] = PFP::VEC3(2,0,1);
d = myMap.phi_1(myMap.phi2(myMap.phi_1(myMap.phi_1(myMap.phi2(myMap.phi_1(d))))));
position[m.phi1(d)] = PFP::VEC3(3,0,0);
position[m.phi1(m.phi1(d))] = PFP::VEC3(3,0,1);
position[m.phi_1(d)] = PFP::VEC3(2,0,1);
d = m.phi_1(m.phi2(m.phi_1(m.phi_1(m.phi2(m.phi_1(d))))));
position[d] = PFP::VEC3(3,1,0);
position[myMap.phi1(d)] = PFP::VEC3(2,1,0);
position[myMap.phi1(myMap.phi1(d))] = PFP::VEC3(2,1,1);
position[myMap.phi_1(d)] = PFP::VEC3(3,1,1);
position[m.phi1(d)] = PFP::VEC3(2,1,0);
position[m.phi1(m.phi1(d))] = PFP::VEC3(2,1,1);
position[m.phi_1(d)] = PFP::VEC3(3,1,1);
return m.phi2(m.phi_1(dres));
}
Dart Tuto5::embedMapCollapse()
{
return myMap.phi2(myMap.phi_1(dres));
Dart dd = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
Dart t1 = dd;
// plongement
position[t1] = PFP::VEC3(0.0f, 0.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.0f, -2.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.f, -1.f, -1.f);
t1 = m.phi_1(m.phi2(dd));
position[t1] = PFP::VEC3(-0.5f, -1.f, 0.f);
Dart ee = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(dd,ee);
t1 = ee;
// plongement
position[t1] = PFP::VEC3(0.0f, -2.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.0f, 0.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.f, -1.f, -1.f);
t1 = m.phi_1(m.phi2(ee));
position[t1] = PFP::VEC3(1.f, -1.f, 0.f);
Dart ff = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(m.phi2(dd),ff);
t1 = ff;
// plongement
position[t1] = PFP::VEC3(0.0f, 0.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.0f, -2.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(-0.5f, -1.f, 0.f);
t1 = m.phi_1(m.phi2(ff));
position[t1] = PFP::VEC3(0.f, -1.f, 1.f);
Dart gg = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(gg,m.phi2(ee));
m.sewVolumes(m.phi2(gg),m.phi2(ff));
t1 = gg;
// plongement
position[t1] = PFP::VEC3(0.0f, -2.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.0f, 0.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(1.f, -1.f, 0.f);
t1 = m.phi_1(m.phi2(gg));
position[t1] = PFP::VEC3(0.f, -1.f, 1.f);
Dart hh = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(m.phi2(m.phi_1(dd)),hh);
t1 = hh;
// plongement
position[t1] = PFP::VEC3(0.0f, -1.0f, -1.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.0f, 0.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(-0.5f, -1.f, 0.f);
t1 = m.phi_1(m.phi2(hh));
position[t1] = PFP::VEC3(0.f, -0.2f, -0.8f);
Dart jj = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(jj,m.phi<12>(ee));
t1 = jj;
// plongement
position[t1] = PFP::VEC3(0.0f, 0.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.0f, -1.0f, -1.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(1.f, -1.f, 0.f);
t1 = m.phi_1(m.phi2(jj));
position[t1] = PFP::VEC3(0.f, -0.2f, -0.8f);
Dart kk = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(kk,m.phi<12>(dd));
t1 = kk;
// plongement
position[t1] = PFP::VEC3(0.0f, -2.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.0f, -1.0f, -1.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(-0.5f, -1.f, 0.f);
t1 = m.phi_1(m.phi2(kk));
position[t1] = PFP::VEC3(0.f, -1.8f, -0.6f);
Dart ll = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(ll,m.phi2(m.phi_1(ee)));
t1 = ll;
// plongement
position[t1] = PFP::VEC3(0.0f, -1.0f, -1.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.0f, -2.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(1.f, -1.f, 0.f);
t1 = m.phi_1(m.phi2(ll));
position[t1] = PFP::VEC3(0.f, -1.8f, -0.6f);
/*4 tetra du pourtout de devant */
Dart mm = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(mm,m.phi2(m.phi_1(ff)));
t1 = mm;
// plongement
position[t1] = PFP::VEC3(-0.5f, -1.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.0f, 0.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.f, -1.f, 1.f);
t1 = m.phi_1(m.phi2(mm));
position[t1] = PFP::VEC3(0.f, -0.2f, 0.8f);
Dart ww = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(ww,m.phi<12>(gg));
t1 = ww;
// plongement
position[t1] = PFP::VEC3(0.f, 0.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(1.0f, -1.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.f, -1.f, 1.f);
t1 = m.phi_1(m.phi2(ww));
position[t1] = PFP::VEC3(0.f, -0.2f, 0.8f);
Dart xx = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(xx,m.phi<12>(ff));
t1 = xx;
// plongement
position[t1] = PFP::VEC3(0.f, -2.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(-0.5f, -1.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.f, -1.f, 1.f);
t1 = m.phi_1(m.phi2(xx));
position[t1] = PFP::VEC3(0.f, -1.6f, 0.6f);
Dart cc = Algo::Modelisation::Polyhedron<PFP>::createPolyhedron(m,4);
m.closeMap();
m.sewVolumes(cc,m.phi2(m.phi_1(gg)));
t1 = cc;
// plongement
position[t1] = PFP::VEC3(1.f, -1.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.f, -2.0f, 0.0f);
t1 = m.phi1(t1);
position[t1] = PFP::VEC3(0.f, -1.f, 1.f);
t1 = m.phi_1(m.phi2(cc));
position[t1] = PFP::VEC3(0.f, -1.6f, 0.6f);
return dd;
}
int main(int argc, char **argv)
{
position = myMap.addAttribute<PFP::VEC3>(VERTEX, "position");
Dart d1 = embedCube() ;
Dart d2 = embedCube2() ;
// un peu d'interface
QApplication app(argc, argv);
Tuto5 sqt;
Dart dd = myMap.phi2(d1) ;
myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
sqt.position = sqt.m.addAttribute<PFP::VEC3>(VERTEX, "position");
myMap.sewVolumes(d1, d2);
Dart d1 = sqt.embedMapCollapse();
myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
sqt.m.check() ;
std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
myMap.mergeVolumes(d1) ;
myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
sqt.m.collapseEdge(d1);
sqt.m.check() ;
std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
std::vector<Dart> v ;
v.push_back(dd) ;
dd = myMap.phi1(myMap.phi2(myMap.phi1(dd))) ;
v.push_back(dd) ;
dd = myMap.phi1(myMap.phi2(myMap.phi1(dd))) ;
v.push_back(dd) ;
dd = myMap.phi1(myMap.phi2(myMap.phi1(dd))) ;
v.push_back(dd) ;
// Dart d1 = sqt.embedCube() ;
// Dart d2 = sqt.embedCube2() ;
//
// Dart dd = sqt.m.phi2(d1) ;
myMap.splitVolume(v) ;
// sqt.m.check() ;
// std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
// sqt.m.sewVolumes(d1, d2);
Dart f = myMap.phi2(v.front()) ;
Dart f3 = myMap.phi3(f) ;
myMap.unsewVolumes(f) ;
// sqt.m.check() ;
// std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
// sqt.m.mergeVolumes(d1) ;
myMap.sewVolumes(f, f3) ;
// sqt.m.check() ;
// std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
// std::vector<Dart> v ;
// v.push_back(dd) ;
// dd = sqt.m.phi1(sqt.m.phi2(sqt.m.phi1(dd))) ;
// v.push_back(dd) ;
// dd = sqt.m.phi1(sqt.m.phi2(sqt.m.phi1(dd))) ;
// v.push_back(dd) ;
// dd = sqt.m.phi1(sqt.m.phi2(sqt.m.phi1(dd))) ;
// v.push_back(dd) ;
//
// sqt.m.splitVolume(v) ;
myMap.splitFace(f, myMap.phi1(myMap.phi1(f))) ;
// sqt.m.check() ;
// std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
// Dart f = sqt.m.phi2(v.front()) ;
// Dart f3 = sqt.m.phi3(f) ;
// sqt.m.unsewVolumes(f) ;
PFP::VEC3 p = position[f] + position[myMap.phi_1(f)] ;
p /= 2.0 ;
myMap.cutEdge(myMap.phi_1(f)) ;
position[myMap.phi_1(f)] = p ;
// sqt.m.check() ;
// std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
// sqt.m.sewVolumes(f, f3) ;
myMap.uncutEdge(myMap.phi_1(myMap.phi_1(f))) ;
// sqt.m.check() ;
// std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
// sqt.m.splitFace(f, sqt.m.phi1(sqt.m.phi1(f))) ;
myMap.deleteVolume(f) ;
// sqt.m.check() ;
// std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
myMap.check() ;
std::cout << "nb darts -> " << myMap.getNbDarts() << std::endl ;
// PFP::VEC3 p = sqt.position[f] + sqt.position[sqt.m.phi_1(f)] ;
// p /= 2.0 ;
// sqt.m.cutEdge(sqt.m.phi_1(f)) ;
// sqt.position[sqt.m.phi_1(f)] = p ;
// Algo::Modelisation::Primitive3D<PFP> prim(myMap, position);
//
// int nb=3;
// if (argc>1)
// nb = atoi(argv[1]);
// dglobal = prim.hexaGrid_topo(nb,nb,nb);
// prim.embedHexaGrid(1.0f,1.0f,1.0f);
//
// myMap.closeMap();
// sqt.m.check() ;
// std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
// sqt.m.uncutEdge(sqt.m.phi_1(sqt.m.phi_1(f))) ;
// sqt.m.check() ;
// std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
// sqt.m.deleteVolume(f) ;
// sqt.m.check() ;
// std::cout << "nb darts -> " << sqt.m.getNbDarts() << std::endl ;
// un peu d'interface
QApplication app(argc, argv);
MyQT sqt;
// interface de tuto5.ui
Utils::QT::uiDockInterface dock;
......@@ -405,17 +532,8 @@ int main(int argc, char **argv)
// message d'aide
sqt.setHelpMsg("Enter pour dock on/off\nShift Enter pour console on/off\nShift Click gauche pour selectionner un brin");
CGoGNout.toStatusBar(&sqt);
CGoGNout << "CGoGNOut StatusBar" << Geom::Vec3f(2.5f, 2.2f, 4.3f) << CGoGNendl;
CGoGNout.toConsole(&sqt);
CGoGNout << "CGoGNOut dans la console" << Geom::Vec3f(2.5f, 2.2f, 4.3f) << CGoGNendl;
CGoGNout.toStatusBar(NULL);
// bounding box
Geom::BoundingBox<PFP::VEC3> bb = Algo::Geometry::computeBoundingBox<PFP>(myMap, position);
Geom::BoundingBox<PFP::VEC3> bb = Algo::Geometry::computeBoundingBox<PFP>(sqt.m, sqt.position);
float lWidthObj = std::max<PFP::REAL>(std::max<PFP::REAL>(bb.size(0), bb.size(1)), bb.size(2));
Geom::Vec3f lPosObj = (bb.min() + bb.max()) / PFP::REAL(2);
......@@ -437,14 +555,6 @@ int main(int argc, char **argv)
sqt.slider_vectors(50);
sqt.slider_text(50);
GLint texSize;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize);
CGoGNdbg.toConsole(&sqt);
CGoGNerr.toConsole(&sqt);
CGoGNdbg << " TextureSize " << texSize << CGoGNendl;
CGoGNerr << " test ERROR " << 5*7 << CGoGNflush;
// et on attend la fin.
return app.exec();
......
......@@ -24,27 +24,43 @@
#ifndef __TUTO5_
#define __TUTO5_
#include <iostream>
#include "Topology/generic/parameters.h"
#include "Topology/map/embeddedMap3.h"
#include "Geometry/vector_gen.h"
#include "Algo/Geometry/boundingbox.h"
#include "Algo/Render/GL2/mapRender.h"
#include "Algo/Render/GL2/topo3Render.h"