26CTextileDeformerVolumeMesh::CTextileDeformerVolumeMesh(
void)
36 if (Mesh.
GetNodes().size() != Displacements.size())
38 TGERROR(
"Cannot set yarn mesh displacements"
39 ",the number of nodal displacements (" << Displacements.size() <<
40 ") does not equal the number of nodes (" << Mesh.
GetNodes().size() <<
")");
45 TGERROR(
"Cannot set yarn mesh displacements, yarn index given is invalid: " << iYarn);
62 const vector<XYZ> &NodeDisplacements =
m_YarnMeshes[iYarn].NodeDisplacements;
63 list<int>::const_iterator itIndex;
67 double a, b, c, d, dMin;
68 double dAccuracy = -1;
70 for (itIndex = Indices.begin(); itIndex != Indices.end(); )
84 if (bFirst || dMin > dAccuracy)
88 Disp = a*NodeDisplacements[i1];
89 Disp += b*NodeDisplacements[i2];
90 Disp += c*NodeDisplacements[i3];
91 Disp += d*NodeDisplacements[i4];
110 a = -(-P3.
x * P.
z * P2.
y - P3.
x * P4.
z * P.
y + P3.
x * P2.
z * P.
y + P3.
x * P4.
z * P2.
y + P4.
y * P3.
x * P.
z - P4.
y * P3.
x * P2.
z - P4.
x * P3.
y * P.
z + P4.
x * P3.
y * P2.
z - P3.
z * P4.
y * P.
x - P3.
z * P4.
x * P2.
y + P3.
y * P4.
z * P.
x + P3.
z * P4.
x * P.
y - P3.
z * P2.
x * P.
y + P3.
z * P4.
y * P2.
x + P4.
z * P2.
x * P.
y - P4.
x * P2.
z * P.
y - P2.
z * P3.
y * P.
x + P2.
z * P4.
y * P.
x - P4.
z * P.
x * P2.
y - P3.
y * P4.
z * P2.
x + P3.
z * P.
x * P2.
y + P.
z * P4.
x * P2.
y + P.
z * P3.
y * P2.
x - P.
z * P4.
y * P2.
x) / (P4.
z * P1.
x * P2.
y + P1.
x * P3.
y * P2.
z - P1.
x * P3.
y * P4.
z - P1.
x * P4.
y * P2.
z - P4.
x * P3.
y * P2.
z + P3.
x * P1.
z * P2.
y - P3.
x * P1.
z * P4.
y - P3.
x * P4.
z * P2.
y - P4.
x * P1.
z * P2.
y - P4.
z * P1.
y * P2.
x + P1.
y * P3.
x * P4.
z + P1.
y * P4.
x * P2.
z - P1.
y * P3.
x * P2.
z + P4.
y * P3.
x * P2.
z - P3.
y * P1.
z * P2.
x + P3.
y * P1.
z * P4.
x + P3.
y * P4.
z * P2.
x + P4.
y * P1.
z * P2.
x + P3.
z * P1.
y * P2.
x - P3.
z * P1.
y * P4.
x + P3.
z * P1.
x * P4.
y - P3.
z * P1.
x * P2.
y - P3.
z * P4.
y * P2.
x + P3.
z * P4.
x * P2.
y);
111 b = -0.1e1 / (P4.
z * P1.
x * P2.
y + P1.
x * P3.
y * P2.
z - P1.
x * P3.
y * P4.
z - P1.
x * P4.
y * P2.
z - P4.
x * P3.
y * P2.
z + P3.
x * P1.
z * P2.
y - P3.
x * P1.
z * P4.
y - P3.
x * P4.
z * P2.
y - P4.
x * P1.
z * P2.
y - P4.
z * P1.
y * P2.
x + P1.
y * P3.
x * P4.
z + P1.
y * P4.
x * P2.
z - P1.
y * P3.
x * P2.
z + P4.
y * P3.
x * P2.
z - P3.
y * P1.
z * P2.
x + P3.
y * P1.
z * P4.
x + P3.
y * P4.
z * P2.
x + P4.
y * P1.
z * P2.
x + P3.
z * P1.
y * P2.
x - P3.
z * P1.
y * P4.
x + P3.
z * P1.
x * P4.
y - P3.
z * P1.
x * P2.
y - P3.
z * P4.
y * P2.
x + P3.
z * P4.
x * P2.
y) * (-P3.
z * P1.
x * P4.
y - P3.
z * P4.
x * P.
y + P4.
z * P1.
y * P.
x + P1.
x * P3.
y * P4.
z + P4.
x * P3.
y * P.
z - P1.
y * P3.
x * P4.
z + P3.
x * P4.
z * P.
y + P3.
z * P1.
x * P.
y + P1.
x * P4.
y * P.
z - P4.
z * P1.
x * P.
y - P1.
x * P3.
y * P.
z - P3.
x * P1.
z * P.
y + P4.
x * P1.
z * P.
y + P1.
y * P3.
x * P.
z + P3.
x * P1.
z * P4.
y - P1.
y * P4.
x * P.
z - P3.
z * P1.
y * P.
x - P4.
y * P3.
x * P.
z + P3.
y * P1.
z * P.
x - P3.
y * P1.
z * P4.
x - P3.
y * P4.
z * P.
x - P4.
y * P1.
z * P.
x + P3.
z * P4.
y * P.
x + P3.
z * P1.
y * P4.
x);
112 c = (-P4.
z * P1.
x * P.
y + P1.
x * P4.
y * P.
z + P4.
x * P1.
z * P.
y + P4.
z * P1.
y * P.
x - P1.
y * P4.
x * P.
z - P4.
y * P1.
z * P.
x - P1.
x * P4.
y * P2.
z + P4.
z * P1.
x * P2.
y - P4.
x * P1.
z * P2.
y - P.
z * P4.
y * P2.
x + P4.
z * P2.
x * P.
y - P4.
x * P2.
z * P.
y - P4.
z * P.
x * P2.
y + P.
z * P4.
x * P2.
y + P2.
z * P4.
y * P.
x - P2.
x * P1.
z * P.
y + P4.
y * P1.
z * P2.
x + P2.
z * P1.
x * P.
y + P.
x * P1.
z * P2.
y - P.
z * P1.
x * P2.
y - P2.
z * P1.
y * P.
x + P1.
y * P4.
x * P2.
z + P.
z * P1.
y * P2.
x - P4.
z * P1.
y * P2.
x) / (P4.
z * P1.
x * P2.
y + P1.
x * P3.
y * P2.
z - P1.
x * P3.
y * P4.
z - P1.
x * P4.
y * P2.
z - P4.
x * P3.
y * P2.
z + P3.
x * P1.
z * P2.
y - P3.
x * P1.
z * P4.
y - P3.
x * P4.
z * P2.
y - P4.
x * P1.
z * P2.
y - P4.
z * P1.
y * P2.
x + P1.
y * P3.
x * P4.
z + P1.
y * P4.
x * P2.
z - P1.
y * P3.
x * P2.
z + P4.
y * P3.
x * P2.
z - P3.
y * P1.
z * P2.
x + P3.
y * P1.
z * P4.
x + P3.
y * P4.
z * P2.
x + P4.
y * P1.
z * P2.
x + P3.
z * P1.
y * P2.
x - P3.
z * P1.
y * P4.
x + P3.
z * P1.
x * P4.
y - P3.
z * P1.
x * P2.
y - P3.
z * P4.
y * P2.
x + P3.
z * P4.
x * P2.
y);
113 d = -(-P3.
z * P1.
x * P.
y - P3.
z * P.
x * P2.
y + P1.
x * P3.
y * P.
z + P3.
x * P1.
z * P.
y - P1.
y * P3.
x * P.
z + P2.
z * P3.
y * P.
x + P3.
z * P1.
y * P.
x - P.
z * P3.
y * P2.
x - P3.
y * P1.
z * P.
x - P1.
x * P3.
y * P2.
z - P3.
x * P1.
z * P2.
y + P1.
y * P3.
x * P2.
z + P3.
y * P1.
z * P2.
x - P3.
z * P1.
y * P2.
x + P3.
z * P1.
x * P2.
y - P3.
x * P2.
z * P.
y + P3.
x * P.
z * P2.
y + P3.
z * P2.
x * P.
y - P2.
x * P1.
z * P.
y + P2.
z * P1.
x * P.
y + P.
x * P1.
z * P2.
y - P2.
z * P1.
y * P.
x + P.
z * P1.
y * P2.
x - P.
z * P1.
x * P2.
y) / (P4.
z * P1.
x * P2.
y + P1.
x * P3.
y * P2.
z - P1.
x * P3.
y * P4.
z - P1.
x * P4.
y * P2.
z - P4.
x * P3.
y * P2.
z + P3.
x * P1.
z * P2.
y - P3.
x * P1.
z * P4.
y - P3.
x * P4.
z * P2.
y - P4.
x * P1.
z * P2.
y - P4.
z * P1.
y * P2.
x + P1.
y * P3.
x * P4.
z + P1.
y * P4.
x * P2.
z - P1.
y * P3.
x * P2.
z + P4.
y * P3.
x * P2.
z - P3.
y * P1.
z * P2.
x + P3.
y * P1.
z * P4.
x + P3.
y * P4.
z * P2.
x + P4.
y * P1.
z * P2.
x + P3.
z * P1.
y * P2.
x - P3.
z * P1.
y * P4.
x + P3.
z * P1.
x * P4.
y - P3.
z * P1.
x * P2.
y - P3.
z * P4.
y * P2.
x + P3.
z * P4.
x * P2.
y);
#define TGERROR(MESSAGE)
Macros used to report the file name and line number to the TexGenError and TexGenLog functions.
Defines the nodes and elements of a surface or volume mesh.
const vector< XYZ > & GetNodes() const
Get a const reference to the nodes.
const XYZ & GetNode(int iIndex) const
Get the node with given ID.
const list< int > & GetIndices(ELEMENT_TYPE ElemType) const
Get the element indices of a given element type.
bool SetYarnMeshDisplacements(int iYarn, const CMesh &Mesh, vector< XYZ > &Displacements)
void GetBarycentricCoordinates(const XYZ &P, const XYZ &P1, const XYZ &P2, const XYZ &P3, const XYZ &P4, double &a, double &b, double &c, double &d) const
virtual double GetDisplacement(XYZ Pos, int iYarn, XYZ &Disp) const
vector< YARN_MESH > m_YarnMeshes
virtual ~CTextileDeformerVolumeMesh(void)
Namespace containing a series of customised math operations not found in the standard c++ library.
Struct for representing points in 3D space.