IC Python API:RLPy RVector3

From Reallusion Wiki!
Revision as of 23:33, 24 February 2020 by Chuck (RL) (Talk | contribs)

Jump to: navigation, search
Main article: Modules.
Last modified: 02/24/2020

Description

This class represent the 3D vector (x, y, z). This class provides access to RLPy's internal 3D vector math library allowing 3D vectors to be handled easily, in a manner compatible with internal RLPy data structures. It also supports operators and provides some constants for your convenience:

Constant Description
RVector3.ZERO 3D zero vector: (0, 0, 0)
RVector3.UNIT_X 3D x unit vector: (1, 0, 0)
RVector3.UNIT_Y 3D y unit vector: (0, 1, 0)
RVector3.UNIT_Z 3D z unit vector: (0, 0, 1)
RVector3.UNIT_XY 3D vector: (1, 1, 0)
RVector3.UNIT_YZ 3D vector: (0, 1, 1)
RVector3.UNIT_XZ 3D vector: (1, 0, 1)
RVector3.UNIT_XYZ 3D vector: (1, 1, 1)

Constructor & Destructor

__init__ ( self )

a = RLPy.RVector3()

__init__ ( self, x, y, z )

Parameters

x [IN] a numerical value for x coordinate - float or int
y [IN] a numerical value for y coordinate - float or int
z [IN] a numerical value for z coordinate - float or int
a = RLPy.RVector3(1, 2, 3)

__init__ ( self, args )

The constructor. Initialize a new RVector3 object with another RVector3 object: args. This new RVector3 object has the same value as args.

Parameters

args [IN] a RVector3 object - RLPy.RVector3
a = RLPy.RVector3(1, 2, 3)
b = RLPy.RVector3(a)

Operators

==

The "equal to" operator.

a = RLPy.RVector3(1, 2, 3)
b = a

print(a == b) #True

!=

The "not equal to" operator.

a = RLPy.RVector3()
b = RLPy.RVector3(1, 2, 3)

print(a != b) #True

<

The "less than" operator. Similar to string comparison: Returns True upon the first match that is less than and False if it is greater than. If the current comparison is equal, continue onto the next element. If all elements are equal then return False.

a = RLPy.RVector3(0, 1, 5)
b = RLPy.RVector3(0, 2, 0)
c = RLPy.RVector3(1, 0, 1)
d = RLPy.RVector3(0, 1, 5)

print(a < b) #True
print(b < c) #True
print(a < d) #False

>

The "greater than" operator. Similar to string comparison: Returns True upon the first match that is greater than and False if it is less than. If the current comparison is equal, continue onto the next element. If all elements are equal then return False.

a = RLPy.RVector3(0, 1, 5)
b = RLPy.RVector3(0, 1, 7)
c = RLPy.RVector3(1, 0, 1)
d = RLPy.RVector3(0, 1, 5)

print(b > a) #True
print(c > b) #True
print(d > a) #False

<=

The "less than or equal" operator. Similar to string comparison: Returns True upon the first match that is less than and False if it is greater than. If the current comparison is equal, continue onto the next element. If all elements are equal then return True.

a = RLPy.RVector3(0, 1, 5)
b = RLPy.RVector3(0, 2, 0)
c = RLPy.RVector3(1, 0, 1)
d = RLPy.RVector3(0, 1, 5)

print(a<= b) #True
print(b<= c) #True
print(a<= d) #True

>=

The "greater than or equal" operator. Similar to string comparison: Returns True upon the first match that is greater than and False if it is less than. If the current comparison is equal, continue onto the next element. If all elements are equal then return True.

a = RLPy.RVector3(0, 1, 5)
b = RLPy.RVector3(0, 1, 7)
c = RLPy.RVector3(1, 0, 1)
d = RLPy.RVector3(0, 1, 5)

print(b >= a) #True
print(c >= b) #True
print(d >= a) #True

+

The "addition" operator. Perform 3D vector addition.

a = RLPy.RVector3(0, 1, 2)
b = RLPy.RVector3(1, 2, 3)
c = a + b

print(str(c.x) + ', ' + str(c.y) + ', ' + str(c.z)) #1.0, 3.0, 5.0

-

The "subtraction" operator. Perform 3D vector subtraction.

a = RLPy.RVector3(0, 1, 2)
b = RLPy.RVector3(3, 2, 1)
c = b - a

print(str(c.x) + ', ' + str(c.y) + ', ' + str(c.z)) #3.0, 1.0, -1.0

*

The "multiplication" operator. Perform a scalar multiplication when the second operand is an integer or float. If the second operand is another 3D vector, then the respective x, y, z elements are multiplied.

a = RLPy.RVector3(1, 2, 3)
b = a * 2
c = a * a

print(str(b.x) + ', ' + str(b.y) + ', ' + str(b.z)) #2.0, 4.0, 6.0
print(str(c.x) + ', ' + str(c.y) + ', ' + str(c.z)) #1.0, 4.0, 9.0

/

The "division" operator. Perform a scalar division when the second operand is an integer or float. If the second operand is another vector, then the respective x, y, z elements are divided.

a = RLPy.RVector3(1, 2, 3)
b = a / 2
c = RLPy.RVector3(2, 2, 10)
d = a / c

print(str(b.x) + ', ' + str(b.y) + ', ' + str(b.z)) #0.5, 1.0, 1.5
print(str(d.x) + ', ' + str(d.y) + ', ' + str(d.z)) #0.5, 1.0, 0.3

-

The "unary minus" operator. Inverse the sign of each element.

a = RLPy.RVector3(1, 2, 3)
b = -a

print(str(b.x) + ', ' + str(b.y) + ', ' + str(b.z)) #-1.0, -2.0, -3.0

+=

The "addition assignment" operator.

a = RLPy.RVector3(0, 1, 2)
b = RLPy.RVector3(1, 2, 3)
a += b

print(str(a.x) + ', ' + str(a.y)+ ', ' + str(a.z)) #1.0, 3.0, 5.0

-=

The "subtraction assignment" operator.

a = RLPy.RVector3(0, 1, 4)
b = RLPy.RVector3(1, 2, 3)
a -= b

print(str(a.x) + ', ' + str(a.y) + ', ' + str(a.z)) #-1.0, -1.0, 1.0

*=

The "multiplication assignment" operator. For calculation method, refer to the * operator.

a = RLPy.RVector3(1, 2, 3)
a *= 2
b = RLPy.RVector3(1, 2, 3)
c = RLPy.RVector3(2, 3, 4)
b *= c

print(str(a.x) + ', ' + str(a.y) + ', ' + str(a.z)) #2.0, 4.0, 6.0
print(str(b.x) + ', ' + str(b.y) + ', ' + str(b.z)) #2.0, 6.0, 12.0

/=

The "division assignment" operator. For calculation method, refer to the / operator.

a = RLPy.RVector3(1, 2, 3)
a /= 2
b = RLPy.RVector3(1, 2, 3)
c = RLPy.RVector3(2, 4, 2)
b /= c

print(str(a.x) + ', ' + str(a.y) + ', ' + str(a.z)) #0.5, 1.0, 1.5
print(str(b.x) + ', ' + str(b.y) + ', ' + str(b.z)) #0.5, 0.5, 1.5

Member Functions

AlmostTheSame ( self, vV )

Determine the two vectors are the same with tolerance.

Returns

True if the vector is almost the same - bool
a = RLPy.RVector3(1, 2, 3)
b = RLPy.RVector3(1, 2, 3.000000001)
c = RLPy.RVector3(1, 2, 3.00001)

if a.AlmostTheSame(b):  #True
    print("a ≈ b")
if a.AlmostTheSame(c):  #False
    print("a ≈ c")

AlmostZero ( self )

Determine the vector is zero vector.

Returns

True if the vector is zero vector - bool
a = RLPy.RVector3(0.00000001, 0, 0.00000003)
b = RLPy.RVector3(0.00001, 0, 0)

if a.AlmostZero():                 #True
    print("a is ZERO vector.")
if b.AlmostZero():                 #False
    print("a is ZERO vector.")

Cross ( self, vV )

Calculate cross production of the two vectors.

Parameters

vV [IN] The vector - RLPy.RVector3

Returns

New vector which is the cross product of the two vectors - RLPy.RVector3
a = RLPy.RVector3(1, 0, 0)
b = RLPy.RVector3(0, 1, 0)
c = a.Cross(b)

print(str(c.x) + ', ' + str(c.y) + ', ' + str(c.z))   # 0.0, 0.0, 1.0

Distance ( self, vV )

Distance of the two vectors.

Parameters

vV [IN] The vector - RLPy.RVector3

Returns

The distance - float
a = RLPy.RVector3(3, 0, 0)
b = RLPy.RVector3(0, 4, 0)

print(a.Distance(b))    # 5.0

Dot (self, vV)

Calculate dot production of the two vectors.

Parameters

vV [IN] The 3D vector with which to compute the dot product - RLPy.RVector3

Returns

The value of the dot product - float
a = RLPy.RVector3(1, 2, 3)
b = RLPy.RVector3(1, 2, 3)

print(a.Dot(b)) # 14.0

Interpolate ( self, vRatio, vV )

Interpolate of the two vectors.

Parameters

vRatio [IN] ratio value - float
vV [IN] The vector - RLPy.RVector3

Returns

New vector which is the cross product of the two vectors - RLPy.RVector3
a = RLPy.RVector3(10, 20, 30)
b = RLPy.RVector3(1, 2, 3)
c = a.Interpolate(0.1, b)

print(str(c.x) + ', ' + str(c.y) + ', ' + str(c.z))   # 9.100000381469727, 18.200000762939453, 27.299999237060547

Inverse ( self )

Invert all the elements of this 3D vector.

Returns

The inversed vector - RLPy.RVector3

Length ( self )

Length of the vector.

Returns

Length of this vector - float
a = RLPy.RVector3(1, 1, 1)

print(a.Length())   # 1.7320507764816284

Normalize ( self )

Normalizes this vector.

Returns

The normalized vector - float
a = RLPy.RVector3(1, 1, 1)

print(a.Normalize())    #1.7320507764816284
print(str(a.x) + ', ' + str(a.y) + ', ' + str(a.z))   # 0.5773502588272095, 0.5773502588272095, 0.5773502588272095

SetX ( self, tX )

Set the value of the x-axis.

Parameters

tX [IN] the value of the x-axis - float
a = RLPy.RVector3(1, 1, 1)
a.SetX(10)

print(str(a.x) + ', ' + str(a.y) + ', ' + str(a.z))  # 10.0, 1.0, 1.0

SetXYZ ( self, tX, tY, tZ )

Set the value of the all axes.

Parameters

tX [IN] the value of the x-axis - float
tY [IN] the value of the y-axis - float
tZ [IN] the value of the z-axis - float
a = RLPy.RVector3(1, 1, 1)
a.SetXYZ(10, 20, 30)

print(str(a.x) + ', ' + str(a.y) + ', ' + str(a.z)) # 10.0, 20.0, 30.0

SetY ( self, tY )

Set the value of the y-axis.

Parameters

tX [IN] the value of the y-axis.
a = RLPy.RVector3(1, 1, 1)
a.SetY(10)

print(str(a.x) + ', ' + str(a.y) + ', ' + str(a.z))  # 1.0, 10.0, 1.0

SetZ ( self, tZ )

Set the value of the z-axis.

Parameters

tX[IN] the value of the z-axis.
a = RLPy.RVector3(1, 1, 1)
a.SetZ(10)

print(str(a.x) + ', ' + str(a.y) + ', ' + str(a.z))  # 1.0, 1.0, 10.0

SquaredDistance ( self, vV )

Squared distance of the two vectors.

Parameters

vV [IN] The vector - RLPy.RVector3

Returns

The Squared distance - float
a = RLPy.RVector3(1, 1, 1)

print(a.SquaredLength())        # 3.0

SquaredLength ( self )

Squared length of the vector.

Returns

The squared length of this vector - float
a = RLPy.RVector3(1, 1, 1)

print(a.SquaredLength())    # 3.0

XY ( self )

Get the x and y elements of the 2D vector.

Returns

Return the 2D vector - RLPy.RVector2
a = RLPy.RVector3(1, 2, 3)
b = a.XY()

print(str(b.x) + ', ' + str(b.y))   # 1.0, 2.0