Mathc initiation/a452
Apparence
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));
}
/* ---------------------------------- */
/* ---------------------------------- */