An evaluated attachment frame and the member to which it belongs.
Define frames with Smith.Assembly.joint/3, connect them with
Smith.Assembly.connect/3, and inspect them with Smith.Assembly.fetch_joint/2.
:name is normalized like an assembly member name. :member is a list of
normalized names relative to the result used for lookup. :frame contains
the final world :origin and unit local axes :u, :v, and :n.
These are immutable evaluated values, not live constraints. Reevaluate the recipe after changing a motion parameter. Connections calculate rigid poses; they do not detect collisions or solve closed mechanical linkages.
Summary
Types
@type t() :: %Smith.Assembly.Joint{ frame: Smith.Assembly.Frame.t(), member: [String.t()], name: String.t() }