forked from bartvdbraak/blender
998198a041
each accept Euler/Quaternion/Matrix types. eg: Euler.rotate(Quaternion(axis, angle)) Vector.rotate(Euler((pi/2, 0, 0))) matrix.resize_4x4() and euler.make_compatible() were still returning an instance of themselves, now return None.
56 lines
1.0 KiB
Python
56 lines
1.0 KiB
Python
import mathutils
|
|
|
|
# zero length vector
|
|
vec = mathutils.Vector((0, 0, 1))
|
|
|
|
# unit length vector
|
|
vec_a = vec.copy().normalize()
|
|
|
|
vec_b = mathutils.Vector((0, 1, 2))
|
|
|
|
vec2d = mathutils.Vector((1, 2))
|
|
vec3d = mathutils.Vector((1, 0, 0))
|
|
vec4d = vec_a.to_4d()
|
|
|
|
# other mathutuls types
|
|
quat = mathutils.Quaternion()
|
|
matrix = mathutils.Matrix()
|
|
|
|
# Comparison operators can be done on Vector classes:
|
|
|
|
# greater and less then test vector length.
|
|
vec_a > vec_b
|
|
vec_a >= vec_b
|
|
vec_a < vec_b
|
|
vec_a <= vec_b
|
|
|
|
# ==, != test vector values e.g. 1,2,3 != 3,2,1 even if they are the same length
|
|
vec_a == vec_b
|
|
vec_a != vec_b
|
|
|
|
|
|
# Math can be performed on Vector classes
|
|
vec_a + vec_b
|
|
vec_a - vec_b
|
|
vec_a * vec_b
|
|
vec_a * 10.0
|
|
vec_a * matrix
|
|
vec_a * vec_b
|
|
vec_a * quat
|
|
-vec_a
|
|
|
|
|
|
# You can access a vector object like a sequence
|
|
x = vec_a[0]
|
|
len(vec)
|
|
vec_a[:] = vec_b
|
|
vec2d[:] = vec3d[:2]
|
|
|
|
|
|
# Vectors support 'swizzle' operations
|
|
# See http://en.wikipedia.org/wiki/Swizzling_(computer_graphics)
|
|
vec.xyz = vec.zyx
|
|
vec.xy = vec4d.zw
|
|
vec.xyz = vec4d.wzz
|
|
vec4d.wxyz = vec.yxyx
|