From f164e0dfd1bb9d882c3598d15e3080d83b316a20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=B6bius?= Date: Tue, 24 Jul 2012 16:57:39 +0000 Subject: [PATCH] Added cylinder generator git-svn-id: http://www.openflipper.org/svnrepo/OpenFlipper/branches/Free@15082 383ad7c9-94d9-4d36-a494-682f7c89f535 --- .../Icons/primitive_cylinder.png | Bin 0 -> 27063 bytes .../PrimitivesGenerator.cc | 155 +++++++++++++++++- .../PrimitivesGenerator.hh | 2 + .../userDoc/images/primitive_cylinder.png | Bin 0 -> 67179 bytes 4 files changed, 149 insertions(+), 8 deletions(-) create mode 100644 Plugin-PrimitivesGenerator/Icons/primitive_cylinder.png create mode 100644 Plugin-PrimitivesGenerator/userDoc/images/primitive_cylinder.png diff --git a/Plugin-PrimitivesGenerator/Icons/primitive_cylinder.png b/Plugin-PrimitivesGenerator/Icons/primitive_cylinder.png new file mode 100644 index 0000000000000000000000000000000000000000..755ba53281afaf31c0c4059047bb74f9184adb32 GIT binary patch literal 27063 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 R;1x>{-P?xRRho`5{|6W!N+tjR literal 0 HcmV?d00001 diff --git a/Plugin-PrimitivesGenerator/PrimitivesGenerator.cc b/Plugin-PrimitivesGenerator/PrimitivesGenerator.cc index eb5c87696..9d1aa1c40 100644 --- a/Plugin-PrimitivesGenerator/PrimitivesGenerator.cc +++ b/Plugin-PrimitivesGenerator/PrimitivesGenerator.cc @@ -63,13 +63,14 @@ PrimitivesGeneratorPlugin::~PrimitivesGeneratorPlugin() void PrimitivesGeneratorPlugin::initializePlugin() { - emit setSlotDescription("addTetrahedron()" ,tr("Generates a tetrahedron (ObjectId is returned)") ,QStringList(), QStringList()); - emit setSlotDescription("addTriangulatedCube()",tr("Generates a cube (ObjectId is returned)") ,QStringList(), QStringList()); - emit setSlotDescription("addIcosahedron()" ,tr("Generates an icosahedron (ObjectId is returned)") ,QStringList(), QStringList()); - emit setSlotDescription("addPyramid()" ,tr("Generates a pyramid (ObjectId is returned)") ,QStringList(), QStringList()); - emit setSlotDescription("addOctahedron()" ,tr("Generates an octahedron (ObjectId is returned)") ,QStringList(), QStringList()); - emit setSlotDescription("addDodecahedron()" ,tr("Generates a dodecahedron (ObjectId is returned)") ,QStringList(), QStringList()); - emit setSlotDescription("addSphere()" ,tr("Generates a sphere (ObjectId is returned)") ,QStringList(), QStringList()); + emit setSlotDescription("addTetrahedron()" ,tr("Generates a tetrahedron (ObjectId is returned)") ,QStringList(), QStringList()); + emit setSlotDescription("addTriangulatedCube()" ,tr("Generates a cube (ObjectId is returned)") ,QStringList(), QStringList()); + emit setSlotDescription("addIcosahedron()" ,tr("Generates an icosahedron (ObjectId is returned)") ,QStringList(), QStringList()); + emit setSlotDescription("addPyramid()" ,tr("Generates a pyramid (ObjectId is returned)") ,QStringList(), QStringList()); + emit setSlotDescription("addOctahedron()" ,tr("Generates an octahedron (ObjectId is returned)") ,QStringList(), QStringList()); + emit setSlotDescription("addDodecahedron()" ,tr("Generates a dodecahedron (ObjectId is returned)") ,QStringList(), QStringList()); + emit setSlotDescription("addSphere()" ,tr("Generates a sphere (ObjectId is returned)") ,QStringList(), QStringList()); + emit setSlotDescription("addTriangulatedCylinder()" ,tr("Generates a triangulated cylinder (ObjectId is returned)") ,QStringList(), QStringList()); } void PrimitivesGeneratorPlugin::pluginsInitialized() { @@ -110,6 +111,10 @@ void PrimitivesGeneratorPlugin::pluginsInitialized() { action->setIcon(*icon); whatsThisGen.setWhatsThis(action,tr("Create a Pyramid."),"Pyramid"); + action = primitivesMenu->addAction("Cylinder (Triangle Mesh)" ,this,SLOT(addTriangulatedCylinder())); + icon = new QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"primitive_cylinder.png"); + action->setIcon(*icon); + action = primitivesMenu->addAction("Sphere",this,SLOT(addSphere())); icon = new QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"primitive_sphere.png"); action->setIcon(*icon); @@ -124,7 +129,6 @@ void PrimitivesGeneratorPlugin::pluginsInitialized() { } - int PrimitivesGeneratorPlugin::addTriMesh() { int objectId = -1; @@ -252,11 +256,145 @@ int PrimitivesGeneratorPlugin::addTriangulatedCube() { return -1; } +//======================================================================== +// Cylinder +//======================================================================== + + +ACG::Vec3d PrimitivesGeneratorPlugin::positionOnCylinder(int _sliceNumber, int _stackNumber) +{ + ACG::Vec3d position; + + const double height = 5.0; + const double ringRadius = 1.0; + + //double alpha = (M_PI / double(stacks_)) * double(_stackNumber); + double beta = ((2.0 * M_PI) / double(slices_)) * double(_sliceNumber); + + if ( _sliceNumber == 0 && _stackNumber == 0) { + position[0] = 0.0; + position[1] = 0.0; + position[2] = height; + } else if ( _sliceNumber == slices_ && _stackNumber == stacks_ ) { + position[0] = 0.0; + position[1] = 0.0; + position[2] = 0.0; + } else { + position[0] = sin(beta) * ringRadius; + position[1] = cos(beta) * ringRadius; + position[2] = height * double(stacks_ - _stackNumber -1 ) / double(stacks_-2); + } + + return position; +} + + +int PrimitivesGeneratorPlugin::addTriangulatedCylinder() { + + int newObject = addTriMesh(); + + TriMeshObject* object; + if (!PluginFunctions::getObject(newObject, object)) { + emit log(LOGERR, "Unable to create new Object"); + return -1; + } else { + + object->setName( "Cylinder " + QString::number(newObject) ); + + triMesh_ = object->mesh(); + + triMesh_->clear(); + + //triMesh_->request_vertex_texcoords2D(); + + TriMesh::VertexHandle vh; + + vh = triMesh_->add_vertex(positionOnCylinder(0, 0)); + //triMesh_->set_texcoord2D(vh, texCoordOnSphere(0, 0)); + + for (int st = 1; st < stacks_; ++st) { + for (int sl = 0; sl < slices_; ++sl) { + vh = triMesh_->add_vertex(positionOnCylinder(sl, st)); + //triMesh_->set_texcoord2D(vh, texCoordOnSphere(sl, st)); + } + } + + vh = triMesh_->add_vertex(positionOnCylinder(slices_, stacks_)); + //triMesh_->set_texcoord2D(vh, texCoordOnSphere(slices_, stacks_)); + + std::vector vhandles; + + // Add top triangle fan ( Vertex index is shifted by one for the first slice ) + for (int sl = 1; sl < slices_ + 1; ++sl) { + + vhandles.clear(); + + vhandles.push_back(triMesh_->vertex_handle(sl)); + vhandles.push_back(triMesh_->vertex_handle(0)); + vhandles.push_back(triMesh_->vertex_handle(1 * 1 + (sl % slices_))); + + triMesh_->add_face(vhandles); + } + + for (int st = 0; st < stacks_ - 2; ++st) { + + // Move around one slice + for (int sl = 0; sl < slices_; ++sl) { + + // Offset 1 because of singular vertex + unsigned int startTop = 1 + slices_ * st; + unsigned int startBottom = 1 + slices_ * (st + 1); + + vhandles.clear(); + + vhandles.push_back(triMesh_->vertex_handle(startTop + sl)); + vhandles.push_back(triMesh_->vertex_handle(startTop + ((sl + 1) % slices_))); + vhandles.push_back(triMesh_->vertex_handle(startBottom + sl)); + + triMesh_->add_face(vhandles); + + vhandles.clear(); + + vhandles.push_back(triMesh_->vertex_handle(startBottom + sl)); + vhandles.push_back(triMesh_->vertex_handle(startTop + ((sl + 1) % slices_))); + vhandles.push_back(triMesh_->vertex_handle(startBottom + ((sl + 1) % slices_))); + + triMesh_->add_face(vhandles); + } + + } + + const int startTop = 1 + (stacks_ - 2) * slices_; + const int bottomVertex = 1 + (stacks_ - 1) * slices_; + + // Add bottom triangle fan + for (int sl = 0; sl < slices_; ++sl) { + + vhandles.clear(); + + vhandles.push_back(triMesh_->vertex_handle(bottomVertex)); + vhandles.push_back(triMesh_->vertex_handle(startTop + sl)); + vhandles.push_back(triMesh_->vertex_handle(startTop + ((sl + 1) % slices_))); + + triMesh_->add_face(vhandles); + } + + triMesh_->update_normals(); + + emit updatedObject(newObject,UPDATE_ALL); + + return object->id(); + } + +} + + //======================================================================== // Sphere //======================================================================== + ACG::Vec3d PrimitivesGeneratorPlugin::positionOnSphere(int _sliceNumber, int _stackNumber) { ACG::Vec3d position; @@ -285,6 +423,7 @@ ACG::Vec2f PrimitivesGeneratorPlugin::texCoordOnSphere(int _sliceNumber, int _st return texCoord; } + //------------------------------------------------------------------------ int PrimitivesGeneratorPlugin::addSphere() { diff --git a/Plugin-PrimitivesGenerator/PrimitivesGenerator.hh b/Plugin-PrimitivesGenerator/PrimitivesGenerator.hh index 2b47a7a0a..8e63fd4ed 100644 --- a/Plugin-PrimitivesGenerator/PrimitivesGenerator.hh +++ b/Plugin-PrimitivesGenerator/PrimitivesGenerator.hh @@ -99,6 +99,7 @@ public slots: QString version() { return QString("1.0"); }; + int addTriangulatedCylinder(); int addSphere(); int addTetrahedron(); int addPyramid(); @@ -115,6 +116,7 @@ private: inline void add_face( int _vh1 , int _vh2, int _vh3, int _vh4 , int _vh5 ); + inline ACG::Vec3d positionOnCylinder(int _sliceNumber, int _stackNumber); inline ACG::Vec3d positionOnSphere(int _sliceNumber, int _stackNumber); inline ACG::Vec2f texCoordOnSphere(int _sliceNumber, int _stackNumber); diff --git a/Plugin-PrimitivesGenerator/userDoc/images/primitive_cylinder.png b/Plugin-PrimitivesGenerator/userDoc/images/primitive_cylinder.png new file mode 100644 index 0000000000000000000000000000000000000000..ed3e2be64923566f820886bd21165f1a974e338a GIT binary patch literal 67179 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