mirror of
https://github.com/NGSolve/netgen.git
synced 2024-11-11 16:49:16 +05:00
geometry info for elliptic-cylinder
This commit is contained in:
parent
84fda5f10b
commit
aa805dfafe
@ -79,8 +79,12 @@ namespace netgen
|
|||||||
|
|
||||||
p = ap;
|
p = ap;
|
||||||
n = an;
|
n = an;
|
||||||
n.Normalize();
|
CalcData();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Plane :: CalcData()
|
||||||
|
{
|
||||||
|
n.Normalize();
|
||||||
cxx = cyy = czz = cxy = cxz = cyz = 0;
|
cxx = cyy = czz = cxy = cxz = cyz = 0;
|
||||||
cx = n(0); cy = n(1); cz = n(2);
|
cx = n(0); cy = n(1); cz = n(2);
|
||||||
c1 = - (cx * p(0) + cy * p(1) + cz * p(2));
|
c1 = - (cx * p(0) + cy * p(1) + cz * p(2));
|
||||||
@ -100,9 +104,7 @@ namespace netgen
|
|||||||
p = hp;
|
p = hp;
|
||||||
n = hn;
|
n = hn;
|
||||||
|
|
||||||
cxx = cyy = czz = cxy = cxz = cyz = 0;
|
CalcData();
|
||||||
cx = n(0); cy = n(1); cz = n(2);
|
|
||||||
c1 = - (cx * p(0) + cy * p(1) + cz * p(2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -129,11 +131,7 @@ namespace netgen
|
|||||||
n(1) = coeffs.Elem(5);
|
n(1) = coeffs.Elem(5);
|
||||||
n(2) = coeffs.Elem(6);
|
n(2) = coeffs.Elem(6);
|
||||||
|
|
||||||
n.Normalize();
|
CalcData();
|
||||||
|
|
||||||
cxx = cyy = czz = cxy = cxz = cyz = 0;
|
|
||||||
cx = n(0); cy = n(1); cz = n(2);
|
|
||||||
c1 = - (cx * p(0) + cy * p(1) + cz * p(2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Primitive * Plane :: CreateDefault ()
|
Primitive * Plane :: CreateDefault ()
|
||||||
@ -158,27 +156,21 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//(*testout) << "pos1" << endl;
|
|
||||||
if (fabs (s2.CalcFunctionValue(p)) > eps) return 0;
|
if (fabs (s2.CalcFunctionValue(p)) > eps) return 0;
|
||||||
Vec<3> hv1, hv2;
|
Vec<3> hv1, hv2;
|
||||||
hv1 = n.GetNormal ();
|
hv1 = n.GetNormal ();
|
||||||
hv2 = Cross (n, hv1);
|
hv2 = Cross (n, hv1);
|
||||||
|
|
||||||
Point<3> hp = p + hv1;
|
Point<3> hp = p + hv1;
|
||||||
//(*testout) << "pos2" << endl;
|
|
||||||
//(*testout) << "eps " << eps << " s2.CalcFunctionValue(hp) " << s2.CalcFunctionValue(hp) << endl;
|
|
||||||
if (fabs (s2.CalcFunctionValue(hp)) > eps) return 0;
|
if (fabs (s2.CalcFunctionValue(hp)) > eps) return 0;
|
||||||
//(*testout) << "pos3" << endl;
|
|
||||||
hp = p + hv2;
|
hp = p + hv2;
|
||||||
if (fabs (s2.CalcFunctionValue(hp)) > eps) return 0;
|
if (fabs (s2.CalcFunctionValue(hp)) > eps) return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//(*testout) << "pos4" << endl;
|
|
||||||
Vec<3> n1, n2;
|
Vec<3> n1, n2;
|
||||||
n1 = GetNormalVector (p);
|
n1 = GetNormalVector (p);
|
||||||
n2 = s2.GetNormalVector (p);
|
n2 = s2.GetNormalVector (p);
|
||||||
inv = (n1 * n2 < 0);
|
inv = (n1 * n2 < 0);
|
||||||
//(*testout) << "inv " << inv << endl;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,14 +197,6 @@ namespace netgen
|
|||||||
|
|
||||||
void Plane :: FromPlane (const Point<2> & pplane, Point<3> & p3d, double h) const
|
void Plane :: FromPlane (const Point<2> & pplane, Point<3> & p3d, double h) const
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
Vec<3> p1p;
|
|
||||||
Point<2> pplane2 = pplane;
|
|
||||||
|
|
||||||
pplane2 *= h;
|
|
||||||
p1p = pplane2(0) * ex + pplane2(1) * ey;
|
|
||||||
p3d = p1 + p1p;
|
|
||||||
*/
|
|
||||||
p3d = p1 + (h * pplane(0)) * ex + (h * pplane(1)) * ey;
|
p3d = p1 + (h * pplane(0)) * ex + (h * pplane(1)) * ey;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1124,9 +1108,46 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
|
|
||||||
CalcData();
|
CalcData();
|
||||||
// Print (cout);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EllipticCylinder :: EllipticCylinder (Array<double> & coeffs)
|
||||||
|
{
|
||||||
|
SetPrimitiveData(coeffs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void EllipticCylinder :: GetPrimitiveData (const char *& classname, Array<double> & coeffs) const
|
||||||
|
{
|
||||||
|
classname = "ellipticcylinder";
|
||||||
|
coeffs.SetSize (9);
|
||||||
|
coeffs[0] = a(0);
|
||||||
|
coeffs[1] = a(1);
|
||||||
|
coeffs[2] = a(2);
|
||||||
|
coeffs[3] = vl(0);
|
||||||
|
coeffs[4] = vl(1);
|
||||||
|
coeffs[5] = vl(2);
|
||||||
|
coeffs[6] = vs(0);
|
||||||
|
coeffs[7] = vs(1);
|
||||||
|
coeffs[8] = vs(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EllipticCylinder :: SetPrimitiveData (Array<double> & coeffs)
|
||||||
|
{
|
||||||
|
a(0) = coeffs[0];
|
||||||
|
a(1) = coeffs[1];
|
||||||
|
a(2) = coeffs[2];
|
||||||
|
vl(0) = coeffs[3];
|
||||||
|
vl(1) = coeffs[4];
|
||||||
|
vl(2) = coeffs[5];
|
||||||
|
vs(0) = coeffs[6];
|
||||||
|
vs(1) = coeffs[7];
|
||||||
|
vs(2) = coeffs[8];
|
||||||
|
|
||||||
|
CalcData();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void EllipticCylinder :: CalcData ()
|
void EllipticCylinder :: CalcData ()
|
||||||
{
|
{
|
||||||
|
@ -109,7 +109,8 @@ namespace netgen
|
|||||||
virtual void GetTriangleApproximation
|
virtual void GetTriangleApproximation
|
||||||
(TriangleApproximation & tas,
|
(TriangleApproximation & tas,
|
||||||
const Box<3> & boundingbox, double facets) const;
|
const Box<3> & boundingbox, double facets) const;
|
||||||
|
protected:
|
||||||
|
void CalcData();
|
||||||
};
|
};
|
||||||
|
|
||||||
// typedef Plane Plane;
|
// typedef Plane Plane;
|
||||||
@ -238,12 +239,13 @@ namespace netgen
|
|||||||
///
|
///
|
||||||
EllipticCylinder (const Point<3> & aa,
|
EllipticCylinder (const Point<3> & aa,
|
||||||
const Vec<3> & avl, const Vec<3> & avs);
|
const Vec<3> & avl, const Vec<3> & avs);
|
||||||
|
EllipticCylinder (Array<double> & coeffs);
|
||||||
|
|
||||||
/*
|
|
||||||
static Primitive * CreateDefault ();
|
// static Primitive * CreateDefault ();
|
||||||
virtual void GetPrimitiveData (const char *& classname, Array<double> & coeffs) const;
|
virtual void GetPrimitiveData (const char *& classname, Array<double> & coeffs) const;
|
||||||
virtual void SetPrimitiveData (Array<double> & coeffs);
|
virtual void SetPrimitiveData (Array<double> & coeffs);
|
||||||
*/
|
|
||||||
///
|
///
|
||||||
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
||||||
///
|
///
|
||||||
|
@ -434,6 +434,16 @@ namespace netgen
|
|||||||
delete_them.Append(cylinder);
|
delete_them.Append(cylinder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if(classname == "ellipticcylinder")
|
||||||
|
{
|
||||||
|
EllipticCylinder * cylinder = new EllipticCylinder(coeffs);
|
||||||
|
AddSurface(cylinder);
|
||||||
|
delete_them.Append(cylinder);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
else if(classname == "cone")
|
else if(classname == "cone")
|
||||||
{
|
{
|
||||||
Cone * cone = new Cone(dummypoint,dummypoint,dummydouble,dummydouble);
|
Cone * cone = new Cone(dummypoint,dummypoint,dummydouble,dummydouble);
|
||||||
|
Loading…
Reference in New Issue
Block a user