Tlink Struct Reference

Detailed Description

Information about each rigid part of a mechanisms. Each link is formed by one of more convex bodies.

See Also
link.h, link.c.

Definition at line 178 of file link.h.

Data Fields

char * name
 
unsigned int type
 
double s
 
double c
 
THTransform R
 
THTransform iR
 
Tvector bodies
 
boolean allSpheres
 
unsigned int axisID [3]
 
double maxCoord
 
TCuikSystemcsvID
 
unsigned int * vID
 
unsigned int nvID
 
double extForce [3]
 
boolean forceEquilibrium
 
double fixedDim [3]
 
Tinterval length
 
boolean varLength
 
unsigned int forceModel
 
Tinterval force
 
double stiffness
 
Tinterval rest
 

Field Documentation

double Tlink::s

Sinus between the vectors defining the internal reference frame for the link.
The default value is 1.
See ChangeLinkReferenceFrame.

Definition at line 183 of file link.h.

Referenced by ChangeLinkReferenceFrame(), CopyLink(), GenerateLinkRotFLinks(), GenerateLinkRotLinks(), InitLink(), RegenerateLinkBoxLinks(), and RegenerateLinkSolutionLinks().

double Tlink::c

Cosinus between the vectors defining the internal reference frame for the link.
The default value is 0.
See ChangeLinkReferenceFrame.

Definition at line 187 of file link.h.

Referenced by ChangeLinkReferenceFrame(), CopyLink(), GenerateLinkRotFLinks(), GenerateLinkRotLinks(), and InitLink().

THTransform Tlink::R

Rotation matrix defining the internal reference frame from the reference frame where bodies are defined.
In some cases the links do not have an orthonormal basis associated but a non-orthonormal one. In this case the variables for the link encode M*iR with M the orthonormal basis and iR a basis change to a non-orthonormal basis. Where in normal links points (p) are taken to the global frame using M*p, here we have to compute (M*iR)*R*p=M*p. The link variables encode M*iR all together and, thus we need R to compute R*p, when necessary. The default value is the identity.
Note: For convenience, we use a homogeneous transform structure to hold the basis change but the matrix is not a homogeneous transform (the new rotation basis is not necessarilyt orthonormal). The two only operations we use from the homogeneous transform implementation are a matrix per vector product and a matrix matrix operation See ChangeLinkReferenceFrame.

Definition at line 191 of file link.h.

Referenced by ApplyLinkRotFLinks(), ApplyLinkRotLinks(), ApplyLinkRotVar(), ChangeLinkReferenceFrame(), CopyLink(), DeleteLink(), GetTransform2LinkFLinks(), GetTransform2LinkLinks(), and InitLink().

THTransform Tlink::iR

Inverse of R. This is necessary to recover M*iR for a given M (the link rotation using a orthonormal basis). In this case M*iR gives the values for the variables used internally to represent the rotation for the link.

Definition at line 208 of file link.h.

Referenced by ChangeLinkReferenceFrame(), CopyLink(), DeleteLink(), GenerateLinkSolutionFLinks(), GenerateLinkSolutionLinks(), and InitLink().

Tvector Tlink::bodies

Set of sub-parts of the link where each part is a convex object.
All these convex objects are defined a common reference frame, i.e., the link's reference frame.
Bodies are convex polyhedrons (see Tpolyhedron).

Definition at line 213 of file link.h.

Referenced by AddBody2Link(), CopyLink(), DeleteLink(), GetLinkBody(), GetLinkBodyStatus(), InitLink(), and LinkNBodies().

boolean Tlink::allSpheres

TRUE if all non-DECOR bodies (i.e., bodies that ar considered in collision detection) are spheres. If all bodies in all links are spheres, we implement a speciall collision detectio prodedure based on the distance between the centers and not on separating planes.

Definition at line 218 of file link.h.

Referenced by AddBody2Link(), CopyLink(), InitLink(), and IsLinkAllSpheres().

unsigned int Tlink::axisID[3]

Identifier of the three objects (lines) representing the reference frame for the link.
These identifiers are only used if axes parameter of PlotLink is larger than 0. Otherwise they are set to NO_UINT.

Definition at line 223 of file link.h.

Referenced by CopyLink(), InitLink(), MoveLinkFromTransform(), and PlotLink().

double Tlink::maxCoord

Maximum coordinate value used in any of the bodies of the link.

Definition at line 229 of file link.h.

Referenced by AddBody2Link(), CopyLink(), GetLinkMaxCoordinate(), and InitLink().

TCuikSystem* Tlink::csvID

Last cuik system used to get the variable identifiers of this link. If in the new calls to GetTransform2Link, RegenerateLinkBox, or RegenerateLinkSolution the input cuiksystem is the same as this one, we could reuse the values stored in vID. Otherwise we have to recompute them.

Definition at line 231 of file link.h.

Referenced by CopyLink(), DeleteLink(), GetRotVarID(), GetRotVarIDAxisX(), GetRotVarIDFLinks(), GetRotVarIDLinks(), GetRotVarIDQLinks(), and InitLink().

unsigned int* Tlink::vID

Identifiers of the variables for this link defined over csvID.

Definition at line 236 of file link.h.

Referenced by CopyLink(), DeleteLink(), GetRotVarID(), GetRotVarIDAxisX(), GetRotVarIDFLinks(), GetRotVarIDLinks(), GetRotVarIDQLinks(), and InitLink().

unsigned int Tlink::nvID

Number of elements in vID. This depends on the CT_REPRESENTATION parameter.

Definition at line 237 of file link.h.

Referenced by CopyLink(), DeleteLink(), GetRotVarID(), GetRotVarIDAxisX(), GetRotVarIDFLinks(), GetRotVarIDLinks(), GetRotVarIDQLinks(), and InitLink().

double Tlink::extForce[3]

External force applied to the link. Only used in tensegrity structures.

Definition at line 240 of file link.h.

Referenced by AddForce2Link(), CopyLink(), GetForceOnLink(), and InitLink().

boolean Tlink::forceEquilibrium

TRUE for links where there must be a force equilibrium. This is FALSE for most links, except for some NoRot links used in tensegrities. The 'extForce' is only relevant if this flag is TRUE.

Definition at line 243 of file link.h.

Referenced by CopyLink(), InitLink(), InitNoRotLink(), IsForceEquilibriumLink(), and NoForceEquilibriumLink().

double Tlink::fixedDim[3]

Used to fix the translation of the link. Only used in tensegrity structures.

Definition at line 248 of file link.h.

Referenced by CopyLink(), GetLinkTrans(), InitLink(), and SetLinkTrans().

Tinterval Tlink::length

Link length. Only used for tensegrities. Cables, springs and prismatic bars can vary in length.

Definition at line 251 of file link.h.

Referenced by AdjustLinkForceParameters(), CopyLink(), DeleteLink(), GenerateLinkConf(), GetLinkDOFRange(), GetLinkLength(), InitAxisXLink(), InitDeformXLink(), InitLink(), and InitPrismaticXLink().

Tinterval Tlink::force

Range of forces that can be supported/exerted by the link. Only used for tensegrities. It is both used for VAR_FORCE and for LINEAR_FORCE links.

Definition at line 257 of file link.h.

Referenced by AdjustLinkForceParameters(), CopyLink(), DeleteLink(), GenerateLinkConf(), GetLinkDOFRange(), GetLinkMaxForce(), InitAxisXLink(), InitDeformXLink(), InitLink(), and InitPrismaticXLink().

double Tlink::stiffness

Link stiffness range. Only used for tensegrities and for LINEAR_FORCE models.

Definition at line 261 of file link.h.

Referenced by AdjustLinkForceParameters(), CopyLink(), DeleteLink(), GenerateLinkConf(), GetLinkStiffness(), InitAxisXLink(), InitDeformXLink(), InitLink(), InitPrismaticXLink(), LinkForceField(), and LinkPotentialEnergy().

Tinterval Tlink::rest

Link rest length. Only used for tensegrities and for LINEAR_FORCE models.

Definition at line 263 of file link.h.

Referenced by AdjustLinkForceParameters(), CopyLink(), DeleteLink(), GenerateLinkConf(), GetLinkDOFRange(), GetLinkRest(), InitAxisXLink(), InitDeformXLink(), InitLink(), and InitPrismaticXLink().