Difference between revisions of "IC Python API:RLPy RTransform"
Chuck (RL) (Talk | contribs) m |
Chuck (RL) (Talk | contribs) m |
||
Line 5: | Line 5: | ||
== Description == | == Description == | ||
− | This class represent the transform data | + | This class represent the object transform data. This class provides access to RLPy's internal 4x4 matrix operators and related functions. |
− | See also: [ | + | See also: [[IC_Python_API:RLPy_RMatrix4|RMatrix4]] |
== Operators == | == Operators == | ||
Line 15: | Line 15: | ||
The "addition" operator. | The "addition" operator. | ||
− | <syntaxhighlight lang=" | + | See Also: [[#+=|+=]] |
+ | |||
+ | <syntaxhighlight lang="python"> | ||
matrix_a = RLPy.RMatrix4( 2, 0, 0, 0, | matrix_a = RLPy.RMatrix4( 2, 0, 0, 0, | ||
0, 2, 0, 0, | 0, 2, 0, 0, | ||
Line 38: | Line 40: | ||
The "equal to" operator. | The "equal to" operator. | ||
− | <syntaxhighlight lang=" | + | See Also: [[#!=|!=]] |
+ | |||
+ | <syntaxhighlight lang="python"> | ||
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY) | transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY) | ||
print( transform_identity == transform_identity ) # true | print( transform_identity == transform_identity ) # true | ||
Line 47: | Line 51: | ||
The "not equal to" operator. | The "not equal to" operator. | ||
− | <syntaxhighlight lang=" | + | See Also: [[#==|==]] |
+ | |||
+ | <syntaxhighlight lang="python"> | ||
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY) | transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY) | ||
print( transform_identity != transform_identity ) # false | print( transform_identity != transform_identity ) # false | ||
Line 56: | Line 62: | ||
The "addition assignment" operator. | The "addition assignment" operator. | ||
− | <syntaxhighlight lang=" | + | See Also: [[#+|+]] |
+ | |||
+ | <syntaxhighlight lang="python"> | ||
matrix_a = RLPy.RMatrix4( 2, 0, 0, 0, | matrix_a = RLPy.RMatrix4( 2, 0, 0, 0, | ||
0, 2, 0, 0, | 0, 2, 0, 0, | ||
Line 85: | Line 93: | ||
:Returns the value of determinate sign - float | :Returns the value of determinate sign - float | ||
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY) | transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY) | ||
print(transform_identity.D()) # <Swig Object of type 'float *' at 0x0000027B8A2D1FC0> | print(transform_identity.D()) # <Swig Object of type 'float *' at 0x0000027B8A2D1FC0> | ||
Line 95: | Line 103: | ||
==== Returns ==== | ==== Returns ==== | ||
− | :The value of scale in 3D vector - | + | :The value of scale in 3D vector - [[IC_Python_API:RLPy_RVector3|RVector3]] |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
d_determinate = 0 | d_determinate = 0 | ||
s_scale = RLPy.RVector3( RLPy.RVector3.ZERO ) | s_scale = RLPy.RVector3( RLPy.RVector3.ZERO ) | ||
Line 119: | Line 127: | ||
==== Returns ==== | ==== Returns ==== | ||
− | :The value of stretch in quaternion - | + | :The value of stretch in quaternion - [[IC_Python_API:RLPy_RQuaternion|RQuaternion]] |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
d_determinate = 0 | d_determinate = 0 | ||
s_scale = RLPy.RVector3( RLPy.RVector3.ZERO ) | s_scale = RLPy.RVector3( RLPy.RVector3.ZERO ) | ||
Line 145: | Line 153: | ||
==== Returns ==== | ==== Returns ==== | ||
− | :The value of rotation in quaternion - | + | :The value of rotation in quaternion - [[IC_Python_API:RLPy_RQuaternion|RQuaternion]] |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
d_determinate = 0 | d_determinate = 0 | ||
s_scale = RLPy.RVector3( RLPy.RVector3.ZERO ) | s_scale = RLPy.RVector3( RLPy.RVector3.ZERO ) | ||
Line 171: | Line 179: | ||
==== Returns ==== | ==== Returns ==== | ||
− | :The value of translation in 3D vector - | + | :The value of translation in 3D vector - [[IC_Python_API:RLPy_RVector3|RVector3]]. |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
d_determinate = 0 | d_determinate = 0 | ||
s_scale = RLPy.RVector3( RLPy.RVector3.ZERO ) | s_scale = RLPy.RVector3( RLPy.RVector3.ZERO ) | ||
Line 195: | Line 203: | ||
==== Parameters ==== | ==== Parameters ==== | ||
− | :kRts [IN] The transform - | + | :'''kRts''' [IN] The transform - [[IC_Python_API:RLPy_RTransform|RTransform]] |
==== Returns ==== | ==== Returns ==== | ||
:Return true while two transform is almost equal - bool | :Return true while two transform is almost equal - bool | ||
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0, | matrix4 = RLPy.RMatrix4(-1, 0, 0, 0, | ||
0,-1, 0, 0, | 0,-1, 0, 0, | ||
Line 217: | Line 225: | ||
==== Returns ==== | ==== Returns ==== | ||
− | :A inversed transform - | + | :A inversed transform - [[IC_Python_API:RLPy_RTransform|RTransform]] |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0, | matrix4 = RLPy.RMatrix4(-1, 0, 0, 0, | ||
0,-1, 0, 0, | 0,-1, 0, 0, | ||
Line 235: | Line 243: | ||
==== Returns ==== | ==== Returns ==== | ||
− | :A transform composited from 4x4 matrix - | + | :A transform composited from 4x4 matrix - [[IC_Python_API:RLPy_RTransform|RTransform]] |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0, | matrix4 = RLPy.RMatrix4(-1, 0, 0, 0, | ||
0,-1, 0, 0, | 0,-1, 0, 0, | ||
Line 253: | Line 261: | ||
==== Returns ==== | ==== Returns ==== | ||
− | :A 4x4 matrix - | + | :A 4x4 matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]] |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
matrix4 = RLPy.RMatrix4( 0,-1, 0, 0, | matrix4 = RLPy.RMatrix4( 0,-1, 0, 0, | ||
-1, 0, 0, 0, | -1, 0, 0, 0, | ||
Line 274: | Line 282: | ||
:True if the transform is identity - bool | :True if the transform is identity - bool | ||
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
matrix4 = RLPy.RMatrix4( 1, 0, 0, 0, | matrix4 = RLPy.RMatrix4( 1, 0, 0, 0, | ||
0, 1, 0, 0, | 0, 1, 0, 0, | ||
Line 288: | Line 296: | ||
==== Returns ==== | ==== Returns ==== | ||
− | :A 3x3 scale matrix from this transform - | + | :A 3x3 scale matrix from this transform - [[IC_Python_API:RLPy_RMatrix3|RMatrix3]] |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
scale = RLPy.RVector3( 4, 5, 6 ) | scale = RLPy.RVector3( 4, 5, 6 ) | ||
matrix4 = RLPy.RMatrix4().FromRTS( RLPy.RMatrix3.IDENTITY, | matrix4 = RLPy.RMatrix4().FromRTS( RLPy.RMatrix3.IDENTITY, | ||
Line 307: | Line 315: | ||
==== Returns ==== | ==== Returns ==== | ||
− | :A 3x3 rotate matrix from this transform - | + | :A 3x3 rotate matrix from this transform - [[IC_Python_API:RLPy_RMatrix3|RMatrix3]] |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
rotate = RLPy.RMatrix3( 0.8137977, -0.4698463, 0.3420202, | rotate = RLPy.RMatrix3( 0.8137977, -0.4698463, 0.3420202, | ||
0.5438381, 0.8231729, -0.1631759, | 0.5438381, 0.8231729, -0.1631759, | ||
Line 326: | Line 334: | ||
==== Returns ==== | ==== Returns ==== | ||
− | :A 3x3 matrix from this transform - | + | :A 3x3 matrix from this transform - [[IC_Python_API:RLPy_RMatrix3|RMatrix3]] |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python"> |
scale = RLPy.RVector3( 2, 2, 2 ) | scale = RLPy.RVector3( 2, 2, 2 ) | ||
rotate = RLPy.RMatrix3( -0,-0, 1, | rotate = RLPy.RMatrix3( -0,-0, 1, |
Revision as of 23:03, 7 April 2020
Contents
- 1 Description
- 2 Operators
- 3 Member Functions
- Main article: Modules.
- Last modified: 04/7/2020
Description
This class represent the object transform data. This class provides access to RLPy's internal 4x4 matrix operators and related functions.
See also: RMatrix4
Operators
+
The "addition" operator.
See Also: +=
matrix_a = RLPy.RMatrix4( 2, 0, 0, 0,
0, 2, 0, 0,
0, 0, 2, 0,
1, 2, 3, 1 )
matrix_b = RLPy.RMatrix4( 3, 0, 0, 0,
0, 3, 0, 0,
0, 0, 3, 0,
2, 2, 2, 1 )
transform = RLPy.RTransform().From( matrix_a ) + RLPy.RTransform().From( matrix_b )
print( transform.Matrix().GetRow(0)[0] == 2*3 ) # true
print( transform.Matrix().GetRow(1)[1] == 2*3 ) # true
print( transform.Matrix().GetRow(2)[2] == 2*3 ) # true
print( transform.Matrix().GetRow(3)[0] == 1+2 ) # true
print( transform.Matrix().GetRow(3)[1] == 2+2 ) # true
print( transform.Matrix().GetRow(3)[2] == 3+2 ) # true
==
The "equal to" operator.
See Also: !=
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
print( transform_identity == transform_identity ) # true
!=
The "not equal to" operator.
See Also: ==
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
print( transform_identity != transform_identity ) # false
+=
The "addition assignment" operator.
See Also: +
matrix_a = RLPy.RMatrix4( 2, 0, 0, 0,
0, 2, 0, 0,
0, 0, 2, 0,
1, 2, 3, 1 )
matrix_b = RLPy.RMatrix4( 3, 0, 0, 0,
0, 3, 0, 0,
0, 0, 3, 0,
2, 2, 2, 1 )
transform = RLPy.RTransform().From( matrix_a )
transform += RLPy.RTransform().From( matrix_b )
print( transform.Matrix().GetRow(0)[0] == 2*3 ) # true
print( transform.Matrix().GetRow(1)[1] == 2*3 ) # true
print( transform.Matrix().GetRow(2)[2] == 2*3 ) # true
print( transform.Matrix().GetRow(3)[0] == 1+2 ) # true
print( transform.Matrix().GetRow(3)[1] == 2+2 ) # true
print( transform.Matrix().GetRow(3)[2] == 3+2 ) # true
Member Functions
D (self, args)
Get the determinate sign.
Returns
- Returns the value of determinate sign - float
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
print(transform_identity.D()) # <Swig Object of type 'float *' at 0x0000027B8A2D1FC0>
S (self, args)
Get the Scale of a Transform matrix.
Returns
- The value of scale in 3D vector - RVector3
d_determinate = 0
s_scale = RLPy.RVector3( RLPy.RVector3.ZERO )
u_stretch = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
r_rotate = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
t_translate = RLPy.RVector3( RLPy.RVector3.ZERO )
s_scale.x = 1
s_scale.y = 2
s_scale.z = 3
transform_data = RLPy.RTransform(d_determinate,s_scale,u_stretch,r_rotate,t_translate )
print( transform_data.S().x ) # 1
print( transform_data.S().y ) # 2
print( transform_data.S().z ) # 3
U (self, args)
Get the stretch of Transform matrix.
Returns
- The value of stretch in quaternion - RQuaternion
d_determinate = 0
s_scale = RLPy.RVector3( RLPy.RVector3.ZERO )
u_stretch = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
r_rotate = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
t_translate = RLPy.RVector3( RLPy.RVector3.ZERO )
u_stretch.x = 4
u_stretch.y = 5
u_stretch.z = 6
u_stretch.w = 7
transform_data = RLPy.RTransform(d_determinate,s_scale,u_stretch,r_rotate,t_translate )
print( transform_data.U().x ) # 4
print( transform_data.U().y ) # 5
print( transform_data.U().z ) # 6
print( transform_data.U().w ) # 7
R (self, args)
Get the rotation of Transform matrix.
Returns
- The value of rotation in quaternion - RQuaternion
d_determinate = 0
s_scale = RLPy.RVector3( RLPy.RVector3.ZERO )
u_stretch = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
r_rotate = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
t_translate = RLPy.RVector3( RLPy.RVector3.ZERO )
r_rotate.x = 8
r_rotate.y = 9
r_rotate.z = 10
r_rotate.w = 11
transform_data = RLPy.RTransform(d_determinate,s_scale,u_stretch,r_rotate,t_translate )
print( transform_data.R().x ) # 8
print( transform_data.R().y ) # 9
print( transform_data.R().z ) # 10
print( transform_data.R().w ) # 11
T (self, args)
Get the translation of Transform matrix.
Returns
- The value of translation in 3D vector - RVector3.
d_determinate = 0
s_scale = RLPy.RVector3( RLPy.RVector3.ZERO )
u_stretch = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
r_rotate = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
t_translate = RLPy.RVector3( RLPy.RVector3.ZERO )
t_translate.x = 12
t_translate.y = 13
t_translate.z = 14
transform_data = RLPy.RTransform(d_determinate,s_scale,u_stretch,r_rotate,t_translate )
print( transform_data.T().x ) # 12
print( transform_data.T().y ) # 13
print( transform_data.T().z ) # 14
AlmostEquel (self, kRts)
Two transform are almost equal or not.
Parameters
- kRts [IN] The transform - RTransform
Returns
- Return true while two transform is almost equal - bool
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
0,-1, 0, 0,
0, 0, 1, 0,
-1, 1, 1, 1 )
transform1 = RLPy.RTransform().From( matrix4 )
transform2 = RLPy.RTransform().From( matrix4 )
print( transform1.AlmostEquel( transform2 )) # True
Inverse (self)
Inverse of the transform..
Returns
- A inversed transform - RTransform
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
0,-1, 0, 0,
0, 0, 1, 0,
-1, 1, 1, 1 )
transform = RLPy.RTransform().From( matrix4 )
print( transform.Matrix().GetRow(0)[0] )
print( transform.Matrix().GetRow(0)[1] )
From (self, mMatrix)
Set a transform from 4x4 matrix.
Returns
- A transform composited from 4x4 matrix - RTransform
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
0,-1, 0, 0,
0, 0, 1, 0,
-1, 1, 1, 1 )
transform = RLPy.RTransform().From( matrix4 )
print( transform.Matrix().GetRow(0)[0] )
print( transform.Matrix().GetRow(0)[1] )
Matrix (self)
Get 4x4 matrix from Transform.
Returns
- A 4x4 matrix - RMatrix4
matrix4 = RLPy.RMatrix4( 0,-1, 0, 0,
-1, 0, 0, 0,
0, 0,-1, 0,
1,-2, 1, 1 )
transform_data = RLPy.RTransform().From( matrix4 )
transform_data_matrix = transform_data.Matrix()
print( transform_data_matrix.GetRow(0)[0] )
print( transform_data_matrix.GetRow(0)[1] )
IsIdentity (self)
Check if this transform is identity.
Returns
- True if the transform is identity - bool
matrix4 = RLPy.RMatrix4( 1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 )
transform_data = RLPy.RTransform().From( matrix4 )
print( transform_data.IsIdentity() ) # True
Scale (self)
Form a scale matrix..
Returns
- A 3x3 scale matrix from this transform - RMatrix3
scale = RLPy.RVector3( 4, 5, 6 )
matrix4 = RLPy.RMatrix4().FromRTS( RLPy.RMatrix3.IDENTITY,
RLPy.RVector3.UNIT_XYZ,
scale )
transform_data = RLPy.RTransform().From( matrix4 )
print( transform_data.Scale().GetRow(0)[0] ) # 4
print( transform_data.Scale().GetRow(1)[1] ) # 5
print( transform_data.Scale().GetRow(2)[2] ) # 6
Rotate (self)
Form a rotate matrix.
Returns
- A 3x3 rotate matrix from this transform - RMatrix3
rotate = RLPy.RMatrix3( 0.8137977, -0.4698463, 0.3420202,
0.5438381, 0.8231729, -0.1631759,
-0.2048741, 0.3187958, 0.9254166 )
matrix4 = RLPy.RMatrix4().FromRTS( rotate, RLPy.RVector3.UNIT_XYZ , RLPy.RVector3.UNIT_XYZ )
transform_data = RLPy.RTransform().From( matrix4 )
print( transform_data.Rotate().GetRow(0)[0] )
print( transform_data.Rotate().GetRow(0)[1] )
print( transform_data.Rotate().GetRow(0)[2] )
GetSR (self)
Form a 3x3 matrix with rotation and scale.
Returns
- A 3x3 matrix from this transform - RMatrix3
scale = RLPy.RVector3( 2, 2, 2 )
rotate = RLPy.RMatrix3( -0,-0, 1,
-1,-0, 0,
0,-1,-0 )
matrix4 = RLPy.RMatrix4().FromRTS( rotate, RLPy.RVector3.UNIT_XYZ , scale )
transform_data = RLPy.RTransform().From( matrix4 )
print( transform_data.GetSR().GetRow(0)[0] ) # -0*2 = 0
print( transform_data.GetSR().GetRow(0)[1] ) # -0*2 = 0
print( transform_data.GetSR().GetRow(0)[2] ) # 1*2 = 2