|
FlyoDoc_2011 Pisa 2011 by GmP --- 011
|
#include <devcln.h>
Public Member Functions | |
| virtual int | Posizione () |
| virtual double | CamEster () |
| virtual double | CamInter () |
| virtual void | Prgeom () |
Protected Attributes | |
| gvet | Douts |
| gvet | Doutd |
| double | rout |
| double | routq |
| double | drq |
| double | vxyq |
| double DevCln::CamInter | ( | ) | [virtual] |
qui rivedrei ... deve sempre essere t>0!!!!
Reimplemented from Device.
Reimplemented in DevSector.
Definition at line 113 of file devcln.cpp.
{
double b,c,dltq,t,nv;
camm=1.0e+10;
// calcolo il cammino verso le superfici esterne
// quella cilindrica e le basi del cilindro.
// scelgo il cammino positivo minore...
// calcolo il cammino positivo verso la superfice del cilindro interno.
// le soluzioni sono sempre di segno opposto.
if ( vxyq>0.0 )
{
b=V_dev.x*X_dev.x+V_dev.y*X_dev.y;
c=drq-routq; // nota sempre negativo internamente al cilindro.
if ( ( dltq=b*b-vxyq*c ) >=0.0 )
{
t= ( -b + sqrt ( dltq ) ) /vxyq; // Scelgo la soluzione positiva
if ( t>=0.0 ) camm=t;
}
}
// controllo anche la zeta....
if ( ( nv=V_dev.z ) >0.0 ) // piani z
{t=-Doutd.z/nv; if ( t<camm ) camm=t; }
else if ( nv<0.0 )
{t=Douts.z/nv; if ( t<camm ) camm=t; }
return camm;
}