Class Anchor
A coordinate system using in kinematic chain.
An anchor is a view (world, id) over a node of the native topology registry
(core.dll, Hi.Mech.Topo.NativeTopo): its GUID, parent and branch maps live on the native
node and every walk over the branch graph runs there under the registry's lock; the name is
cached on the view and pushed to the node on set, as the view is the node's only writer. The
Hi.Mech.Topo.TopoWorld keeps the connected component allocated while any view into it is
reachable, and the same native id always resolves to the same view object, so an anchor
remains a sound dictionary key and ReferenceEquals comparand.
public class Anchor : IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d
- Inheritance
-
Anchor
- Implements
- Inherited Members
- Extension Methods
Constructors
Anchor()
Ctor: an anchor belonging to no assembly, the root of a world of its own until it is added or attached somewhere.
public Anchor()
Anchor(Asmb)
Ctor.
public Anchor(Asmb asmb)
Parameters
asmbAsmbadd this to
asmbby Add(Anchor)
Anchor(Asmb, string)
Ctor.
public Anchor(Asmb asmb, string name)
Parameters
asmbAsmbadd this to
asmbby Add(Anchor)namestring
Properties
BranchMap
Gets a snapshot of the branches departing from this anchor, keyed by their Arrow. ‘this’ anchor locates on Fletch.
public Dictionary<Anchor, Branch> BranchMap { get; }
Property Value
BranchMapInv
Gets a snapshot of the branches arriving at this anchor, keyed by their Fletch. ‘this’ anchor locates on Arrow.
public Dictionary<Anchor, Branch> BranchMapInv { get; }
Property Value
Guid
GUID.
public Guid Guid { get; }
Property Value
IndexXName
The XML element name used for indexing anchors.
public static string IndexXName { get; }
Property Value
IndexXml
Get XML for indexing. Only the Guid takes effect when reading.
public XElement IndexXml { get; }
Property Value
Name
Name.
public string Name { get; set; }
Property Value
Parent
The assembly this anchor belongs to; null while it belongs to none. An anchor belongs to at most one assembly at a time. Maintained by Add(Anchor) and Remove(Anchor).
public Asmb Parent { get; }
Property Value
Methods
Ancestors()
The assemblies enclosing this anchor, nearest first.
public IEnumerable<Asmb> Ancestors()
Returns
ConnectedAnchors()
Every anchor reachable from this one over branches, this one included, regardless of which assemblies they belong to.
public HashSet<Anchor> ConnectedAnchors()
Returns
Detach()
Detach all related Branch.
public void Detach()
Display(Bind)
Display function called in DispEngine rendering loop.
public void Display(Bind bind)
Parameters
bindBindBind with DispEngine. See Bind.
ExpandToBox3d(ref box3d_t)
Expands the destination box.
This function is usually used to compute the bounding box of elements.
box3d_t is a value type, so the destination is passed by reference
(the C++ expand_to_box3d(box3&) shape); an implementation writes
dst = dst.Expanded(...) or forwards ref dst to its parts.
public virtual void ExpandToBox3d(ref box3d_t dst)
Parameters
dstbox3d_tDestination box, expanded in place
GetAnchor()
Get key anchor. (i.e. root anchor)
public Anchor GetAnchor()
Returns
- Anchor
key anchor
GetByIndexXml(XElement, Dictionary<Guid, Anchor>)
Gets an anchor from its XML index representation using a GUID-to-Anchor dictionary.
public static Anchor GetByIndexXml(XElement src, Dictionary<Guid, Anchor> guidToAncDictionary)
Parameters
srcXElementThe source XML element containing the anchor index information.
guidToAncDictionaryDictionary<Guid, Anchor>Dictionary mapping GUIDs to Anchor objects.
Returns
- Anchor
The anchor object corresponding to the XML index.
GetMat4dMap()
Gets the transform of every anchor in ConnectedAnchors(), expressed in this anchor's coordinate; this anchor first, at identity.
public Dictionary<Anchor, mat4d_t> GetMat4dMap()
Returns
NeighborAnchors()
The anchors one branch away, in either direction; each once.
public IEnumerable<Anchor> NeighborAnchors()
Returns
ToString()
Returns a string that represents the current object.
public override string ToString()
Returns
- string
A string that represents the current object.
TryGetMat4d(IGetAnchor, out mat4d_t)
Get transform matrix from this to tail.
public bool TryGetMat4d(IGetAnchor tail, out mat4d_t mat)
Parameters
tailIGetAnchortail
matmat4d_ttransform matrix, when the method returns true; unspecified otherwise
Returns
- bool
true with the matrix; false when
tailis null or no branch chain connects the two