Skip to content
Snippets Groups Projects
Commit 750cea65 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

cleanuip (removed duplicate code) + new function u() to get the abscissa
more easily
parent b70454f5
No related branches found
No related tags found
No related merge requests found
// $Id: ExtrudeParams.cpp,v 1.15 2004-02-07 01:40:19 geuzaine Exp $ // $Id: ExtrudeParams.cpp,v 1.16 2004-04-18 03:09:01 geuzaine Exp $
// //
// Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
// //
...@@ -67,55 +67,8 @@ void ExtrudeParams::fill(int type, ...@@ -67,55 +67,8 @@ void ExtrudeParams::fill(int type,
void ExtrudeParams::Extrude(int iLayer, int iElemLayer, void ExtrudeParams::Extrude(int iLayer, int iElemLayer,
double &x, double &y, double &z) double &x, double &y, double &z)
{ {
double dx0, dy0, dz0, dx1, dy1, dz1; double t = u(iLayer, iElemLayer);
double dx, dy, dz, angle; Extrude(t, x, y, z);
if(!iLayer) {
dx0 = dy0 = dz0 = 0.0;
dx1 = mesh.hLayer[0];
dy1 = mesh.hLayer[0];
dz1 = mesh.hLayer[0];
}
else {
dx0 = mesh.hLayer[iLayer - 1];
dy0 = mesh.hLayer[iLayer - 1];
dz0 = mesh.hLayer[iLayer - 1];
dx1 = mesh.hLayer[iLayer];
dy1 = mesh.hLayer[iLayer];
dz1 = mesh.hLayer[iLayer];
}
double t = (double)iElemLayer / (double)mesh.NbElmLayer[iLayer];
switch (geo.Type) {
case TRANSLATE:
dx = geo.trans[0] * (dx0 + t * (dx1 - dx0));
dy = geo.trans[1] * (dy0 + t * (dy1 - dy0));
dz = geo.trans[2] * (dz0 + t * (dz1 - dz0));
x += dx;
y += dy;
z += dz;
break;
case ROTATE:
angle = geo.angle;
geo.angle = geo.angle * (dx0 + t * (dx1 - dx0));
ProtudeXYZ(x, y, z, this);
geo.angle = angle;
break;
case TRANSLATE_ROTATE:
angle = geo.angle;
geo.angle = geo.angle * (dx0 + t * (dx1 - dx0));
ProtudeXYZ(x, y, z, this);
geo.angle = angle;
dx = geo.trans[0] * (dx0 + t * (dx1 - dx0));
dy = geo.trans[1] * (dy0 + t * (dy1 - dy0));
dz = geo.trans[2] * (dz0 + t * (dz1 - dz0));
x += dx;
y += dy;
z += dz;
break;
default:
Msg(GERROR, "Unknown extrusion type");
break;
}
} }
void ExtrudeParams::Rotate(double matr[3][3]) void ExtrudeParams::Rotate(double matr[3][3])
...@@ -162,3 +115,19 @@ void ExtrudeParams::Extrude(double t, double &x, double &y, double &z) ...@@ -162,3 +115,19 @@ void ExtrudeParams::Extrude(double t, double &x, double &y, double &z)
break; break;
} }
} }
double ExtrudeParams::u(int iLayer, int iElemLayer)
{
double t0, t1;
if(!iLayer) {
t0 = 0.0;
t1 = mesh.hLayer[0];
}
else {
t0 = mesh.hLayer[iLayer - 1];
t1 = mesh.hLayer[iLayer];
}
double t = (double)iElemLayer / (double)mesh.NbElmLayer[iLayer];
return t0 + t * (t1 - t0);
}
...@@ -38,6 +38,7 @@ public : ...@@ -38,6 +38,7 @@ public :
double T0, double T1, double T2, double T0, double T1, double T2,
double A0, double A1, double A2, double A0, double A1, double A2,
double X0, double X1, double X2, double angle); double X0, double X1, double X2, double angle);
double u(int iLayer, int iElemLayer);
void Extrude(int iLayer, int iElemLayer, void Extrude(int iLayer, int iElemLayer,
double &dx, double &dy, double &dz); double &dx, double &dy, double &dz);
void Extrude(double t, double &x, double &y, double &z); void Extrude(double t, double &x, double &y, double &z);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment