diff --git a/Geo/CAD.cpp b/Geo/CAD.cpp index 7a00a7728ce4ed3275307e1fd4b3b6f893a879e4..38251852a0243d0b4d8810c9076001953cc10752 100644 --- a/Geo/CAD.cpp +++ b/Geo/CAD.cpp @@ -1,4 +1,4 @@ -// $Id: CAD.cpp,v 1.72 2004-03-03 22:25:08 geuzaine Exp $ +// $Id: CAD.cpp,v 1.73 2004-04-01 18:06:45 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -132,30 +132,6 @@ int compare2Lists(List_T * List1, List_T * List2, return 0; } -void dist_ddg(double x1, double y1, double z1, - double x2, double y2, double z2, - double x3, double y3, double z3, - double x4, double y4, double z4, - double *x, double *y, double *z) -{ - double v[3], u[3], d; - - u[0] = x1 - x3; - u[1] = y1 - y3; - u[2] = z1 - z3; - - v[0] = x4 - x3; - v[1] = y4 - y3; - v[2] = z4 - z3; - - norme(v); - prosca(u, v, &d); - - *x = d * x4 + x3 * (1. - d); - *y = d * y4 + y3 * (1. - d); - *z = d * z4 + z3 * (1. - d); -} - Vertex *FindPoint(int inum, Mesh * M) { Vertex C, *pc; @@ -1193,15 +1169,20 @@ int Extrude_ProtudePoint(int type, int ip, c->Extrude->fill(type, T0, T1, T2, A0, A1, A2, X0, X1, X2, alpha); if(e) c->Extrude->mesh = e->mesh; - List_Add(c->Control_Points, &pv); - dist_ddg(pv->Pos.X, pv->Pos.Y, pv->Pos.Z, - chapeau->Pos.X, chapeau->Pos.Y, chapeau->Pos.Z, - X0, X1, X2, X0 + A0, X1 + A1, X2 + A2, &xnew, &ynew, &znew); + // compute circle center newp = DuplicateVertex(pv); - newp->Pos.X = xnew; - newp->Pos.Y = ynew; - newp->Pos.Z = znew; + Ax[0] = A0; + Ax[1] = A1; + Ax[2] = A2; + norme(Ax); + T[0] = pv->Pos.X - X0; + T[1] = pv->Pos.Y - X1; + T[2] = pv->Pos.Z - X2; + prosca(T, Ax, &d); + newp->Pos.X = X0 + d * Ax[0]; + newp->Pos.Y = X1 + d * Ax[1]; + newp->Pos.Z = X2 + d * Ax[2]; List_Add(c->Control_Points, &newp); List_Add(c->Control_Points, &chapeau); c->beg = pv;