FlyoDoc_2011 Pisa 2011 by GmP --- 011
|
#include <devotot.h>
Public Member Functions | |
virtual int | Posizione () |
virtual double | CamInter () |
virtual double | CamBuco () |
virtual void | Prgeom () |
Protected Attributes | |
gvet | Dins |
gvet | Dind |
gvet | P_Cin |
gvet | Dinrs |
gvet | Dinrd |
gvet | P_Crot |
gvet | V_rot |
double DevOtOt::CamInter | ( | ) | [virtual] |
poi verifico se colpisce le pareti del buco .....
Reimplemented from DevOt.
Definition at line 72 of file devotot.cpp.
{ //uso quella di DevRt per calcolare il cammino // interno senza il buco... double tratto=DevOt::CamInter(); double nv,t; camm=-1.; // calcolo il cammino positivo verso le otto+2 superfici del buco. Per dist>0 // scelgo il cammino maggiore if((nv=V_dev[0])>0.0 && Dins[0]>0.0) // piani x {t=Dins[0]/nv; if(t>camm)camm=t;} else if(nv<0.0 && Dind[0]>0.0) {t=-Dind[0]/nv; if(t>camm)camm=t;} if((nv=V_dev[1])>0.0 && Dins[1]>0.0) // piani y {t=Dins[1]/nv; if(t>camm)camm=t;} else if(nv<0.0 && Dind[1]>0.0) {t=-Dind[1]/nv; if(t>camm)camm=t;} if((nv=V_dev[2])>0.0 && Dins[2]>0.0) // piani z {t=Dins[2]/nv; if(t>camm)camm=t;} else if(nv<0.0 && Dind[2]>0.0) {t=-Dind[2]/nv; if(t>camm)camm=t;} // roto di 45 gradi per controllare il moto rispetto ai piani inclinati... V_rot.setvn(Firot*(V_dev[0]+V_dev[1]),Firot*(V_dev[1]-V_dev[0]), V_dev[2]); if((nv=V_rot[0])>0.0 && Dinrs[0]>0.0) // piani x {t=Dinrs[0]/nv; if(t>camm)camm=t;} else if(nv<0.0 && Dinrd[0]>0.0) {t=-Dinrd[0]/nv; if(t>camm)camm=t;} if((nv=V_rot[1])>0.0 && Dinrs[1]>0.0) // piani y {t=Dinrs[1]/nv; if(t>camm)camm=t;} else if(nv<0.0 && Dind[1]>0.0) {t=-Dinrd[1]/nv; if(t>camm)camm=t;} // test su zeta non serve // quindi confronto camm con tratto e accetto il cammino piu' breve...... if(camm<0.0) {camm=tratto; return camm;} if(camm>0.0 && tratto<camm) camm=tratto; return camm; }