Aller au contenu

Mathc initiation/a452

Un livre de Wikilivres.


Installer ce fichier dans votre répertoire de travail.

x_rsxrt.h
/* ---------------------------------- */
/* save as x_rsxrt.h                  */
/* ---------------------------------- */
/*
   with R =    Rx i +  Ry j + Rz k 
   
             |    i       j      k |  
             | Rx_s    Ry_s   Rz_s |  
             | Rx_t    Ry_t   Rz_t |        

  R_s x R_t =   (Ry_s * Rz_t - Ry_t * Rz_s) i  
              - (Rx_s * Rz_t - Rx_t * Rz_s) j  
              + (Rx_s * Ry_t - Rx_t * Ry_s) k  
*/
/* ---------------------------------- */
v3d R_s_x_R_t(

double (*P_Rx)(double s, double t),
double (*P_Ry)(double s, double t),
double (*P_Rz)(double s, double t),

pt2d p
)
{
v3d  V;

          V.i =    fxy_x((*P_Ry),H,p)*fxy_y((*P_Rz),H,p) -
                   fxy_y((*P_Ry),H,p)*fxy_x((*P_Rz),H,p);
                      
          V.j = (-(fxy_x((*P_Rx),H,p)*fxy_y((*P_Rz),H,p) -
                   fxy_y((*P_Rx),H,p)*fxy_x((*P_Rz),H,p)) );
                      
          V.k =    fxy_x((*P_Rx),H,p)*fxy_y((*P_Ry),H,p) -
                   fxy_y((*P_Rx),H,p)*fxy_x((*P_Ry),H,p);

     return(V);
}
/* ---------------------------------- */
/* ---------------------------------- */
double NR_s_x_R_t(

double (*P_Rx)(double s, double t),
double (*P_Ry)(double s, double t),
double (*P_Rz)(double s, double t),

pt2d p
)
{
v3d  V;

          V.i =    fxy_x((*P_Ry),H,p)*fxy_y((*P_Rz),H,p) -
                   fxy_y((*P_Ry),H,p)*fxy_x((*P_Rz),H,p);
                      
          V.j = (-(fxy_x((*P_Rx),H,p)*fxy_y((*P_Rz),H,p) -
                   fxy_y((*P_Rx),H,p)*fxy_x((*P_Rz),H,p)) );
                      
          V.k =    fxy_x((*P_Rx),H,p)*fxy_y((*P_Ry),H,p) -
                   fxy_y((*P_Rx),H,p)*fxy_x((*P_Ry),H,p);

     return(sqrt(V.i*V.i + V.j*V.j + V.k*V.k));
}
/* ---------------------------------- */
/* ---------------------------------- */