163 lines
6.0 KiB
XML
163 lines
6.0 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
|
|
<PythonExport
|
|
Father="PyObjectBase"
|
|
Name="PlacementPy"
|
|
Twin="Placement"
|
|
TwinPointer="Placement"
|
|
Include="Base/Placement.h"
|
|
FatherInclude="Base/PyObjectBase.h"
|
|
Namespace="Base"
|
|
Constructor="true"
|
|
Delete="true"
|
|
NumberProtocol="true"
|
|
RichCompare="true"
|
|
FatherNamespace="Base">
|
|
<Documentation>
|
|
<Author Licence="LGPL" Name="Juergen Riegel" EMail="FreeCAD@juergen-riegel.net" />
|
|
<UserDocu>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
|
|
</UserDocu>
|
|
<DeveloperDocu>Placement</DeveloperDocu>
|
|
</Documentation>
|
|
<Methode Name="copy" Const="true">
|
|
<Documentation>
|
|
<UserDocu>
|
|
copy()
|
|
Returns a copy of this Placement
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="move">
|
|
<Documentation>
|
|
<UserDocu>
|
|
move(Vector)
|
|
Move the placement along the vector
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="translate">
|
|
<Documentation>
|
|
<UserDocu>
|
|
translate(Vector)
|
|
alias to move(), to be compatible with TopoShape.translate()
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="rotate">
|
|
<Documentation>
|
|
<UserDocu>
|
|
rotate(center,axis,degree) - rotate the current placement around center and axis with degree
|
|
This method is compatible with TopoShape.rotate()
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="multiply" Const="true">
|
|
<Documentation>
|
|
<UserDocu>
|
|
multiply(Placement)
|
|
Multiply this placement with another placement
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="multVec" Const="true">
|
|
<Documentation>
|
|
<UserDocu>
|
|
multVector(Vector) -> Vector
|
|
Compute the transformed vector using the placement
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="toMatrix" Const="true">
|
|
<Documentation>
|
|
<UserDocu>
|
|
toMatrix()
|
|
convert the placement to a matrix representation
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="inverse" Const="true">
|
|
<Documentation>
|
|
<UserDocu>
|
|
inverse() -> Placement
|
|
compute the inverse placement
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="pow" Const="true">
|
|
<Documentation>
|
|
<UserDocu>
|
|
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.
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="sclerp" Const="true">
|
|
<Documentation>
|
|
<UserDocu>
|
|
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.
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="slerp" Const="true">
|
|
<Documentation>
|
|
<UserDocu>
|
|
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.
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Methode Name="isIdentity" Const="true">
|
|
<Documentation>
|
|
<UserDocu>
|
|
isIdentity() -> Bool
|
|
returns True if the placement has no displacement and no rotation
|
|
</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Attribute Name="Base" ReadOnly="false">
|
|
<Documentation>
|
|
<UserDocu>Vector to the Base Position of the Placement</UserDocu>
|
|
</Documentation>
|
|
<Parameter Name="Base" Type="Object" />
|
|
</Attribute>
|
|
<Attribute Name="Rotation" ReadOnly="false">
|
|
<Documentation>
|
|
<UserDocu>Orientation of the placement expressed as rotation</UserDocu>
|
|
</Documentation>
|
|
<Parameter Name="Rotation" Type="Object" />
|
|
</Attribute>
|
|
<Attribute Name="Matrix" ReadOnly="false">
|
|
<Documentation>
|
|
<UserDocu>Set/get matrix representation of this placement</UserDocu>
|
|
</Documentation>
|
|
<Parameter Name="Matrix" Type="Object" />
|
|
</Attribute>
|
|
<ClassDeclarations>public:
|
|
PlacementPy(const Placement & pla, PyTypeObject *T = &Type)
|
|
:PyObjectBase(new Placement(pla),T){}
|
|
Placement value() const
|
|
{ return *(getPlacementPtr()); }
|
|
</ClassDeclarations>
|
|
</PythonExport>
|
|
</GenerateModel>
|