#include <Modeleur.hpp>
Inheritance diagram for RotProfToProfAxisCAO::
Public Methods | |
RotProfToProfAxisCAO (Cardinal c, Sommet3D *pf, Sommet3D *pf1, double a, UINT p, Vector3D &v, char *name=NULL) | |
int | GenerateVertex (FILE *f) |
numerotation * | AllocNumerotation () |
char * | GetErrorMsg () |
Public Attributes | |
double | angle |
Sommet3D * | profil1 |
|
Definition at line 71 of file Modeleur.hpp. |
|
Reimplemented from AxisCAO. Definition at line 169 of file Modeleur.cpp. 00170 { 00171 if ( globalresult.type.phor == HOR_CLOSE ) 00172 { 00173 if ( globalresult.type.pvert == VERT_OPEN ) 00174 switch ( globalresult.type.ponaxis ) 00175 { 00176 case EXTR_BOTH : return new FermeOuvertOnAxisBoth(pas-1,cardprofil-1); 00177 case EXTR_SUP : return new FermeOuvertOnAxisSup(pas-1,cardprofil-1); 00178 case EXTR_INF : return new FermeOuvertOnAxisInf(pas-1,cardprofil-1); 00179 default : return new FermeOuvert(pas-1,cardprofil-1) ; 00180 } 00181 return new FermeFerme(pas-1,cardprofil-2); // le dernier point 00182 // est suprimé !!! 00183 } 00184 00185 if ( globalresult.type.pvert == VERT_CLOSE ) 00186 return new OuvertFerme(pas-1,cardprofil-2); 00187 00188 switch ( globalresult.type.ponaxis ) 00189 { 00190 case EXTR_BOTH : return new OuvertOuvertOnAxisBoth(pas-1,cardprofil-1); 00191 case EXTR_SUP : return new OuvertOuvertOnAxisSup(pas-1,cardprofil-1); 00192 case EXTR_INF : return new OuvertOuvertOnAxisInf(pas-1,cardprofil-1); 00193 default : return new OuvertOuvert(pas-1,cardprofil-1) ; 00194 } 00195 } |
|
Reimplemented from AxisCAO. Definition at line 77 of file Modeleur.cpp. 00078 { 00079 int error; 00080 Sommet3D* tbl; 00081 UINT card; 00082 00083 realtype sinalpha, cosalpha, 00084 sinbeta, cosbeta, 00085 lgr, x, y, z; 00086 00087 x = axis.b.x - axis.a.x; 00088 y = axis.b.y - axis.a.y; 00089 z = axis.b.z - axis.a.z; 00090 lgr = sqrt( x*x + y*y + z*z ); 00091 00092 /* 90-beta; 90-alpha;*/ 00093 00094 cosalpha = (z == 0)?(0):(lgr/z); 00095 sinalpha = sqrt( 1 - (cosalpha*cosalpha) ); 00096 cosbeta = (x == 0)?(0):(lgr/x); 00097 sinbeta = sqrt( 1-(cosbeta*cosbeta)); 00098 00099 // on effectue les changements de repere vers l'axe Z. 00100 // --------------------------------------------------- 00101 00102 for( UINT i = 0; i != cardprofil; i++ ) { 00103 TransVertex ( profil+i, -axis.a.x, -axis.a.y, -axis.a.z ); 00104 RotateVertex( profil+i, cosbeta, sinbeta, Z_AXIS ); 00105 RotateVertex( profil+i, cosalpha, -sinalpha, Y_AXIS ); 00106 }; 00107 00108 // on génère la forme. 00109 // ------------------- 00110 if ( ( error = ModeleurRotationZ( 00111 profil, 00112 profil1, 00113 (UINT) cardprofil, 00114 &tbl, 00115 &card, 00116 &(globalresult.type), 00117 angle, 00118 pas 00119 00120 ) ) != SUCCESS ) return globalresult.error =error; 00121 00122 // On retransforme en inverse. 00123 // -------------------------- 00124 // nb- On rappelle : cos(-a) = cos (a) et sin(-a) = -sin(a). 00125 // --------------------------------------------------------- 00126 for ( i = 0; i != card; i++ ) 00127 { 00128 RotateVertex( tbl+i, cosalpha, sinalpha, Y_AXIS ); 00129 RotateVertex( tbl+i, cosbeta, -sinbeta, Z_AXIS ); 00130 TransVertex ( tbl+i, axis.a.x, axis.a.y, axis.a.z ); 00131 } 00132 for ( i = 0; i != cardprofil; i++ ) 00133 { 00134 RotateVertex( profil+i, cosalpha, sinalpha, Y_AXIS ); 00135 RotateVertex( profil+i, cosbeta, -sinbeta, Z_AXIS ); 00136 TransVertex ( profil+i, axis.a.x, axis.a.y, axis.a.z ); 00137 } 00138 00139 // La boite limite. 00140 // ---------------- 00141 BoiteLim bl; 00142 SetBoiteLimite( tbl, card,&bl ); 00143 00144 // On sauve sur fichier. 00145 // --------------------- 00146 if ( fprintf ( f, "%f %f %f %f %f %f\n%u\n", bl.S1.x, 00147 bl.S1.y, 00148 bl.S1.z, 00149 bl.S2.x, 00150 bl.S2.y, 00151 bl.S2.z, 00152 card ) == EOF ) 00153 return globalresult.error =MOD_SOM_ERROR_BAD_FIC_WRITE; 00154 00155 for ( i = 0; i != card; i++ ) 00156 if ( fprintf ( f, "%lf %lf %lf\n", tbl[i].x, 00157 tbl[i].y, 00158 tbl[i].z ) == EOF ) 00159 return globalresult.error =MOD_SOM_ERROR_BAD_FIC_WRITE; 00160 00161 fprintf ( f, "\n" ); 00162 00163 // on met à jour les renseignements. 00164 // --------------------------------- 00165 globalresult.cardsommet = card; 00166 00167 return SUCCESS; } |
|
Reimplemented from AxisCAO. Definition at line 336 of file Modeleur.cpp. 00336 { 00337 if ( globalresult.error >= __ReservedMsg) 00338 return G_modetbmsg[ globalresult.error - __ReservedMsg ]; 00339 return GetModelRotatErrorMsg( globalresult.error ); 00340 } |
|
Definition at line 68 of file Modeleur.hpp. |
|
Definition at line 69 of file Modeleur.hpp. |