Placement A placement defines an orientation (rotation) and a position (base) in 3D space. It is used when no scaling or other distortion is needed. The following constructors are supported: Placement() -- empty constructor Placement(Placement) -- copy constructor Placement(Matrix) -- 4D matrix consisting of rotation and translation Placement(Base, Rotation) -- define position and rotation Placement(Base, Rotation,Center) -- define position and rotation with center Placement(Base, Axis, Angle) -- define position and rotation Placement copy() Returns a copy of this Placement move(Vector) Move the placement along the vector translate(Vector) alias to move(), to be compatible with TopoShape.translate() rotate(center,axis,degree) - rotate the current placement around center and axis with degree This method is compatible with TopoShape.rotate() multiply(Placement) Multiply this placement with another placement multVector(Vector) -> Vector Compute the transformed vector using the placement toMatrix() convert the placement to a matrix representation inverse() -> Placement compute the inverse placement pow(t, shorten = true): raise this placement to real power using ScLERP interpolation. If 'shorten' is true, ensures rotation quaternion is net positive, to make the path shorter. Also available as ** operator. sclerp(placement2, t, shorten = True): interpolate between self and placement2. Interpolation is a continuous motion along a helical path, made of equal transforms if discretized. t = 0.0 - return self. t = 1.0 - return placement2. t can also be outside of 0..1 range, for extrapolation. If quaternions of rotations of the two placements differ in sign, the interpolation will take a long path. If 'shorten' is true, the signs are harmonized before interpolation, and the interpolation takes the shorter path. slerp(placement2, t, shorten = True): interpolate between self and placement2. This function performs independent interpolation of rotation and movement. Result of such interpolation might be not what application expects, thus this tool might be considered for simple cases or for interpolating between small intervals. For more complex cases you better use the advanced sclerp() function. isIdentity() -> Bool returns True if the placement has no displacement and no rotation Vector to the Base Position of the Placement Orientation of the placement expressed as rotation Set/get matrix representation of this placement public: PlacementPy(const Placement & pla, PyTypeObject *T = &Type) :PyObjectBase(new Placement(pla),T){} Placement value() const { return *(getPlacementPtr()); }