IC Python API:RLPy RVector4

From Reallusion Wiki!
Revision as of 01:07, 7 April 2020 by Chuck (RL) (Talk | contribs)

Jump to: navigation, search
Main article: Modules.
Last modified: 04/7/2020

Description

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

Constant Description
RVector4.ZERO 4D zero vector: (0, 0, 0, 0)
RVector4.UNIT_X 4D x unit vector: (1, 0, 0, 0)
RVector4.UNIT_Y 4D y unit vector: (0, 1, 0, 0)
RVector4.UNIT_Z 4D z unit vector: (0, 0, 1, 0)
RVector4.UNIT_W 4D w unit vector: (0, 0, 0, 1)
RVector4.UNIT_XYZW 4D vector: (1, 1, 1, 1)

Constructor & Destructor

__init__ ( )

Initialize a new 4D vector object that is zeroed out: (0, 0, 0, 0).

a = RLPy.RVector4()

__init__ ( a, b, c, d )

Initialize a new 4D vector object as a 4D vector: (x, y, z, w).

Parameters

a [IN] A numerical value for x coordinate - float or int
b [IN] A numerical value for y coordinate - float or int
c [IN] A numerical value for z coordinate - float or int
d [IN] A numerical value for w coordinate - float or int
a = RLPy.RVector4(1, 2, 3, 4)

__init__ ( *args )

Initialize a new 4D vector object with another 4D vector object: args. This new 4D vector object has the same value as *args.

Parameters

args [IN] a 4D vector object - RVector4
a = RLPy.RVector4(1, 2, 3, 4)
b = RLPy.RVector4(a)

Operators

=

The "equal to" operator.

a = RLPy.RVector4(1, 2, 3, 4)
b = a

print(a == b) #True

!=

The "not equal to" operator.

a = RLPy.RVector4()
b = RLPy.RVector4(1, 2, 3, 4)

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.RVector4(0, 1, 5, 2)
b = RLPy.RVector4(0, 1, 5, 3)
c = RLPy.RVector4(1, 0, 1, 0)
d = RLPy.RVector4(0, 1, 5, 2)

print(a < b)        # True
print(b < c)        # True
    print('b < c')
if a < d:           # False
    print('a < d')

>

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.RVector4(0, 1, 5, 2)
b = RLPy.RVector4(0, 1, 5, 3)
c = RLPy.RVector4(1, 0, 1, 0)
d = RLPy.RVector4(0, 1, 5, 2)

if b >a:        # True
print('b >a')
if c >b:        # True
print('c >b')
if a >d:        # True
print('a >d')

<=

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.RVector4(0, 1, 5, 2)
b = RLPy.RVector4(0, 1, 5, 3)
c = RLPy.RVector4(1, 0, 1, 0)
d = RLPy.RVector4(0, 1, 5, 2)

if a<= b:       # True
print('a<= b')
if b<= c:       # True
print('b<= c')
if a<= d:       # True
print('a<= d')

>=

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.RVector4(0, 1, 5, 2)
b = RLPy.RVector4(0, 1, 5, 3)
c = RLPy.RVector4(1, 0, 1, 0)
d = RLPy.RVector4(0, 1, 5, 2)

if b >= a:      # True
print('b >= a')
if c >= b:      # True
print('c >= b')
if a >= d:      # False
print('a >= d')

+

The "addition" operator. Perform a 4D vector addition.

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

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

-

The "subtraction" operator. Perform a 4D vector subtraction.

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

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

*

The "multiplication" operator. Perform a scalar multiplication when the second operand is an integer or float. If the second operand is another 4D vector, then the corresponding elements are multiplied.

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

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

/

The "division" operator. Perform a scalar division when the second operand is an integer or float. If the second operand is another 4D vector, then the corresponding elements are divided.

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

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

-

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

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

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

+=

The "addition assignment" operator.

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

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

-=

The "subtraction assignment" operator.

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

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

*=

The "multiplication assignment" operator. 計算方式請參考 * 運算子.

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

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

/=

The "division assignment" operator. 計算方式請參考 / 運算子.

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

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

Member Functions

Dot (self, vV)

Calculate dot product with the given vector.

a = RLPy.RVector4(1, 2, 3, 4)
b = RLPy.RVector4(1, 2, 3, 4)

print(a.Dot(b)) #30.0

Parameters

vV [IN] The vector to compute dot product - RVector4

Returns

Returns the value of the dot product - float

Inverse (self)

Invert every element of this 4D vector.

a = RLPy.RVector4(0.5, 2, 4, 1)
b = a.Inverse()

print(str(b.x) + ', ' + str(b.y) + ', ' + str(b.z) + ', ' + str(b.w)) # 2.0, 0.5, 0.25, 1.0

Returns

Returns the inversed vector - RVector4

Length (self)

Get the length (magnitude) of this 4D vector.

Returns

4D vector magnitude - float

a = RLPy.RVector4(1, 1, 1, 1)

print(a.Length()) # 2.0

Normalize (self)

Normalize this 4D vector.

Returns

Length of this 4D vector before normalization - float

SetW

Set the value of the w-axis.

a = RLPy.RVector4(1, 1, 1, 1)

print(a.Normalize())    # 2.0
print(str(a.x) + ', ' + str(a.y) + ', ' + str(a.z) + ', ' + str(a.w)) # 0.5, 0.5, 0.5, 0.5

Parameters

tW [IN] the value of the w-axis - float

a = RLPy.RVector4(1, 1, 1, 1)
a.SetW(10)

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

SetX (self, tX)

Set the value of the x-axis.

Parameters

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

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

SetY (self, tY)

Set the value of the y-axis.

Parameters

tY [IN] the value of the y-axis - float
a = RLPy.RVector4(1, 1, 1, 1)
a.SetY(10)

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

SetZ (self, tZ)

Set the value of the z-axis.

Parameters

tZ [IN] the value of the z-axis - float
a = RLPy.RVector4(1, 1, 1, 1)
a.SetZ(10)

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

SquaredLength (self)

Squared length of this 4D vector.

Returns

Returns the squared length of this 4D vector - float
a = RLPy.RVector4(1, 1, 1, 1)

print(a.SquaredLength()) # 4.0

XY (self)

Get the first 2 elements of this 4D vector (X, Y) as a 2D vector.

Returns

Returns a 2D vector - RVector2
a = RLPy.RVector4(1, 2, 3, 4)
b = a.XY()

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

XYZ (self)

Get the first 3 elements of this 4D vector (X, Y, Z) as a 3D vector.

Returns

Returns a 3D vector - RVector3
a = RLPy.RVector4(1, 2, 3, 4)
b = a.XYZ()

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