Cylindre.cpp #include "Vect3D.h" #include "Cylindre.h" #include "Vect3D.h" #include "Railum.h" #include "Triangle.h" #include Intersc::Intersc(const Vect3D & p, int i):positionlum(p),intensiteIntersc(i){} Cylindre::Cylindre(const Vect3D &pc, const Vect3D &d, double &r):positionc(pc),directionc(d),rayonc(r){} Cylindre.h #ifndef _CYLINDRE_H #define _CYLINDRE_H #include "Vect3D.h" #include "Railum.h" #include "Triangle.h" #include class Intersc {Vect3D positionlum; int intensiteIntersc; public: Intersc(const Vect3D & = Vect3D(0,0,0), const int = 0); Vect3D & getPositionlum(){ return positionlum;}; const Vect3D & getPositionlum()const { return positionlum;}; int & getIntensitec(){ return intensiteIntersc;}; const int & getIntensitec()const { return intensiteIntersc;};}; class Cylindre { Vect3D positionc; Vect3D directionc; double rayonc; public: Cylindre(const Vect3D & = Vect3D(0,0,0),const Vect3D & = Vect3D(0,0,0),double = 0); Vect3D & getPositionc(){ return positionc;}; const Vect3D & getPositionc() const{ return positionc;}; Vect3D & getDirectionc(){ return directionc;}; const Vect3D & getDirectionc() const{ return directionc;}; double & getrayonc(){ return rayonc;}; double rayoncalcule(Railum & railum1,Triangle & t1){ double b; Vect3D sommetA; Vect3D sommetB; Vect3D sommetD; sommetA=positionc; sommetB=positionc-railum1.reflexion(t1); sommetD=positionc+directionc; b=90-acos(abs(dotProduct(sommetB-sommetA,sommetD-sommetA))/((sommetB-sommetA).norm()*(sommetD-sommetA).norm())); double temp=rayonc/sin(b); return temp;};}; #endif