TexGen
|
Abstract base class respresenting a yarn cross-section. More...
#include <Section.h>
Public Member Functions | |
CSection () | |
CSection (TiXmlElement &Element) | |
virtual | ~CSection (void) |
virtual bool | operator== (const CSection &CompareMe) const =0 |
Overloaded equality operator to determine if two sections are the same. More... | |
virtual CSection * | Copy () const =0 |
Create a copy of the derived section and return a pointer to the newly created instance. More... | |
virtual void | PopulateTiXmlElement (TiXmlElement &Element, OUTPUT_TYPE OutputType) const |
Used for saving data to XML. More... | |
virtual const vector< XY > & | GetPoints (int iNumPoints, bool bEquiSpaced=false) const |
Get a section with given number of points on the perimeter. More... | |
const CMesh & | GetMesh (int iNumPoints, bool bEquiSpaced=true) const |
void | AssignSectionMesh (const CSectionMesh &SectionMesh) |
Assign a mesh to the section. More... | |
virtual string | GetDefaultName () const =0 |
Get the default name to assign to a section. More... | |
virtual string | GetType () const =0 |
Derived class should return the class name. More... | |
virtual string | GetBaseType () const |
void | SetSectionMeshLayers (int iNum) |
Specify number of layers for associated section mesh. More... | |
int | GetSectionMeshLayers () |
Get the number of layers for associated section mesh. More... | |
virtual XY | GetPoint (double t) const =0 |
Get a point lying on the perimeter correspending to parametric value t. More... | |
Static Public Member Functions | |
static CObjectContainer< CSection > | CreateSection (TiXmlElement &Element) |
Create a section from TiXmlElement. More... | |
static double | GetArea (const vector< XY > &Section) |
Get the area of a section. More... | |
static double | GetCircumference (const vector< XY > &Section) |
Get the circumference of a section. More... | |
Protected Member Functions | |
void | CreateSection (int iNumPoints) const |
Create a section with given number of points on the perimeter. More... | |
bool | CreateEquiSpacedSection (int iNumPoints) const |
Same as CreateSection except all the points will be spaced the same distance apart. More... | |
Protected Attributes | |
vector< XY > | m_EdgePoints |
List of 2d points creating the outline of the cross-section. More... | |
bool | m_bEquiSpaced |
Keep this variable to determine whether the section was created with equidistant points or not. More... | |
CObjectContainer< CSectionMesh > | m_pSectionMesh |
Pointer to a derived class of SectionMesh, this class is in charge of creating the section mesh. More... | |
Private Member Functions | |
void | AssignDefaults () |
Friends | |
class | CSectionHybrid |
class | CSectionRotated |
class | CSectionScaled |
CSection::CSection | ( | ) |
Definition at line 26 of file Section.cpp.
References AssignDefaults().
CSection::CSection | ( | TiXmlElement & | Element | ) |
Definition at line 36 of file Section.cpp.
References AssignDefaults(), TexGen::CSectionMesh::CreateSectionMesh(), FOR_EACH_TIXMLELEMENT, m_bEquiSpaced, m_EdgePoints, and m_pSectionMesh.
|
virtual |
Definition at line 32 of file Section.cpp.
|
private |
void CSection::AssignSectionMesh | ( | const CSectionMesh & | SectionMesh | ) |
Assign a mesh to the section.
Definition at line 227 of file Section.cpp.
References m_pSectionMesh.
Referenced by TexGen::CTextileOrthogonal::AdjustMidLayerHeights(), TexGen::CTextileLayerToLayer::BuildLayerToLayerTextile(), TexGen::CShearedTextileWeave2D::BuildTextile(), TexGen::CTextile3DWeave::BuildTextile(), TexGen::CTextileAngleInterlock::BuildTextile(), TexGen::CTextileOffsetAngleInterlock::BuildTextile(), TexGen::CTextileOrthogonal::BuildTextile(), TexGen::CTextileWeave::BuildTextile(), TexGen::CTextileOrthogonal::BuildWeavePatternTextile(), TexGen::CTextileOrthogonal::CorrectCrimpInterference(), TexGen::CTextileWeave::CorrectInterference(), TexGen::CTextileWeave::CorrectYarnWidths(), TexGen::CShearedTextileWeave2D::ModifySection(), and TexGen::CShearedTextileWeave2D::ReplaceSection().
|
pure virtual |
Create a copy of the derived section and return a pointer to the newly created instance.
Implemented in TexGen::CSectionBezier, TexGen::CSectionEllipse, TexGen::CSectionHybrid, TexGen::CSectionLenticular, TexGen::CSectionPolygon, TexGen::CSectionPowerEllipse, TexGen::CSectionRectangle, TexGen::CSectionRotated, and TexGen::CSectionScaled.
Referenced by TexGen::CTextileOrthogonal::AdjustBinderYarnSection(), TexGen::CTextileOrthogonal::AdjustMidLayerHeights(), TexGen::CTextileOrthogonal::AdjustOuterWeftYarns(), TexGen::CTextileWeave2D::AdjustSectionsForRotation(), TexGen::CTextileOrthogonal::CheckBinderWidths(), TexGen::CTextileWeave::CorrectEdgeInterference(), TexGen::CTextile3DWeave::GetCrossSection(), and TexGen::CTextileOrthogonal::GetHybridSectionWidth().
|
protected |
Same as CreateSection except all the points will be spaced the same distance apart.
This should work fine as long as the first derivative of the parametric equation with respect to t is continuous and the number of points making up the section is not too small
Definition at line 143 of file Section.cpp.
References GetDefaultName(), TexGen::GetLength(), GetPoint(), m_bEquiSpaced, m_EdgePoints, TexGen::stringify(), and TGERROR.
Referenced by GetPoints().
|
protected |
Create a section with given number of points on the perimeter.
m_EdgePoints will be populated with given number of points
iNumPoints | Number of points the section is made up of |
Definition at line 129 of file Section.cpp.
References GetPoint(), m_bEquiSpaced, and m_EdgePoints.
|
static |
Create a section from TiXmlElement.
Definition at line 78 of file Section.cpp.
References CSectionHybrid, CSectionRotated, and CSectionScaled.
Referenced by TexGen::CSectionHybrid::CSectionHybrid(), TexGen::CSectionRotated::CSectionRotated(), TexGen::CSectionScaled::CSectionScaled(), TexGen::CYarnSectionConstant::CYarnSectionConstant(), TexGen::CYarnSectionInterpNode::CYarnSectionInterpNode(), TexGen::CYarnSectionInterpPosition::CYarnSectionInterpPosition(), and GetPoints().
|
static |
Get the area of a section.
Definition at line 261 of file Section.cpp.
Referenced by TexGen::CTextileOrthogonal::AdjustBinderYarnSection(), TexGen::CTextileOrthogonal::AdjustMidLayerHeights(), TexGen::CTextileOrthogonal::AdjustOuterWeftYarns(), TexGen::CTextile3DWeave::AdjustPowerEllipsePower(), TexGen::CTextile3DWeave::AdjustPowerEllipseSectionWidth(), TexGen::CShearedTextileWeave2D::AdjustSections(), TexGen::CTextileOrthogonal::AdjustWeftHeight(), TexGen::CTextileOrthogonal::AdjustWeftToFitBinderHeight(), TexGen::CTextileOrthogonal::ChangePowerEllipseSection(), TexGen::CTextileOrthogonal::CheckBinderWidths(), TexGen::CSectionMeshTriangulate::CreateMesh(), TexGen::CTextile3DWeave::FindPowerEllipseSectionHeight(), TexGen::CShearedTextileWeave2D::GetArea(), TexGen::CSectionMeshTriangulate::GetTriangleMesh(), TexGen::CFibreDistributionConst::IntegrateDistribution(), and TexGen::CTextile3DWeave::ReducePowerEllipseHeight().
|
inlinevirtual |
Reimplemented in TexGen::CSectionRotated.
|
static |
Get the circumference of a section.
Definition at line 273 of file Section.cpp.
References TexGen::GetLength().
Referenced by TexGen::CYarn::SetResolution().
|
pure virtual |
Get the default name to assign to a section.
Implemented in TexGen::CSectionBezier, TexGen::CSectionEllipse, TexGen::CSectionHybrid, TexGen::CSectionLenticular, TexGen::CSectionPolygon, TexGen::CSectionPowerEllipse, TexGen::CSectionRectangle, TexGen::CSectionRotated, and TexGen::CSectionScaled.
Referenced by CreateEquiSpacedSection(), TexGen::CYarnSectionInterp::GetInterpedSectionMesh(), and GetMesh().
const CMesh & CSection::GetMesh | ( | int | iNumPoints, |
bool | bEquiSpaced = true |
||
) | const |
Get a mesh with given number of points on the perimeter, a mesh must be assigned to the section before this function is called.
Definition at line 107 of file Section.cpp.
References GetDefaultName(), GetPoints(), m_pSectionMesh, and TGERROR.
Referenced by TexGen::CYarnSectionInterp::GetInterpedSectionMesh().
|
pure virtual |
Get a point lying on the perimeter correspending to parametric value t.
Each section should be defined as a parametric function where t varies from 0 to 1 the function should start from the positive x axis at t=0 and go counter-clockwise through 360 degrees returning to its original position at t=1. In order for the CreateEquiSpacedSection function to work correctly, the parametric equation's first derivative with respect to t should be continuous.
Implemented in TexGen::CSectionBezier, TexGen::CSectionEllipse, TexGen::CSectionHybrid, TexGen::CSectionLenticular, TexGen::CSectionPolygon, TexGen::CSectionPowerEllipse, TexGen::CSectionRectangle, TexGen::CSectionRotated, and TexGen::CSectionScaled.
Referenced by TexGen::CTextileOrthogonal::AddWeftNodes(), TexGen::CTextile3DWeave::AddWeftNodes(), CreateEquiSpacedSection(), and CreateSection().
|
virtual |
Get a section with given number of points on the perimeter.
The section is created and saved to m_EdgePoints which is then returned. If this function is called multiple times with the same parameter the section need not be recreated. Note that the returned vector is only valid until the next call to this function, a copy of the vector should be made if it needs to be kept for any period of time.
iNumPoints | Number of points the section is made up of |
bEquiSpaced | If set to true, the code will attempt to space the nodes at equal distances apart |
Reimplemented in TexGen::CSectionRectangle.
Definition at line 119 of file Section.cpp.
References CreateEquiSpacedSection(), CreateSection(), m_bEquiSpaced, and m_EdgePoints.
Referenced by TexGen::CTextileOrthogonal::AdjustBinderYarnSection(), TexGen::CTextileOrthogonal::AdjustMidLayerHeights(), TexGen::CTextileOrthogonal::AdjustOuterWeftYarns(), TexGen::CTextile3DWeave::AdjustPowerEllipsePower(), TexGen::CTextile3DWeave::AdjustPowerEllipseSectionWidth(), TexGen::CShearedTextileWeave2D::AdjustSections(), TexGen::CTextileOrthogonal::AdjustWeftHeight(), TexGen::CTextileOrthogonal::AdjustWeftToFitBinderHeight(), TexGen::CTextileOrthogonal::ChangePowerEllipseSection(), TexGen::CTextileOrthogonal::CheckBinderWidths(), TexGen::CTextile3DWeave::FindPowerEllipseSectionHeight(), TexGen::CShearedTextileWeave2D::GetArea(), TexGen::CYarnSectionInterp::GetInterpedSection(), GetMesh(), and TexGen::CTextile3DWeave::ReducePowerEllipseHeight().
int CSection::GetSectionMeshLayers | ( | ) |
Get the number of layers for associated section mesh.
Definition at line 239 of file Section.cpp.
References TexGen::CSectionMeshRectangleSection::GetNumLayers(), TexGen::CSectionMeshRectangular::GetNumLayers(), and m_pSectionMesh.
Referenced by TexGen::CYarnSectionInterpNode::SetSectionMeshLayersEqual().
|
pure virtual |
Derived class should return the class name.
Implemented in TexGen::CSectionBezier, TexGen::CSectionEllipse, TexGen::CSectionHybrid, TexGen::CSectionLenticular, TexGen::CSectionPolygon, TexGen::CSectionPowerEllipse, TexGen::CSectionRectangle, TexGen::CSectionRotated, and TexGen::CSectionScaled.
Referenced by TexGen::CTextileOrthogonal::AddBinderNodes(), TexGen::CTextileOrthogonal::AdjustBinderYarnSection(), TexGen::CTextileWeave2D::AdjustSectionsForRotation(), TexGen::CTextileWeave::CorrectEdgeInterference(), TexGen::CTextileOrthogonal::GetSectionPoint(), TexGen::CTextile3DWeave::InsertBinderNode(), TexGen::CTextile3DWeave::InsertWeftNode(), TexGen::CSectionBezier::operator==(), TexGen::CSectionEllipse::operator==(), TexGen::CSectionHybrid::operator==(), TexGen::CSectionLenticular::operator==(), TexGen::CSectionPolygon::operator==(), TexGen::CSectionPowerEllipse::operator==(), TexGen::CSectionRectangle::operator==(), TexGen::CSectionRotated::operator==(), TexGen::CSectionScaled::operator==(), and PopulateTiXmlElement().
|
pure virtual |
Overloaded equality operator to determine if two sections are the same.
Implemented in TexGen::CSectionBezier, TexGen::CSectionEllipse, TexGen::CSectionHybrid, TexGen::CSectionLenticular, TexGen::CSectionPolygon, TexGen::CSectionPowerEllipse, TexGen::CSectionRectangle, TexGen::CSectionRotated, and TexGen::CSectionScaled.
|
virtual |
Used for saving data to XML.
Reimplemented in TexGen::CSectionBezier, TexGen::CSectionEllipse, TexGen::CSectionHybrid, TexGen::CSectionLenticular, TexGen::CSectionPolygon, TexGen::CSectionPowerEllipse, TexGen::CSectionRectangle, TexGen::CSectionRotated, and TexGen::CSectionScaled.
Definition at line 51 of file Section.cpp.
References GetType(), m_bEquiSpaced, m_EdgePoints, m_pSectionMesh, TexGen::OUTPUT_FULL, and TexGen::stringify().
Referenced by TexGen::CSectionBezier::PopulateTiXmlElement(), TexGen::CSectionEllipse::PopulateTiXmlElement(), TexGen::CSectionHybrid::PopulateTiXmlElement(), TexGen::CSectionLenticular::PopulateTiXmlElement(), TexGen::CSectionPolygon::PopulateTiXmlElement(), TexGen::CSectionPowerEllipse::PopulateTiXmlElement(), TexGen::CSectionRectangle::PopulateTiXmlElement(), TexGen::CSectionRotated::PopulateTiXmlElement(), and TexGen::CSectionScaled::PopulateTiXmlElement().
void CSection::SetSectionMeshLayers | ( | int | iNum | ) |
Specify number of layers for associated section mesh.
Definition at line 232 of file Section.cpp.
References m_pSectionMesh.
Referenced by TexGen::CYarnSectionInterpNode::SetSectionMeshLayersEqual(), and TexGen::CYarnSectionInterpPosition::SetSectionMeshLayersEqual().
|
friend |
Definition at line 32 of file Section.h.
Referenced by CreateSection().
|
friend |
Definition at line 33 of file Section.h.
Referenced by CreateSection().
|
friend |
Definition at line 34 of file Section.h.
Referenced by CreateSection().
|
mutableprotected |
Keep this variable to determine whether the section was created with equidistant points or not.
Definition at line 122 of file Section.h.
Referenced by CreateEquiSpacedSection(), TexGen::CSectionPolygon::CreateSection(), CreateSection(), CSection(), GetPoints(), and PopulateTiXmlElement().
|
mutableprotected |
List of 2d points creating the outline of the cross-section.
Definition at line 119 of file Section.h.
Referenced by CreateEquiSpacedSection(), TexGen::CSectionPolygon::CreateSection(), CreateSection(), CSection(), GetPoints(), TexGen::CSectionRectangle::GetPoints(), and PopulateTiXmlElement().
|
protected |
Pointer to a derived class of SectionMesh, this class is in charge of creating the section mesh.
Definition at line 125 of file Section.h.
Referenced by AssignDefaults(), AssignSectionMesh(), CSection(), TexGen::CSectionRectangle::CSectionRectangle(), TexGen::CSectionRotated::CSectionRotated(), GetMesh(), GetSectionMeshLayers(), PopulateTiXmlElement(), and SetSectionMeshLayers().