void render_scene(){ Point centreSphere(0,0,0); Point centreCylindre(0,0,0); Vector vecteur(0,30,0); double rayon = 20; double resolution = 0.5; std::vector<Voxel> voxelSphere = sphereVolumique(centreSphere,rayon,1); //affichage(voxelSphere); std::vector<Voxel> voxelCylindre = cylindreVolumique(centreCylindre,vecteur,rayon,1); //soustractionSphereCylindre(centreSphere,rayon,centreCylindre,vecteur, rayon , resolution); intersectionSphereCylindre(centreSphere,rayon,centreCylindre,vecteur, rayon , resolution); //affichage(voxelCylindre); //unionSphereCylindre(voxelSphere, voxelCylindre); }
Vector normaleSommet(std::vector<Triangle> triangles,Point p){ std::vector<Triangle> listeTriangle; for(Triangle t : triangles){ if(t.getSommetA().compare(p) || t.getSommetC().compare(p) || t.getSommetC().compare(p) ){ listeTriangle.push_back(t); } } Vector vecteur(0,0,0); for(Triangle t : listeTriangle){ Vector vecteurTmp = normaleFace(t); vecteur.setX(vecteur.getX() + vecteurTmp.getX()); vecteur.setY(vecteur.getY() + vecteurTmp.getY()); vecteur.setZ(vecteur.getZ() + vecteurTmp.getZ()); } vecteur.setX(vecteur.getX() / listeTriangle.size()); vecteur.setY(vecteur.getY() / listeTriangle.size()); vecteur.setZ(vecteur.getZ() / listeTriangle.size()); vecteur.normalize(); return vecteur; }
void Motif::translater(Translations sens) { QVector3D vecteur(0,0,0); switch (sens) //On prend le repère Cubicle { case Haut : vecteur = QVector3D(0,0,1); break; case Bas : vecteur = QVector3D(0,0,-1); break; case Gauche : vecteur = QVector3D(0,-1,0); break; case Droite : vecteur = QVector3D(0,1,0); break; case Devant : vecteur = QVector3D(1,0,0); break; case Derriere : vecteur = QVector3D(-1,0,0); break; default : ERROR_MSG("Sens inconnu :" << sens); break; } _translation += vecteur; }