From a81545eb9744e663b102b7bb849c05aa9566f9a7 Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Tue, 17 Mar 2020 16:20:33 -0500 Subject: [PATCH 1/5] add indexed setter for quat --- src/vmath.nim | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/vmath.nim b/src/vmath.nim index 54f12dc..bd46383 100644 --- a/src/vmath.nim +++ b/src/vmath.nim @@ -1191,6 +1191,17 @@ proc `*`*(q: Quat, v: Vec3): Vec3 = result.y = iy * qw + iw * -qy + iz * -qx - ix * -qz result.z = iz * qw + iw * -qz + ix * -qy - iy * -qx +proc `[]=`*(a: var Quat, i: int, b: float32) = + assert(i == 0 or i == 1 or i == 2 or i == 3) + if i == 0: + a.x = b + elif i == 1: + a.y = b + elif i == 2: + a.z = b + elif i == 3: + a.w = b + proc mat3*(q: Quat): Mat3 = var xx = q.x * q.x var xy = q.x * q.y From fd11bced3860e0448d174320c9419a8cb9d928dc Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Tue, 17 Mar 2020 18:15:38 -0500 Subject: [PATCH 2/5] func --- src/vmath.nim | 354 +++++++++++++++++++++++++------------------------- 1 file changed, 177 insertions(+), 177 deletions(-) diff --git a/src/vmath.nim b/src/vmath.nim index bd46383..bc2f13b 100644 --- a/src/vmath.nim +++ b/src/vmath.nim @@ -2,21 +2,21 @@ import math, random, strutils export math -proc between*(value, min, max: float32): bool = +func between*(value, min, max: float32): bool = ## Returns true if value is between min and max or equal to them. (value >= min) and (value <= max) -proc sign*(v: float32): float32 = +func sign*(v: float32): float32 = ## Returns the sign of a number, -1 or 1. if v >= 0: return 1.0 return -1.0 -proc quantize*(v: float32, n: float32): float32 = +func quantize*(v: float32, n: float32): float32 = ## Makes v be multipe of n. Rounding to integer quantize by 1.0. - result = sign(v) * floor(abs(v) / n) * n + sign(v) * floor(abs(v) / n) * n -proc lerp*(a: float32, b: float32, v: float32): float32 = +func lerp*(a: float32, b: float32, v: float32): float32 = ## Interpolates value between a and b. ## * 0 -> a ## * 1 -> b @@ -28,92 +28,92 @@ type Vec2* = object x*: float32 y*: float32 -proc vec2*(x, y: float32): Vec2 = +func vec2*(x, y: float32): Vec2 = result.x = x result.y = y -proc vec2*(a: Vec2): Vec2 = +func vec2*(a: Vec2): Vec2 = result.x = a.x result.y = a.y -proc `+`*(a: Vec2, b: Vec2): Vec2 = +func `+`*(a: Vec2, b: Vec2): Vec2 = result.x = a.x + b.x result.y = a.y + b.y -proc `-`*(a: Vec2, b: Vec2): Vec2 = +func `-`*(a: Vec2, b: Vec2): Vec2 = result.x = a.x - b.x result.y = a.y - b.y -proc `*`*(a: Vec2, b: float32): Vec2 = +func `*`*(a: Vec2, b: float32): Vec2 = result.x = a.x * b result.y = a.y * b -proc `*`*(a: float32, b: Vec2): Vec2 = +func `*`*(a: float32, b: Vec2): Vec2 = b * a -proc `/`*(a: Vec2, b: float32): Vec2 = +func `/`*(a: Vec2, b: float32): Vec2 = result.x = a.x / b result.y = a.y / b -proc `+=`*(a: var Vec2, b: Vec2) = +func `+=`*(a: var Vec2, b: Vec2) = a.x += b.x a.y += b.y -proc `-=`*(a: var Vec2, b: Vec2) = +func `-=`*(a: var Vec2, b: Vec2) = a.x -= b.x a.y -= b.y -proc `*=`*(a: var Vec2, b: float32) = +func `*=`*(a: var Vec2, b: float32) = a.x *= b a.y *= b -proc `/=`*(a: var Vec2, b: float32) = +func `/=`*(a: var Vec2, b: float32) = a.x /= b a.y /= b -proc zero*(a: var Vec2) = +func zero*(a: var Vec2) = a.x = 0 a.y = 0 -proc `-`*(a: Vec2): Vec2 = +func `-`*(a: Vec2): Vec2 = result.x = -a.x result.y = -a.y -proc lengthSq*(a: Vec2): float32 = +func lengthSq*(a: Vec2): float32 = a.x * a.x + a.y * a.y -proc length*(a: Vec2): float32 = +func length*(a: Vec2): float32 = math.sqrt(a.lengthSq) -proc `length=`*(a: var Vec2, b: float32) = +func `length=`*(a: var Vec2, b: float32) = a *= b / a.length -proc normalize*(a: Vec2): Vec2 = +func normalize*(a: Vec2): Vec2 = a / a.length -proc dot*(a: Vec2, b: Vec2): float32 = +func dot*(a: Vec2, b: Vec2): float32 = a.x*b.x + a.y*b.y -proc dir*(at: Vec2, to: Vec2): Vec2 = +func dir*(at: Vec2, to: Vec2): Vec2 = result = (at - to).normalize() -proc dir*(th: float32): Vec2 = +func dir*(th: float32): Vec2 = vec2(cos(th), sin(th)) -proc dist*(at: Vec2, to: Vec2): float32 = +func dist*(at: Vec2, to: Vec2): float32 = (at - to).length -proc distSq*(at: Vec2, to: Vec2): float32 = +func distSq*(at: Vec2, to: Vec2): float32 = (at - to).lengthSq -proc lerp*(a: Vec2, b: Vec2, v: float32): Vec2 = +func lerp*(a: Vec2, b: Vec2, v: float32): Vec2 = a * (1.0 - v) + b * v -proc quantize*(v: Vec2, n: float32): Vec2 = +func quantize*(v: Vec2, n: float32): Vec2 = result.x = sign(v.x) * floor(abs(v.x) / n) * n result.y = sign(v.y) * floor(abs(v.y) / n) * n -proc inRect*(v: Vec2, a: Vec2, b: Vec2): bool = +func inRect*(v: Vec2, a: Vec2, b: Vec2): bool = ## Check to see if v is inside a rectange formed by a and b. ## It does not matter how a and b are arranged. let @@ -121,14 +121,14 @@ proc inRect*(v: Vec2, a: Vec2, b: Vec2): bool = max = vec2(max(a.x, b.x), max(a.y, b.y)) return v.x > min.x and v.x < max.x and v.y > min.y and v.y < max.y -proc `[]`*(a: Vec2, i: int): float32 = +func `[]`*(a: Vec2, i: int): float32 = assert(i == 0 or i == 1) if i == 0: return a.x elif i == 1: return a.y -proc `[]=`*(a: var Vec2, i: int, b: float32) = +func `[]=`*(a: var Vec2, i: int, b: float32) = assert(i == 0 or i == 1) if i == 0: a.x = b @@ -140,12 +140,12 @@ proc randVec2*(): Vec2 = let v = rand(1.0) vec2(cos(a)*v, sin(a)*v) -proc `$`*(a: Vec2): string = +func `$`*(a: Vec2): string = return "(" & a.x.formatfloat(ffDecimal, 4) & ", " & a.y.formatfloat(ffDecimal, 4) & ")" -proc fixAngle*(angle: float32): float32 = +func fixAngle*(angle: float32): float32 = ## Make angle be from -PI to PI radians. var angle = angle while angle > PI: @@ -154,19 +154,19 @@ proc fixAngle*(angle: float32): float32 = angle += PI*2 return angle -proc angle*(a: Vec2): float32 = +func angle*(a: Vec2): float32 = ## Angle of a Vec2. math.arctan2(a.y, a.x) -proc angleBetween*(a: Vec2, b: Vec2): float32 = +func angleBetween*(a: Vec2, b: Vec2): float32 = ## Angle between 2 Vec2. fixAngle(math.arctan2(a.y - b.y, a.x - b.x)) -proc angleBetween*(a, b: float32): float32 = +func angleBetween*(a, b: float32): float32 = ## Angle between angle a and angle b. (b - a).fixAngle -proc turnAngle*(a, b, speed: float32): float32 = +func turnAngle*(a, b, speed: float32): float32 = ## Move from angle a to angle b with step of v. var turn = fixAngle(b - a) @@ -184,12 +184,12 @@ type Vec3* = object y*: float32 z*: float32 -proc vec3*(x, y, z: float32): Vec3 = +func vec3*(x, y, z: float32): Vec3 = result.x = x result.y = y result.z = z -proc vec3*(a: Vec3): Vec3 = +func vec3*(a: Vec3): Vec3 = result.x = a.x result.y = a.y result.z = a.z @@ -198,115 +198,115 @@ const X_DIR* = vec3(1.0, 0.0, 0.0) const Y_DIR* = vec3(0.0, 1.0, 0.0) const Z_DIR* = vec3(0.0, 0.0, 1.0) -proc `+`*(a: Vec3, b: Vec3): Vec3 = +func `+`*(a: Vec3, b: Vec3): Vec3 = result.x = a.x + b.x result.y = a.y + b.y result.z = a.z + b.z -proc `-`*(a: Vec3, b: Vec3): Vec3 = +func `-`*(a: Vec3, b: Vec3): Vec3 = result.x = a.x - b.x result.y = a.y - b.y result.z = a.z - b.z -proc `-`*(a: Vec3): Vec3 = +func `-`*(a: Vec3): Vec3 = result.x = -a.x result.y = -a.y result.z = -a.z -proc `*`*(a: Vec3, b: float32): Vec3 = +func `*`*(a: Vec3, b: float32): Vec3 = result.x = a.x * b result.y = a.y * b result.z = a.z * b -proc `*`*(a: float32, b: Vec3): Vec3 = +func `*`*(a: float32, b: Vec3): Vec3 = b * a -proc `/`*(a: Vec3, b: float32): Vec3 = +func `/`*(a: Vec3, b: float32): Vec3 = result.x = a.x / b result.y = a.y / b result.z = a.z / b -proc `/`*(a: float32, b: Vec3): Vec3 = +func `/`*(a: float32, b: Vec3): Vec3 = result.x = a / b.x result.y = a / b.y result.z = a / b.z -proc `+=`*(a: var Vec3, b: Vec3) = +func `+=`*(a: var Vec3, b: Vec3) = a.x += b.x a.y += b.y a.z += b.z -proc `-=`*(a: var Vec3, b: Vec3) = +func `-=`*(a: var Vec3, b: Vec3) = a.x -= b.x a.y -= b.y a.z -= b.z -proc `*=`*(a: var Vec3, b: float32) = +func `*=`*(a: var Vec3, b: float32) = a.x *= b a.y *= b a.z *= b -proc `/=`*(a: var Vec3, b: float32) = +func `/=`*(a: var Vec3, b: float32) = a.x /= b a.y /= b a.z /= b -proc zero*(a: var Vec3) = +func zero*(a: var Vec3) = a.x = 0 a.y = 0 a.z = 0 -proc `-`*(a: var Vec3): Vec3 = +func `-`*(a: var Vec3): Vec3 = result.x = -a.x result.y = -a.y result.z = -a.z -proc lengthSq*(a: Vec3): float32 = +func lengthSq*(a: Vec3): float32 = a.x * a.x + a.y * a.y + a.z * a.z -proc length*(a: Vec3): float32 = +func length*(a: Vec3): float32 = math.sqrt(a.lengthSq) -proc `length=`*(a: var Vec3, b: float32) = +func `length=`*(a: var Vec3, b: float32) = a *= b / a.length -proc normalize*(a: Vec3): Vec3 = +func normalize*(a: Vec3): Vec3 = return a / math.sqrt(a.x*a.x + a.y*a.y + a.z*a.z) -proc cross*(a: Vec3, b: Vec3): Vec3 = +func cross*(a: Vec3, b: Vec3): Vec3 = result.x = a.y*b.z - a.z*b.y result.y = a.z*b.x - a.x*b.z result.z = a.x*b.y - a.y*b.x -proc computeNormal*(a, b, c: Vec3): Vec3 = +func computeNormal*(a, b, c: Vec3): Vec3 = result = cross(c - b, b - a).normalize() -proc dot*(a: Vec3, b: Vec3): float32 = +func dot*(a: Vec3, b: Vec3): float32 = a.x*b.x + a.y*b.y + a.z*b.z -proc dir*(at: Vec3, to: Vec3): Vec3 = +func dir*(at: Vec3, to: Vec3): Vec3 = result = (at - to).normalize() -proc dist*(at: Vec3, to: Vec3): float32 = +func dist*(at: Vec3, to: Vec3): float32 = (at - to).length -proc distSq*(at: Vec3, to: Vec3): float32 = +func distSq*(at: Vec3, to: Vec3): float32 = (at - to).lengthSq -proc lerp*(a: Vec3, b: Vec3, v: float32): Vec3 = +func lerp*(a: Vec3, b: Vec3, v: float32): Vec3 = a * (1.0 - v) + b * v -proc quantize*(v: Vec3, n: float32): Vec3 = +func quantize*(v: Vec3, n: float32): Vec3 = result.x = sign(v.x) * floor(abs(v.x) / n) * n result.y = sign(v.y) * floor(abs(v.y) / n) * n result.z = sign(v.z) * floor(abs(v.z) / n) * n -proc angleBetween*(a, b: Vec3): float32 = +func angleBetween*(a, b: Vec3): float32 = var dot = dot(a, b) dot = dot / (a.length * b.length) return arccos(dot) -proc `[]`*(a: Vec3, i: int): float32 = +func `[]`*(a: Vec3, i: int): float32 = assert(i == 0 or i == 1 or i == 2) if i == 0: return a.x @@ -315,7 +315,7 @@ proc `[]`*(a: Vec3, i: int): float32 = elif i == 2: return a.z -proc `[]=`*(a: var Vec3, i: int, b: float32) = +func `[]=`*(a: var Vec3, i: int, b: float32) = assert(i == 0 or i == 1 or i == 2) if i == 0: a.x = b @@ -324,25 +324,25 @@ proc `[]=`*(a: var Vec3, i: int, b: float32) = elif i == 2: a.z = b -proc xy*(a: Vec3): Vec2 = +func xy*(a: Vec3): Vec2 = vec2(a.x, a.y) -proc xz*(a: Vec3): Vec2 = +func xz*(a: Vec3): Vec2 = vec2(a.x, a.z) -proc yx*(a: Vec3): Vec2 = +func yx*(a: Vec3): Vec2 = vec2(a.y, a.x) -proc yz*(a: Vec3): Vec2 = +func yz*(a: Vec3): Vec2 = vec2(a.y, a.z) -proc zx*(a: Vec3): Vec2 = +func zx*(a: Vec3): Vec2 = vec2(a.y, a.x) -proc zy*(a: Vec3): Vec2 = +func zy*(a: Vec3): Vec2 = vec2(a.z, a.y) -proc almostEquals*(a, b: Vec3, precision = 1e-6): bool = +func almostEquals*(a, b: Vec3, precision = 1e-6): bool = let c = a - b return abs(c.x) < precision and abs(c.y) < precision and abs(c.z) < precision @@ -359,7 +359,7 @@ proc randVec3*(): Vec3 = cos(th) ) -proc `$`*(a: Vec3): string = +func `$`*(a: Vec3): string = return "(" & a.x.formatfloat(ffDecimal, 8) & ", " & a.y.formatfloat(ffDecimal, 8) & ", " & @@ -372,104 +372,104 @@ type Vec4* = object z*: float32 w*: float32 -proc vec4*(x, y, z, w: float32): Vec4 = +func vec4*(x, y, z, w: float32): Vec4 = result.x = x result.y = y result.z = z result.w = w -proc `+`*(a: Vec4, b: Vec4): Vec4 = +func `+`*(a: Vec4, b: Vec4): Vec4 = result.x = a.x + b.x result.y = a.y + b.y result.z = a.z + b.z result.w = a.w + b.w -proc `-`*(a: Vec4, b: Vec4): Vec4 = +func `-`*(a: Vec4, b: Vec4): Vec4 = result.x = a.x - b.x result.y = a.y - b.y result.z = a.z - b.z result.w = a.w - b.w -proc `-`*(a: Vec4): Vec4 = +func `-`*(a: Vec4): Vec4 = result.x = -a.x result.y = -a.y result.z = -a.z result.w = -a.w -proc `*`*(a: Vec4, b: float32): Vec4 = +func `*`*(a: Vec4, b: float32): Vec4 = result.x = a.x * b result.y = a.y * b result.z = a.z * b result.w = a.w * b -proc `*`*(a: float32, b: Vec4): Vec4 = +func `*`*(a: float32, b: Vec4): Vec4 = b * a -proc `/`*(a: Vec4, b: float32): Vec4 = +func `/`*(a: Vec4, b: float32): Vec4 = result.x = a.x / b result.y = a.y / b result.z = a.z / b result.w = a.w / b -proc `/`*(a: float32, b: Vec4): Vec4 = +func `/`*(a: float32, b: Vec4): Vec4 = result.x = a / b.x result.y = a / b.y result.z = a / b.z result.w = a / b.w -proc `+=`*(a: var Vec4, b: Vec4) = +func `+=`*(a: var Vec4, b: Vec4) = a.x += b.x a.y += b.y a.z += b.z a.w += b.w -proc `-=`*(a: var Vec4, b: Vec4) = +func `-=`*(a: var Vec4, b: Vec4) = a.x -= b.x a.y -= b.y a.z -= b.z a.w -= b.w -proc `*=`*(a: var Vec4, b: float32) = +func `*=`*(a: var Vec4, b: float32) = a.x *= b a.y *= b a.z *= b a.w *= b -proc `/=`*(a: var Vec4, b: float32) = +func `/=`*(a: var Vec4, b: float32) = a.x /= b a.y /= b a.z /= b a.w /= b -proc zero*(a: var Vec4) = +func zero*(a: var Vec4) = a.x = 0 a.y = 0 a.z = 0 a.w = 0 -proc xyz*(a: Vec4): Vec3 = +func xyz*(a: Vec4): Vec3 = vec3(a.x, a.y, a.z) -proc `$`*(a: Vec4): string = +func `$`*(a: Vec4): string = return "(" & a.x.formatfloat(ffDecimal, 8) & ", " & a.y.formatfloat(ffDecimal, 8) & ", " & a.z.formatfloat(ffDecimal, 8) & ", " & a.w.formatfloat(ffDecimal, 8) & ")" -proc vec3*(a: Vec2, z = 0.0): Vec3 = +func vec3*(a: Vec2, z = 0.0): Vec3 = vec3(a.x, a.y, z) -proc vec4*(a: Vec3, w = 0.0): Vec4 = +func vec4*(a: Vec3, w = 0.0): Vec4 = vec4(a.x, a.y, a.z, w) -proc vec4*(a: Vec2, z = 0.0, w = 0.0): Vec4 = +func vec4*(a: Vec2, z = 0.0, w = 0.0): Vec4 = vec4(a.x, a.y, z, w) type Mat3* = array[9, float32] ## 3x3 Matrix -proc mat3*(a, b, c, d, e, f, g, h, i: float32): Mat3 = +func mat3*(a, b, c, d, e, f, g, h, i: float32): Mat3 = result[0] = a result[1] = b result[2] = c @@ -480,10 +480,10 @@ proc mat3*(a, b, c, d, e, f, g, h, i: float32): Mat3 = result[7] = h result[8] = i -proc mat3*(a: Mat3): Mat3 = +func mat3*(a: Mat3): Mat3 = result = a -proc identity*(a: var Mat3) = +func identity*(a: var Mat3) = a[0] = 1 a[1] = 0 a[2] = 0 @@ -494,10 +494,10 @@ proc identity*(a: var Mat3) = a[7] = 0 a[8] = 1 -proc mat3*(): Mat3 = +func mat3*(): Mat3 = result.identity() -proc transpose*(a: Mat3): Mat3 = +func transpose*(a: Mat3): Mat3 = result[0] = a[0] result[1] = a[3] result[2] = a[6] @@ -508,7 +508,7 @@ proc transpose*(a: Mat3): Mat3 = result[7] = a[5] result[8] = a[8] -proc `$`*(a: Mat3): string = +func `$`*(a: Mat3): string = return "[" & a[0].formatfloat(ffDecimal, 4) & ", " & a[1].formatfloat(ffDecimal, 4) & ", " & @@ -520,7 +520,7 @@ proc `$`*(a: Mat3): string = a[7].formatfloat(ffDecimal, 4) & ", " & a[8].formatfloat(ffDecimal, 4) & "]" -proc `*`*(a: Mat3, b: Mat3): Mat3 = +func `*`*(a: Mat3, b: Mat3): Mat3 = let a00 = a[0] a01 = a[1] @@ -554,12 +554,12 @@ proc `*`*(a: Mat3, b: Mat3): Mat3 = result[7] = b20 * a01 + b21 * a11 + b22 * a21 result[8] = b20 * a02 + b21 * a12 + b22 * a22 -proc `*`*(m: Mat3, v: Vec3): Vec3 = +func `*`*(m: Mat3, v: Vec3): Vec3 = result.x = m[0]*v.x + m[1]*v.y + m[2]*v.z result.y = m[3]*v.x + m[4]*v.y + m[5]*v.z result.z = m[6]*v.x + m[7]*v.y + m[8]*v.z -proc scale*(a: Mat3, v: Vec2): Mat3 = +func scale*(a: Mat3, v: Vec2): Mat3 = result[0] = v.x * a[0] result[1] = v.x * a[1] result[2] = v.x * a[2] @@ -570,7 +570,7 @@ proc scale*(a: Mat3, v: Vec2): Mat3 = result[7] = a[7] result[8] = a[8] -proc scale*(a: Mat3, v: Vec3): Mat3 = +func scale*(a: Mat3, v: Vec3): Mat3 = result[0] = v.x * a[0] result[1] = v.x * a[1] result[2] = v.x * a[2] @@ -581,7 +581,7 @@ proc scale*(a: Mat3, v: Vec3): Mat3 = result[7] = v.z * a[7] result[8] = v.z * a[8] -proc rotationMat3*(angle: float32): Mat3 = +func rotationMat3*(angle: float32): Mat3 = # Create a matrix from an angle. let sin = sin(angle) @@ -598,17 +598,17 @@ proc rotationMat3*(angle: float32): Mat3 = result[7] = 0 result[8] = 1 -proc rotate*(a: Mat3, angle: float32): Mat3 = +func rotate*(a: Mat3, angle: float32): Mat3 = # Rotates a matrix by an angle. a * rotationMat3(angle) -proc `*`*(a: Mat3, b: Vec2): Vec2 = +func `*`*(a: Mat3, b: Vec2): Vec2 = result.x = a[0]*b.x + a[1]*b.y + a[6] result.y = a[3]*b.x + a[4]*b.y + a[7] type Mat4* = array[16, float32] ## 4x4 Matrix - OpenGL row order -proc mat4*(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, +func mat4*(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15: float32): Mat4 = result[0] = v0 result[1] = v1 @@ -627,10 +627,10 @@ proc mat4*(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, result[14] = v14 result[15] = v15 -proc mat4*(a: Mat4): Mat4 = +func mat4*(a: Mat4): Mat4 = result = a -proc identity*(): Mat4 = +func identity*(): Mat4 = result[0] = 1 result[1] = 0 result[2] = 0 @@ -648,10 +648,10 @@ proc identity*(): Mat4 = result[14] = 0 result[15] = 1 -proc mat4*(): Mat4 = +func mat4*(): Mat4 = return identity() -proc transpose*(a: Mat4): Mat4 = +func transpose*(a: Mat4): Mat4 = result[0] = a[0] result[1] = a[4] result[2] = a[8] @@ -672,7 +672,7 @@ proc transpose*(a: Mat4): Mat4 = result[14] = a[11] result[15] = a[15] -proc determinant*(a: Mat4): float32 = +func determinant*(a: Mat4): float32 = var a00 = a[0] a01 = a[1] @@ -700,7 +700,7 @@ proc determinant*(a: Mat4): float32 = a20*a01*a12*a33 - a00*a21*a12*a33 - a10*a01*a22*a33 + a00*a11*a22*a33 ) -proc inverse*(a: Mat4): Mat4 = +func inverse*(a: Mat4): Mat4 = var a00 = a[0] a01 = a[1] @@ -753,7 +753,7 @@ proc inverse*(a: Mat4): Mat4 = result[14] = (-a30*b03 + a31*b01 - a32*b00)*invDet result[15] = (+a20*b03 - a21*b01 + a22*b00)*invDet -proc `*`*(a, b: Mat4): Mat4 = +func `*`*(a, b: Mat4): Mat4 = var a00 = a[0] a01 = a[1] @@ -807,56 +807,56 @@ proc `*`*(a, b: Mat4): Mat4 = result[14] = b30*a02 + b31*a12 + b32*a22 + b33*a32 result[15] = b30*a03 + b31*a13 + b32*a23 + b33*a33 -proc `*`*(a: Mat4, b: Vec3): Vec3 = +func `*`*(a: Mat4, b: Vec3): Vec3 = result.x = a[0]*b.x + a[4]*b.y + a[8]*b.z + a[12] result.y = a[1]*b.x + a[5]*b.y + a[9]*b.z + a[13] result.z = a[2]*b.x + a[6]*b.y + a[10]*b.z + a[14] -proc right*(a: Mat4): Vec3 = +func right*(a: Mat4): Vec3 = result.x = a[0] result.y = a[1] result.z = a[2] -proc `right=`*(a: var Mat4, b: Vec3) = +func `right=`*(a: var Mat4, b: Vec3) = a[0] = b.x a[1] = b.y a[2] = b.z -proc up*(a: Mat4): Vec3 = +func up*(a: Mat4): Vec3 = result.x = a[4] result.y = a[5] result.z = a[6] -proc `up=`*(a: var Mat4, b: Vec3) = +func `up=`*(a: var Mat4, b: Vec3) = a[4] = b.x a[5] = b.y a[6] = b.z -proc fov*(a: Mat4): Vec3 = +func fov*(a: Mat4): Vec3 = result.x = a[8] result.y = a[9] result.z = a[10] -proc `fov=`*(a: var Mat4, b: Vec3) = +func `fov=`*(a: var Mat4, b: Vec3) = a[8] = b.x a[9] = b.y a[10] = b.z -proc pos*(a: Mat4): Vec3 = +func pos*(a: Mat4): Vec3 = result.x = a[12] result.y = a[13] result.z = a[14] -proc `pos=`*(a: var Mat4, b: Vec3) = +func `pos=`*(a: var Mat4, b: Vec3) = a[12] = b.x a[13] = b.y a[14] = b.z -proc rotationOnly*(a: Mat4): Mat4 = +func rotationOnly*(a: Mat4): Mat4 = result = a result.pos = vec3(0, 0, 0) -proc dist*(a, b: Mat4): float32 = +func dist*(a, b: Mat4): float32 = var x = a[12] - b[12] y = a[13] - b[13] @@ -864,7 +864,7 @@ proc dist*(a, b: Mat4): float32 = return sqrt(x*x + y*y + z*z) #[ -proc translate*(a: Mat4, v: Vec3): Mat4 = +func translate*(a: Mat4, v: Vec3): Mat4 = var a00 = a[0] a01 = a[1] @@ -898,7 +898,7 @@ proc translate*(a: Mat4, v: Vec3): Mat4 = result[15] = a03*v.x + a13*v.y + a23*v.z + a[15] ]# -proc translate*(v: Vec3): Mat4 = +func translate*(v: Vec3): Mat4 = result[0] = 1 result[5] = 1 result[10] = 1 @@ -907,19 +907,19 @@ proc translate*(v: Vec3): Mat4 = result[13] = v.y result[14] = v.z -proc scale*(v: Vec3): Mat4 = +func scale*(v: Vec3): Mat4 = result[0] = v.x result[5] = v.y result[10] = v.z result[15] = 1 -proc close*(a: Mat4, b: Mat4): bool = +func close*(a: Mat4, b: Mat4): bool = for i in 0..15: if abs(a[i] - b[i]) > 0.001: return false return true -proc hrp*(m: Mat4): Vec3 = +func hrp*(m: Mat4): Vec3 = var heading, pitch, roll: float32 if m[1] > 0.998: # singularity at north pole heading = arctan2(m[2], m[10]) @@ -937,7 +937,7 @@ proc hrp*(m: Mat4): Vec3 = result.y = pitch result.z = roll -proc frustum*(left, right, bottom, top, near, far: float32): Mat4 = +func frustum*(left, right, bottom, top, near, far: float32): Mat4 = var rl = (right - left) tb = (top - bottom) @@ -959,13 +959,13 @@ proc frustum*(left, right, bottom, top, near, far: float32): Mat4 = result[14] = -(far*near*2) / fn result[15] = 0 -proc perspective*(fovy, aspect, near, far: float32): Mat4 = +func perspective*(fovy, aspect, near, far: float32): Mat4 = var top = near * tan(fovy*PI / 360.0) right = top * aspect return frustum(-right, right, -top, top, near, far) -proc ortho*(left, right, bottom, top, near, far: float32): Mat4 = +func ortho*(left, right, bottom, top, near, far: float32): Mat4 = var rl = (right - left) tb = (top - bottom) @@ -987,7 +987,7 @@ proc ortho*(left, right, bottom, top, near, far: float32): Mat4 = result[14] = -(far + near) / fn result[15] = 1 -proc lookAt*(eye, center, up: Vec3): Mat4 = +func lookAt*(eye, center, up: Vec3): Mat4 = var eyex = eye[0] eyey = eye[1] @@ -1064,7 +1064,7 @@ proc lookAt*(eye, center, up: Vec3): Mat4 = result[14] = -(z0*eyex + z1*eyey + z2*eyez) result[15] = 1 -proc toFloat32*(m: Mat4): array[16, float32] = +func toFloat32*(m: Mat4): array[16, float32] = return [ float32 m[00], float32 m[01], float32 m[02], float32 m[03], float32 m[04], float32 m[05], float32 m[06], float32 m[07], @@ -1072,7 +1072,7 @@ proc toFloat32*(m: Mat4): array[16, float32] = float32 m[12], float32 m[13], float32 m[14], float32 m[15] ] -proc `$`*(a: Mat4): string = +func `$`*(a: Mat4): string = return "[" & a[0].formatfloat(ffDecimal, 5) & ", " & a[1].formatfloat(ffDecimal, 5) & ", " & @@ -1097,55 +1097,55 @@ type Quat* = object z*: float32 w*: float32 -proc quat*(x, y, z, w: float32): Quat = +func quat*(x, y, z, w: float32): Quat = result.x = x result.y = y result.z = z result.w = w -proc conjugate*(q: Quat): Quat = +func conjugate*(q: Quat): Quat = result.w = +q.w result.x = -q.x result.y = -q.y result.z = -q.z -proc length*(q: Quat): float32 = +func length*(q: Quat): float32 = return sqrt( q.w * q.w + q.x * q.x + q.y * q.y + q.z * q.z) -proc normalize*(q: Quat): Quat = +func normalize*(q: Quat): Quat = var m = q.length result.x = q.x / m result.y = q.y / m result.z = q.z / m result.w = q.w / m -proc xyz*(q: Quat): Vec3 = +func xyz*(q: Quat): Vec3 = result.x = q.x result.y = q.y result.z = q.z -proc `xyz=`*(q: var Quat, v: Vec3) = +func `xyz=`*(q: var Quat, v: Vec3) = q.x = v.x q.y = v.y q.z = v.z -proc `-`*(a: var Quat): Quat = +func `-`*(a: var Quat): Quat = result.x = -a.x result.y = -a.y result.z = -a.z result.w = -a.w -proc `+`*(a: Quat, b: Quat): Quat = +func `+`*(a: Quat, b: Quat): Quat = result.x = a.x + b.x result.y = a.y + b.y result.z = a.z + b.z result.w = a.w + b.w -proc `*`*(a, b: Quat): Quat = +func `*`*(a, b: Quat): Quat = ## Multiply the quaternion by a quaternion. #[ var q = quat(0,0,0,0) @@ -1163,14 +1163,14 @@ proc `*`*(a, b: Quat): Quat = result.z = a.z * b.w + a.w * b.z + a.x * b.y - a.y * b.x result.w = a.w * b.w - a.x * b.x - a.y * b.y - a.z * b.z -proc `*`*(q: Quat, v: float32): Quat = +func `*`*(q: Quat, v: float32): Quat = ## Multiply the quaternion by a float32. result.x = q.x * v result.y = q.y * v result.z = q.z * v result.w = q.w * v -proc `*`*(q: Quat, v: Vec3): Vec3 = +func `*`*(q: Quat, v: Vec3): Vec3 = ## Multiply the quaternion by a vector. var x = v.x @@ -1191,7 +1191,7 @@ proc `*`*(q: Quat, v: Vec3): Vec3 = result.y = iy * qw + iw * -qy + iz * -qx - ix * -qz result.z = iz * qw + iw * -qz + ix * -qy - iy * -qx -proc `[]=`*(a: var Quat, i: int, b: float32) = +func `[]=`*(a: var Quat, i: int, b: float32) = assert(i == 0 or i == 1 or i == 2 or i == 3) if i == 0: a.x = b @@ -1202,7 +1202,7 @@ proc `[]=`*(a: var Quat, i: int, b: float32) = elif i == 3: a.w = b -proc mat3*(q: Quat): Mat3 = +func mat3*(q: Quat): Mat3 = var xx = q.x * q.x var xy = q.x * q.y var xz = q.x * q.z @@ -1225,7 +1225,7 @@ proc mat3*(q: Quat): Mat3 = result[7] = 0 + 2 * (yz + xw) result[8] = 1 - 2 * (xx + yy) -proc mat4*(q: Quat): Mat4 = +func mat4*(q: Quat): Mat4 = var xx = q.x * q.x var xy = q.x * q.y var xz = q.x * q.z @@ -1256,7 +1256,7 @@ proc mat4*(q: Quat): Mat4 = result[14] = 0 result[15] = 1.0 -proc reciprocalSqrt*(x: float32): float32 = +func recifuncalSqrt*(x: float32): float32 = return 1.0/sqrt(x) proc quat*(m: Mat4): Quat = @@ -1296,7 +1296,7 @@ proc quat*(m: Mat4): Quat = assert abs(q.length - 1.0) < 0.001 return q -proc fromAxisAngle*(axis: Vec3, angle: float32): Quat = +func fromAxisAngle*(axis: Vec3, angle: float32): Quat = var a = axis.normalize() var s = sin(angle / 2) result.x = a.x * s @@ -1304,7 +1304,7 @@ proc fromAxisAngle*(axis: Vec3, angle: float32): Quat = result.z = a.z * s result.w = cos(angle / 2) -proc toAxisAngle*(q: Quat, axis: var Vec3, angle: var float32) = +func toAxisAngle*(q: Quat, axis: var Vec3, angle: var float32) = var cosAngle = q.w angle = arccos(cosAngle) * 2.0 var sinAngle = sqrt(1.0 - cosAngle * cosAngle) @@ -1316,7 +1316,7 @@ proc toAxisAngle*(q: Quat, axis: var Vec3, angle: var float32) = axis.y = q.y / sinAngle axis.z = q.z / sinAngle -proc quat*(heading, pitch, roll: float32): Quat = +func quat*(heading, pitch, roll: float32): Quat = var t0 = cos(heading * 0.5) var t1 = sin(heading * 0.5) var t2 = cos(roll * 0.5) @@ -1328,7 +1328,7 @@ proc quat*(heading, pitch, roll: float32): Quat = result.y = t0 * t2 * t5 + t1 * t3 * t4 result.z = t1 * t2 * t4 - t0 * t3 * t5 -proc hrp*(q: Quat): Vec3 = +func hrp*(q: Quat): Vec3 = var ysqr = q.y * q.y # roll var t0 = +2.0 * (q.w * q.x + q.y * q.z) @@ -1346,42 +1346,42 @@ proc hrp*(q: Quat): Vec3 = var t4 = +1.0 - 2.0 * (ysqr + q.z * q.z) result.x = arctan2(t3, t4) -proc dot*(a: Quat, b: Quat): float32 = +func dot*(a: Quat, b: Quat): float32 = a.x*b.x + a.y*b.y + a.z*b.z + a.w*b.w -proc nlerp*(a: Quat, b: Quat, v: float32): Quat = +func nlerp*(a: Quat, b: Quat, v: float32): Quat = if dot(a, b) < 0: var c = a (-c * (1.0 - v) + b * v).normalize() else: (a * (1.0 - v) + b * v).normalize() -proc `$`*(a: Quat): string = +func `$`*(a: Quat): string = return "q(" & a.x.formatfloat(ffDecimal, 8) & ", " & a.y.formatfloat(ffDecimal, 8) & ", " & a.z.formatfloat(ffDecimal, 8) & ", " & a.w.formatfloat(ffDecimal, 8) & ")" -proc rotate*(angle: float32, axis: Vec3): Mat4 = +func rotate*(angle: float32, axis: Vec3): Mat4 = fromAxisAngle(axis, angle).mat4() -proc rotateX*(angle: float32): Mat4 = +func rotateX*(angle: float32): Mat4 = return rotate(angle, vec3(1, 0, 0)) -proc rotateY*(angle: float32): Mat4 = +func rotateY*(angle: float32): Mat4 = return rotate(angle, vec3(0, 1, 0)) -proc rotateZ*(angle: float32): Mat4 = +func rotateZ*(angle: float32): Mat4 = return rotate(angle, vec3(0, 0, 1)) -proc scaleMat*(scale: Vec3): Mat4 = +func scaleMat*(scale: Vec3): Mat4 = result[0] = scale.x result[5] = scale.y result[10] = scale.z result[15] = 1.0 -proc scaleMat*(scale: float32): Mat4 = +func scaleMat*(scale: float32): Mat4 = return scaleMat(vec3(scale, scale, scale)) type Rect* = object @@ -1390,64 +1390,64 @@ type Rect* = object w*: float32 h*: float32 -proc rect*(x, y, w, h: float32): Rect = +func rect*(x, y, w, h: float32): Rect = result.x = x result.y = y result.w = w result.h = h -proc rect*(pos, size: Vec2): Rect = +func rect*(pos, size: Vec2): Rect = result.x = pos.x result.y = pos.y result.w = size.x result.h = size.y -proc xy*(rect: Rect): Vec2 = +func xy*(rect: Rect): Vec2 = ## Gets the xy as a Vec2. vec2(rect.x, rect.y) -proc `xy=`*(rect: var Rect, v: Vec2) = +func `xy=`*(rect: var Rect, v: Vec2) = ## Sets the xy from Vec2. rect.x = v.x rect.y = v.y -proc wh*(rect: Rect): Vec2 = +func wh*(rect: Rect): Vec2 = ## Gets the wh as a Vec2. vec2(rect.w, rect.h) -proc `wh=`*(rect: var Rect, v: Vec2) = +func `wh=`*(rect: var Rect, v: Vec2) = ## Sets the wh from Vec2. rect.w = v.x rect.h = v.y -proc `*`*(r: Rect, v: float): Rect = +func `*`*(r: Rect, v: float): Rect = ## * all elements of a Rect. rect(r.x * v, r.y * v, r.w * v, r.h * v) -proc `/`*(r: Rect, v: float): Rect = +func `/`*(r: Rect, v: float): Rect = ## / all elements of a Rect. rect(r.x / v, r.y / v, r.w / v, r.h / v) -proc `+`*(a, b: Rect): Rect = +func `+`*(a, b: Rect): Rect = ## Add two boxes together. result.x = a.x + b.x result.y = a.y + b.y result.w = a.w result.h = a.h -proc `$`*(a: Rect): string = +func `$`*(a: Rect): string = return "(" & $a.x & ", " & $a.y & ": " & $a.w & " x " & $a.h & ")" -proc inside*(pos: Vec2, rect: Rect): bool = +func inside*(pos: Vec2, rect: Rect): bool = ## Checks if pos is inside rect. (rect.x <= pos.x and pos.x <= rect.x + rect.w) and ( rect.y <= pos.y and pos.y <= rect.y + rect.h) -proc overlap*(a, b: Rect): bool = +func overlap*(a, b: Rect): bool = ## Returns true if box a overlaps box b. let xOverlap = between(a.x, b.x, b.x + b.w) or between(b.x, a.x, a.x + a.w) From 52f568c1623b334e257d67115372aca7ab104586 Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Tue, 17 Mar 2020 18:35:41 -0500 Subject: [PATCH 3/5] use strformat for $ --- src/vmath.nim | 63 +-- tests/vmathtest.test.txt | 889 ++++++++++++++++++++------------------- 2 files changed, 458 insertions(+), 494 deletions(-) diff --git a/src/vmath.nim b/src/vmath.nim index bc2f13b..9eed19c 100644 --- a/src/vmath.nim +++ b/src/vmath.nim @@ -1,4 +1,4 @@ -import math, random, strutils +import math, random, strformat, strutils export math @@ -141,9 +141,7 @@ proc randVec2*(): Vec2 = vec2(cos(a)*v, sin(a)*v) func `$`*(a: Vec2): string = - return "(" & - a.x.formatfloat(ffDecimal, 4) & ", " & - a.y.formatfloat(ffDecimal, 4) & ")" + &"({a.x:.4f}, {a.y:.4f})" func fixAngle*(angle: float32): float32 = ## Make angle be from -PI to PI radians. @@ -360,10 +358,7 @@ proc randVec3*(): Vec3 = ) func `$`*(a: Vec3): string = - return "(" & - a.x.formatfloat(ffDecimal, 8) & ", " & - a.y.formatfloat(ffDecimal, 8) & ", " & - a.z.formatfloat(ffDecimal, 8) & ")" + &"({a.x:.8f}, {a.y:.8f}, {a.z:.8f})" type Vec4* = object ## 4D Vector. @@ -452,11 +447,7 @@ func xyz*(a: Vec4): Vec3 = vec3(a.x, a.y, a.z) func `$`*(a: Vec4): string = - return "(" & - a.x.formatfloat(ffDecimal, 8) & ", " & - a.y.formatfloat(ffDecimal, 8) & ", " & - a.z.formatfloat(ffDecimal, 8) & ", " & - a.w.formatfloat(ffDecimal, 8) & ")" + &"({a.x:.8f}, {a.y:.8f}, {a.z:.8f}, {a.w:.8f})" func vec3*(a: Vec2, z = 0.0): Vec3 = vec3(a.x, a.y, z) @@ -509,16 +500,9 @@ func transpose*(a: Mat3): Mat3 = result[8] = a[8] func `$`*(a: Mat3): string = - return "[" & - a[0].formatfloat(ffDecimal, 4) & ", " & - a[1].formatfloat(ffDecimal, 4) & ", " & - a[2].formatfloat(ffDecimal, 4) & ", " & - a[3].formatfloat(ffDecimal, 4) & ", " & - a[4].formatfloat(ffDecimal, 4) & ", " & - a[5].formatfloat(ffDecimal, 4) & ", " & - a[6].formatfloat(ffDecimal, 4) & ", " & - a[7].formatfloat(ffDecimal, 4) & ", " & - a[8].formatfloat(ffDecimal, 4) & "]" + &"""[{a[0]:.4f}, {a[1]:.4f}, {a[2]:.4f}, +{a[3]:.4f}, {a[4]:.4f}, {a[5]:.4f}, +{a[6]:.4f}, {a[7]:.4f}, {a[8]:.4f}]""" func `*`*(a: Mat3, b: Mat3): Mat3 = let @@ -1073,23 +1057,10 @@ func toFloat32*(m: Mat4): array[16, float32] = ] func `$`*(a: Mat4): string = - return "[" & - a[0].formatfloat(ffDecimal, 5) & ", " & - a[1].formatfloat(ffDecimal, 5) & ", " & - a[2].formatfloat(ffDecimal, 5) & ", " & - a[3].formatfloat(ffDecimal, 5) & ",\n" & - a[4].formatfloat(ffDecimal, 5) & ", " & - a[5].formatfloat(ffDecimal, 5) & ", " & - a[6].formatfloat(ffDecimal, 5) & ", " & - a[7].formatfloat(ffDecimal, 5) & ",\n " & - a[8].formatfloat(ffDecimal, 5) & ", " & - a[9].formatfloat(ffDecimal, 5) & ", " & - a[10].formatfloat(ffDecimal, 5) & ", " & - a[11].formatfloat(ffDecimal, 5) & ",\n" & - a[12].formatfloat(ffDecimal, 5) & ", " & - a[13].formatfloat(ffDecimal, 5) & ", " & - a[14].formatfloat(ffDecimal, 5) & ", " & - a[15].formatfloat(ffDecimal, 5) & "]" + &"""[{a[0]:.5f}, {a[1]:.5f}, {a[2]:.5f}, {a[3]:.5f}, +{a[4]:.5f}, {a[5]:.5f}, {a[6]:.5f}, {a[7]:.5f}, +{a[8]:.5f}, {a[9]:.5f}, {a[10]:.5f}, {a[11]:.5f}, +{a[12]:.5f}, {a[13]:.5f}, {a[14]:.5f}, {a[15]:.5f},]""" type Quat* = object x*: float32 @@ -1357,11 +1328,7 @@ func nlerp*(a: Quat, b: Quat, v: float32): Quat = (a * (1.0 - v) + b * v).normalize() func `$`*(a: Quat): string = - return "q(" & - a.x.formatfloat(ffDecimal, 8) & ", " & - a.y.formatfloat(ffDecimal, 8) & ", " & - a.z.formatfloat(ffDecimal, 8) & ", " & - a.w.formatfloat(ffDecimal, 8) & ")" + &"q({a.x:.8f}, {a.y:.8f}, {a.z:.8f}, {a.w:.8f})" func rotate*(angle: float32, axis: Vec3): Mat4 = fromAxisAngle(axis, angle).mat4() @@ -1436,11 +1403,7 @@ func `+`*(a, b: Rect): Rect = result.h = a.h func `$`*(a: Rect): string = - return "(" & - $a.x & ", " & - $a.y & ": " & - $a.w & " x " & - $a.h & ")" + &"({a.x}, {a.y}: {a.w} x {a.h})" func inside*(pos: Vec2, rect: Rect): bool = ## Checks if pos is inside rect. diff --git a/tests/vmathtest.test.txt b/tests/vmathtest.test.txt index 3a7a889..471510f 100644 --- a/tests/vmathtest.test.txt +++ b/tests/vmathtest.test.txt @@ -1,3 +1,4 @@ +(10.0, 20.0: 5.0 x 5.0) # angle stuff 0.1000000014901161 should be: 0.1 0.09999990463256836 should be: 0.1 @@ -39,1114 +40,1114 @@ # basic vector mat4 [1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, - 0.00000, 0.00000, 1.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00000, 0.00000, 1.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.00000000, 0.00000000, 0.00000000, 1.00000000) [1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, - 0.00000, 0.00000, 1.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00000, 0.00000, 1.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] # basic vector mat4 -1 [1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, -1.00000, 0.00000, - 0.00000, 1.00000, 0.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00000, 1.00000, 0.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.70710677, 0.00000000, 0.00000000, 0.70710677) [1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, -1.00000, 0.00000, - 0.00000, 1.00000, 0.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00000, 1.00000, 0.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] # Y 90 [0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, - -1.00000, 0.00000, 0.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-1.00000, 0.00000, 0.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.00000000, 0.70710671, 0.00000000, 0.70710677) [0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, - -1.00000, 0.00000, 0.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-1.00000, 0.00000, 0.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] # -Y 90 -[0.00000, -0.00000, -1.00000, 0.00000, -0.00000, 1.00000, -0.00000, 0.00000, - 1.00000, 0.00000, 0.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +[0.00000, 0.00000, -1.00000, 0.00000, +0.00000, 1.00000, 0.00000, 0.00000, +1.00000, 0.00000, 0.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.00000000, -0.70710671, 0.00000000, 0.70710677) -[0.00000, -0.00000, -1.00000, 0.00000, -0.00000, 1.00000, -0.00000, 0.00000, - 1.00000, 0.00000, 0.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +[0.00000, 0.00000, -1.00000, 0.00000, +0.00000, 1.00000, 0.00000, 0.00000, +1.00000, 0.00000, 0.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] # X 90 [1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, -1.00000, 0.00000, - 0.00000, 1.00000, 0.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00000, 1.00000, 0.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.70710671, 0.00000000, 0.00000000, 0.70710677) [1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, -1.00000, 0.00000, - 0.00000, 1.00000, 0.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00000, 1.00000, 0.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] true # Y 90 [1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, -1.00000, 0.00000, - 0.00000, 1.00000, 0.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00000, 1.00000, 0.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.70710671, 0.00000000, 0.00000000, 0.70710677) [1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, -1.00000, 0.00000, - 0.00000, 1.00000, 0.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00000, 1.00000, 0.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] true # 1,1,1 1.11rad [-0.29392, 0.84253, 0.45139, 0.00000, 0.45139, -0.29392, 0.84253, 0.00000, - 0.84253, 0.45139, -0.29392, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.84253, 0.45139, -0.29392, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(0.56875318, 0.56875318, 0.56875318, -0.17192911) [-0.29392, 0.84253, 0.45139, 0.00000, 0.45139, -0.29392, 0.84253, 0.00000, - 0.84253, 0.45139, -0.29392, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.84253, 0.45139, -0.29392, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] # 1,1,1 1.11rad [-0.29392, -0.45139, -0.84253, 0.00000, -0.84253, -0.29392, 0.45139, 0.00000, - -0.45139, 0.84253, -0.29392, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.45139, 0.84253, -0.29392, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(-0.56875318, 0.56875318, 0.56875318, -0.17192911) [-0.29392, -0.45139, -0.84253, 0.00000, -0.84253, -0.29392, 0.45139, 0.00000, - -0.45139, 0.84253, -0.29392, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.45139, 0.84253, -0.29392, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] # 1,1,1 1.11rad [-0.12426, -0.03090, -0.99177, 0.00000, -0.52440, -0.84648, 0.09208, 0.00000, - -0.84236, 0.53152, 0.08898, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.84236, 0.53152, 0.08898, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.63899082, 0.21725684, 0.71758670, -0.17192909) [-0.12426, -0.03090, -0.99177, 0.00000, -0.52440, -0.84648, 0.09208, 0.00000, - -0.84236, 0.53152, 0.08898, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.84236, 0.53152, 0.08898, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] # super random [1.00000, -0.00000, -0.00001, 0.00000, 0.00000, 1.00000, -0.00003, 0.00000, - 0.00001, 0.00003, 1.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00001, 0.00003, 1.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.00001343, -0.00000529, 0.00000046, 1.00000000) [1.00000, -0.00000, -0.00001, 0.00000, 0.00000, 1.00000, -0.00003, 0.00000, - 0.00001, 0.00003, 1.00000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00001, 0.00003, 1.00000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.97395, -0.21888, 0.05932, 0.00000, 0.22420, 0.96867, -0.10682, 0.00000, - -0.03408, 0.11733, 0.99251, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.03408, 0.11733, 0.99251, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.05649684, 0.02354353, 0.11167806, 0.99185777) [0.97395, -0.21888, 0.05932, 0.00000, 0.22420, 0.96867, -0.10682, 0.00000, - -0.03408, 0.11733, 0.99251, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.03408, 0.11733, 0.99251, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.94667, -0.07871, -0.31244, 0.00000, 0.12656, 0.98260, 0.13592, 0.00000, - 0.29630, -0.16821, 0.94016, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.29630, -0.16821, 0.94016, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.07730617, -0.15473069, 0.05217682, 0.98354453) [0.94667, -0.07871, -0.31244, 0.00000, 0.12656, 0.98260, 0.13592, 0.00000, - 0.29630, -0.16821, 0.94016, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.29630, -0.16821, 0.94016, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [1.00000, -0.00248, -0.00009, 0.00000, 0.00248, 0.99999, -0.00365, 0.00000, - 0.00010, 0.00365, 0.99999, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00010, 0.00365, 0.99999, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.00182304, -0.00004744, 0.00123900, 0.99999762) [1.00000, -0.00248, -0.00009, 0.00000, 0.00248, 0.99999, -0.00365, 0.00000, - 0.00010, 0.00365, 0.99999, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.00010, 0.00365, 0.99999, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.32176, 0.36285, -0.87453, 0.00000, 0.77105, 0.43564, 0.46444, 0.00000, - 0.54951, -0.82374, -0.13960, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.54951, -0.82374, -0.13960, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(0.50638878, 0.55979633, -0.16046251, -0.63596427) [0.32176, 0.36285, -0.87453, 0.00000, 0.77105, 0.43564, 0.46444, 0.00000, - 0.54951, -0.82374, -0.13960, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.54951, -0.82374, -0.13960, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.10492, -0.34468, 0.93284, 0.00000, 0.99084, 0.11647, -0.06840, 0.00000, - -0.08507, 0.93147, 0.35374, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.08507, 0.93147, 0.35374, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.39834076, 0.40552813, 0.53206140, 0.62752080) [0.10492, -0.34468, 0.93284, 0.00000, 0.99084, 0.11647, -0.06840, 0.00000, - -0.08507, 0.93147, 0.35374, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.08507, 0.93147, 0.35374, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.60676, 0.44074, 0.66150, 0.00000, -0.77476, -0.14184, -0.61614, 0.00000, - -0.17773, -0.88636, 0.42753, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.17773, -0.88636, 0.42753, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.16397245, -0.50926191, 0.73758608, -0.41198561) [-0.60676, 0.44074, 0.66150, 0.00000, -0.77476, -0.14184, -0.61614, 0.00000, - -0.17773, -0.88636, 0.42753, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.17773, -0.88636, 0.42753, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.99145, 0.10713, 0.07456, 0.00000, -0.11510, 0.98697, 0.11242, 0.00000, - -0.06155, -0.12004, 0.99086, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.06155, -0.12004, 0.99086, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.05833903, 0.03416020, -0.05577203, 0.99615216) [0.99145, 0.10713, 0.07456, 0.00000, -0.11510, 0.98697, 0.11242, 0.00000, - -0.06155, -0.12004, 0.99086, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.06155, -0.12004, 0.99086, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.87604, -0.42938, 0.21949, 0.00000, 0.39134, -0.36704, 0.84388, 0.00000, - -0.28179, 0.82517, 0.48958, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.28179, 0.82517, 0.48958, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(-0.01884186, 0.50483084, 0.82653940, 0.24824029) [-0.87604, -0.42938, 0.21949, 0.00000, 0.39134, -0.36704, 0.84388, 0.00000, - -0.28179, 0.82517, 0.48958, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.28179, 0.82517, 0.48958, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.76733, 0.57804, 0.27762, 0.00000, -0.61101, 0.52767, 0.59011, 0.00000, - 0.19462, -0.62243, 0.75809, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.19462, -0.62243, 0.75809, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.34697443, 0.02375118, -0.34025231, 0.87365496) [0.76733, 0.57804, 0.27762, 0.00000, -0.61101, 0.52767, 0.59011, 0.00000, - 0.19462, -0.62243, 0.75809, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.19462, -0.62243, 0.75809, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.98208, 0.12767, 0.13864, 0.00000, -0.17635, 0.88202, 0.43697, 0.00000, - -0.06650, -0.45359, 0.88873, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.06650, -0.45359, 0.88873, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(-0.22985375, 0.05294601, -0.07846884, 0.96861064) [0.98208, 0.12767, 0.13864, 0.00000, -0.17635, 0.88202, 0.43697, 0.00000, - -0.06650, -0.45359, 0.88873, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.06650, -0.45359, 0.88873, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.38846, -0.89622, 0.21423, 0.00000, -0.51618, -0.40423, -0.75509, 0.00000, - 0.76332, 0.18274, -0.61964, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.76332, 0.18274, -0.61964, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.77658421, -0.45468298, 0.31469420, 0.30190730) [0.38846, -0.89622, 0.21423, 0.00000, -0.51618, -0.40423, -0.75509, 0.00000, - 0.76332, 0.18274, -0.61964, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.76332, 0.18274, -0.61964, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.52243, -0.85199, -0.03449, 0.00000, 0.83840, 0.52063, -0.16136, 0.00000, - 0.15543, 0.05539, 0.98629, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.15543, 0.05539, 0.98629, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.06226622, -0.05455938, 0.48560250, 0.87025076) [0.52243, -0.85199, -0.03449, 0.00000, 0.83840, 0.52063, -0.16136, 0.00000, - 0.15543, 0.05539, 0.98629, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.15543, 0.05539, 0.98629, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.99146, -0.08653, 0.09758, 0.00000, 0.09844, 0.98729, -0.12479, 0.00000, - -0.08554, 0.13333, 0.98737, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.08554, 0.13333, 0.98737, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.06480295, 0.04597623, 0.04643992, 0.99575609) [0.99146, -0.08653, 0.09758, 0.00000, 0.09844, 0.98729, -0.12479, 0.00000, - -0.08554, 0.13333, 0.98737, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.08554, 0.13333, 0.98737, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.90456, 0.15004, 0.39908, 0.00000, 0.41523, 0.09760, 0.90447, 0.00000, - 0.09676, 0.98385, -0.15058, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.09676, 0.98385, -0.15058, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.19263151, 0.73360991, 0.64350235, 0.10302607) [-0.90456, 0.15004, 0.39908, 0.00000, 0.41523, 0.09760, 0.90447, 0.00000, - 0.09676, 0.98385, -0.15058, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.09676, 0.98385, -0.15058, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.85560, 0.13455, -0.49984, 0.00000, 0.36561, 0.52649, 0.76756, 0.00000, - 0.36644, -0.83947, 0.40127, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.36644, -0.83947, 0.40127, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.48162299, -0.25962329, 0.06924627, 0.83417022) [0.85560, 0.13455, -0.49984, 0.00000, 0.36561, 0.52649, 0.76756, 0.00000, - 0.36644, -0.83947, 0.40127, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.36644, -0.83947, 0.40127, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.14804, -0.67929, 0.71878, 0.00000, -0.98590, -0.04401, 0.16145, 0.00000, - -0.07804, -0.73255, -0.67623, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.07804, -0.73255, -0.67623, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.68342477, -0.60913497, 0.23438646, -0.32702926) [0.14804, -0.67929, 0.71878, 0.00000, -0.98590, -0.04401, 0.16145, 0.00000, - -0.07804, -0.73255, -0.67623, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.07804, -0.73255, -0.67623, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.59718, 0.63990, -0.48364, 0.00000, 0.71679, -0.15514, 0.67981, 0.00000, - 0.35998, -0.75264, -0.55131, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.35998, -0.75264, -0.55131, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.75888610, 0.44693285, -0.04073568, -0.47189364) [0.59718, 0.63990, -0.48364, 0.00000, 0.71679, -0.15514, 0.67981, 0.00000, - 0.35998, -0.75264, -0.55131, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.35998, -0.75264, -0.55131, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.96095, 0.01398, 0.27638, 0.00000, 0.05456, -0.96955, 0.23874, 0.00000, - 0.27130, 0.24450, 0.93092, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.27130, 0.24450, 0.93092, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.13935429, 0.12295861, 0.98252487, 0.01032401) [-0.96095, 0.01398, 0.27638, 0.00000, 0.05456, -0.96955, 0.23874, 0.00000, - 0.27130, 0.24450, 0.93092, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.27130, 0.24450, 0.93092, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.99770, -0.05837, -0.03445, 0.00000, 0.05930, 0.99789, 0.02653, 0.00000, - 0.03283, -0.02852, 0.99905, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.03283, -0.02852, 0.99905, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.01377173, -0.01683329, 0.02943581, 0.99933004) [0.99770, -0.05837, -0.03445, 0.00000, 0.05930, 0.99789, 0.02653, 0.00000, - 0.03283, -0.02852, 0.99905, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.03283, -0.02852, 0.99905, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.39924, -0.46001, 0.79309, 0.00000, 0.60555, -0.51720, -0.60482, 0.00000, - 0.68841, 0.72173, 0.07207, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.68841, 0.72173, 0.07207, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(0.67903930, 0.05358480, 0.54544222, 0.48839259) [0.39924, -0.46001, 0.79309, 0.00000, 0.60555, -0.51720, -0.60482, 0.00000, - 0.68841, 0.72173, 0.07207, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.68841, 0.72173, 0.07207, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.13648, 0.34236, 0.92960, 0.00000, 0.82956, -0.55242, 0.08166, 0.00000, - 0.54149, 0.76001, -0.35940, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.54149, 0.76001, -0.35940, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.71559489, 0.40942052, 0.51393986, 0.23699097) [0.13648, 0.34236, 0.92960, 0.00000, 0.82956, -0.55242, 0.08166, 0.00000, - 0.54149, 0.76001, -0.35940, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.54149, 0.76001, -0.35940, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.86612, -0.11537, -0.48634, 0.00000, -0.47522, 0.49169, 0.72966, 0.00000, - 0.15494, 0.86309, -0.48069, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.15494, 0.86309, -0.48069, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.17527284, 0.84239161, 0.47268909, -0.19031772) [-0.86612, -0.11537, -0.48634, 0.00000, -0.47522, 0.49169, 0.72966, 0.00000, - 0.15495, 0.86309, -0.48069, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.15495, 0.86309, -0.48069, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.63101, 0.10641, 0.76845, 0.00000, -0.41191, 0.88534, 0.21564, 0.00000, - -0.65739, -0.45260, 0.60249, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.65739, -0.45260, 0.60249, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.18919335, 0.40368640, -0.14674722, 0.88301104) [0.63101, 0.10641, 0.76845, 0.00000, -0.41191, 0.88534, 0.21564, 0.00000, - -0.65739, -0.45260, 0.60249, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.65739, -0.45260, 0.60249, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.01008, 0.98619, -0.16533, 0.00000, -0.78163, 0.11089, 0.61381, 0.00000, - 0.62367, 0.12304, 0.77195, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.62367, 0.12304, 0.77195, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.17835338, -0.28673568, -0.64245224, 0.68791562) [0.01008, 0.98619, -0.16533, 0.00000, -0.78163, 0.11089, 0.61381, 0.00000, - 0.62367, 0.12304, 0.77195, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.62367, 0.12304, 0.77195, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.66044, 0.52940, -0.53250, 0.00000, 0.70369, -0.68380, 0.19295, 0.00000, - -0.26197, -0.50215, -0.82415, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.26197, -0.50215, -0.82415, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.88999915, 0.34637350, -0.22316624, -0.19525307) [0.66044, 0.52940, -0.53250, 0.00000, 0.70369, -0.68380, 0.19295, 0.00000, - -0.26197, -0.50215, -0.82415, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.26197, -0.50215, -0.82415, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.45724, 0.55278, 0.69668, 0.00000, -0.71868, -0.23176, 0.65558, 0.00000, - 0.52385, -0.80045, 0.29130, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.52385, -0.80045, 0.29130, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(-0.59112227, 0.07016319, -0.51619256, 0.61578977) [0.45724, 0.55278, 0.69668, 0.00000, -0.71868, -0.23176, 0.65558, 0.00000, - 0.52385, -0.80045, 0.29130, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.52385, -0.80045, 0.29130, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.68997, 0.65828, -0.30100, 0.00000, -0.56255, 0.74935, 0.34930, 0.00000, - 0.45549, -0.07168, 0.88735, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.45549, -0.07168, 0.88735, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(-0.11540466, -0.20737976, -0.33467454, 0.91195846) [0.68997, 0.65828, -0.30100, 0.00000, -0.56255, 0.74935, 0.34930, 0.00000, - 0.45549, -0.07168, 0.88735, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.45549, -0.07168, 0.88735, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.68972, -0.71076, 0.13823, 0.00000, 0.60095, 0.45541, -0.65686, 0.00000, - 0.40392, 0.53612, 0.74123, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.40392, 0.53612, 0.74123, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.35109845, -0.07819372, 0.38603899, 0.84946424) [0.68972, -0.71076, 0.13823, 0.00000, 0.60095, 0.45541, -0.65686, 0.00000, - 0.40392, 0.53612, 0.74123, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.40392, 0.53612, 0.74123, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.96580, 0.25817, 0.02426, 0.00000, -0.16826, 0.55275, 0.81619, 0.00000, - 0.19730, -0.79235, 0.57728, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.19730, -0.79235, 0.57728, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(-0.45710310, -0.04917407, -0.12117746, 0.87974685) [0.96580, 0.25817, 0.02426, 0.00000, -0.16826, 0.55275, 0.81619, 0.00000, - 0.19730, -0.79235, 0.57728, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.19730, -0.79235, 0.57728, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.47114, 0.38412, -0.79403, 0.00000, 0.17296, -0.92295, -0.34386, 0.00000, - -0.86494, 0.02467, -0.50128, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.86494, 0.02467, -0.50128, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.85078859, 0.16369632, -0.48747876, 0.10828992) [0.47114, 0.38412, -0.79403, 0.00000, 0.17296, -0.92295, -0.34386, 0.00000, - -0.86494, 0.02467, -0.50128, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.86494, 0.02467, -0.50128, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.68017, 0.33197, -0.65358, 0.00000, 0.46974, 0.48710, 0.73626, 0.00000, - 0.56278, -0.80779, 0.17537, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.56278, -0.80779, 0.17537, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.50440311, -0.39735585, 0.04500394, 0.76528460) [0.68017, 0.33197, -0.65358, 0.00000, 0.46974, 0.48710, 0.73626, 0.00000, - 0.56278, -0.80779, 0.17537, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.56278, -0.80779, 0.17537, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.82173, 0.34048, 0.45698, 0.00000, -0.30644, -0.41209, 0.85806, 0.00000, - 0.48048, -0.84513, -0.23429, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.48048, -0.84513, -0.23429, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.78551066, 0.01083405, 0.29835981, -0.54206729) [0.82173, 0.34048, 0.45698, 0.00000, -0.30644, -0.41209, 0.85806, 0.00000, - 0.48048, -0.84513, -0.23429, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.48048, -0.84513, -0.23429, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.99269, 0.10323, 0.06248, 0.00000, -0.10451, 0.99437, 0.01750, 0.00000, - -0.06032, -0.02390, 0.99789, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.06032, -0.02390, 0.99789, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(-0.01036874, 0.03075673, -0.05203391, 0.99811769) [0.99269, 0.10323, 0.06248, 0.00000, -0.10451, 0.99437, 0.01750, 0.00000, - -0.06032, -0.02390, 0.99789, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.06032, -0.02390, 0.99789, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.04076, 0.13949, 0.98938, 0.00000, -0.38443, 0.91617, -0.11333, 0.00000, - -0.92225, -0.37573, 0.09097, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.92225, -0.37573, 0.09097, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.09168385, 0.66791552, -0.18305425, 0.71552366) [0.04076, 0.13949, 0.98938, 0.00000, -0.38443, 0.91617, -0.11333, 0.00000, - -0.92225, -0.37573, 0.09097, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.92225, -0.37573, 0.09097, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.70039, -0.51763, 0.49144, 0.00000, 0.64160, -0.75826, 0.11571, 0.00000, - 0.31275, 0.39635, 0.86319, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.31275, 0.39635, 0.86319, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.22061765, 0.14047730, 0.91129565, 0.31801611) [-0.70039, -0.51763, 0.49144, 0.00000, 0.64160, -0.75826, 0.11571, 0.00000, - 0.31275, 0.39635, 0.86319, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.31275, 0.39635, 0.86319, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.43342, 0.35672, 0.82758, 0.00000, 0.70293, -0.44085, 0.55816, 0.00000, - 0.56395, 0.82365, -0.05968, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.56395, 0.82365, -0.05968, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.51650250, 0.51289678, 0.67353475, 0.12850328) [-0.43342, 0.35672, 0.82758, 0.00000, 0.70293, -0.44085, 0.55816, 0.00000, - 0.56395, 0.82365, -0.05968, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.56395, 0.82365, -0.05968, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.95694, 0.11340, -0.26721, 0.00000, -0.03357, 0.95759, 0.28617, 0.00000, - 0.28833, -0.26488, 0.92017, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.28833, -0.26488, 0.92017, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.14069842, -0.14184536, -0.03752568, 0.97911990) [0.95694, 0.11340, -0.26721, 0.00000, -0.03357, 0.95759, 0.28617, 0.00000, - 0.28833, -0.26488, 0.92017, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.28833, -0.26488, 0.92017, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.91883, 0.00996, -0.39452, 0.00000, -0.20739, 0.86271, -0.46123, 0.00000, - 0.33576, 0.50561, 0.79475, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.33576, 0.50561, 0.79475, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.25562668, -0.19308443, -0.05746438, 0.94555342) [0.91883, 0.00996, -0.39452, 0.00000, -0.20739, 0.86271, -0.46123, 0.00000, - 0.33576, 0.50561, 0.79475, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.33576, 0.50561, 0.79475, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.07180, 0.65977, 0.74803, 0.00000, 0.83979, 0.36465, -0.40223, 0.00000, - -0.53815, 0.65707, -0.52788, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.53815, 0.65707, -0.52788, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.55566227, 0.67467165, 0.09442838, 0.47659305) [0.07180, 0.65977, 0.74803, 0.00000, 0.83979, 0.36465, -0.40223, 0.00000, - -0.53815, 0.65707, -0.52788, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.53815, 0.65707, -0.52788, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.88424, -0.10799, 0.45437, 0.00000, 0.16746, 0.98152, -0.09261, 0.00000, - -0.43597, 0.15797, 0.88599, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.43597, 0.15797, 0.88599, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.06468361, 0.22983082, 0.07110307, 0.96847212) [0.88424, -0.10799, 0.45437, 0.00000, 0.16746, 0.98152, -0.09261, 0.00000, - -0.43597, 0.15797, 0.88599, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.43597, 0.15797, 0.88599, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.93832, -0.10884, 0.32818, 0.00000, 0.19846, 0.94678, -0.25343, 0.00000, - -0.28313, 0.30293, 0.90998, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.28313, 0.30293, 0.90998, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(0.14279549, 0.15690050, 0.07887369, 0.97404867) [0.93832, -0.10884, 0.32818, 0.00000, 0.19846, 0.94678, -0.25343, 0.00000, - -0.28313, 0.30293, 0.90998, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.28313, 0.30293, 0.90998, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.99970, -0.00018, 0.02446, 0.00000, 0.00139, 0.99878, -0.04946, 0.00000, - -0.02442, 0.04948, 0.99848, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.02442, 0.04948, 0.99848, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.02474281, 0.01222670, 0.00039065, 0.99961895) [0.99970, -0.00018, 0.02446, 0.00000, 0.00139, 0.99878, -0.04946, 0.00000, - -0.02442, 0.04948, 0.99848, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.02442, 0.04948, 0.99848, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.30102, -0.59355, 0.74638, 0.00000, 0.66022, -0.69448, -0.28601, 0.00000, - 0.68811, 0.40668, 0.60092, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.68811, 0.40668, 0.60092, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.44512418, 0.03744400, 0.80567110, 0.38904569) [-0.30102, -0.59355, 0.74638, 0.00000, 0.66022, -0.69448, -0.28601, 0.00000, - 0.68811, 0.40668, 0.60092, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.68811, 0.40668, 0.60092, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.17850, 0.78196, 0.59723, 0.00000, 0.43753, 0.48059, -0.76001, 0.00000, - -0.88131, 0.39697, -0.25634, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.88131, 0.39697, -0.25634, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.48843083, 0.62418407, -0.14540546, 0.59218812) [0.17850, 0.78196, 0.59723, 0.00000, 0.43753, 0.48059, -0.76001, 0.00000, - -0.88131, 0.39697, -0.25634, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.88131, 0.39697, -0.25634, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.03685, 0.92625, 0.37510, 0.00000, -0.98226, 0.10264, -0.15695, 0.00000, - -0.18387, -0.36266, 0.91360, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.18387, -0.36266, 0.91360, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.07178406, 0.19505545, -0.66597968, 0.71642965) [0.03685, 0.92625, 0.37510, 0.00000, -0.98226, 0.10264, -0.15695, 0.00000, - -0.18387, -0.36266, 0.91360, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.18387, -0.36266, 0.91360, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.83761, -0.54475, -0.04055, 0.00000, 0.12632, 0.26538, -0.95583, 0.00000, - 0.53146, 0.79550, 0.29110, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.53146, 0.79550, 0.29110, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.56593466, -0.18484178, 0.21685570, 0.77364403) [0.83761, -0.54475, -0.04055, 0.00000, 0.12632, 0.26538, -0.95583, 0.00000, - 0.53146, 0.79550, 0.29110, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.53146, 0.79550, 0.29110, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.43006, 0.87754, 0.21208, 0.00000, -0.81495, 0.27627, 0.50944, 0.00000, - 0.38846, -0.39192, 0.83396, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.38846, -0.39192, 0.83396, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(-0.28276458, -0.05533335, -0.53095096, 0.79691494) [0.43006, 0.87754, 0.21208, 0.00000, -0.81495, 0.27627, 0.50944, 0.00000, - 0.38846, -0.39192, 0.83396, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.38846, -0.39192, 0.83396, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.49790, -0.43149, 0.75227, 0.00000, -0.16290, -0.89853, -0.40756, 0.00000, - 0.85180, 0.08038, -0.51767, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.85180, 0.08038, -0.51767, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.85353690, -0.17409784, 0.46982917, 0.14291708) [0.49790, -0.43149, 0.75227, 0.00000, -0.16290, -0.89853, -0.40756, 0.00000, - 0.85180, 0.08038, -0.51767, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.85180, 0.08038, -0.51767, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.96656, -0.24694, -0.06913, 0.00000, 0.21763, 0.93252, -0.28817, 0.00000, - 0.13562, 0.26349, 0.95508, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.13562, 0.26349, 0.95508, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.14050016, -0.05214720, 0.11831976, 0.98160112) [0.96656, -0.24694, -0.06913, 0.00000, 0.21763, 0.93252, -0.28817, 0.00000, - 0.13562, 0.26349, 0.95508, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.13562, 0.26349, 0.95508, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.35673, -0.93393, -0.02281, 0.00000, -0.06121, -0.00100, 0.99812, 0.00000, - -0.93220, 0.35746, -0.05681, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.93220, 0.35746, -0.05681, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.41865101, 0.59425157, 0.57029128, 0.38257596) [-0.35673, -0.93393, -0.02281, 0.00000, -0.06121, -0.00100, 0.99812, 0.00000, - -0.93220, 0.35746, -0.05681, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.93220, 0.35746, -0.05681, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.79157, 0.37663, -0.48120, 0.00000, 0.46437, 0.88262, -0.07307, 0.00000, - 0.39720, -0.28130, -0.87356, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.39720, -0.28130, -0.87356, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.22325027, 0.94177395, -0.09407052, -0.23317777) [-0.79157, 0.37663, -0.48120, 0.00000, 0.46437, 0.88262, -0.07307, 0.00000, - 0.39720, -0.28130, -0.87356, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.39720, -0.28130, -0.87356, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.58696, 0.73250, 0.34484, 0.00000, 0.80692, -0.56400, -0.17545, 0.00000, - 0.06597, 0.38124, -0.92212, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.06597, 0.38124, -0.92212, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.87651014, 0.43907708, 0.11717352, 0.15878169) [0.58696, 0.73250, 0.34484, 0.00000, 0.80692, -0.56400, -0.17545, 0.00000, - 0.06597, 0.38124, -0.92212, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.06597, 0.38124, -0.92212, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.99366, 0.03989, -0.10508, 0.00000, -0.03685, 0.99885, 0.03069, 0.00000, - 0.10619, -0.02662, 0.99399, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.10619, -0.02662, 0.99399, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(-0.01435086, -0.05290667, -0.01921598, 0.99831134) [0.99366, 0.03989, -0.10508, 0.00000, -0.03685, 0.99885, 0.03069, 0.00000, - 0.10619, -0.02662, 0.99399, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.10619, -0.02662, 0.99399, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.76590, -0.48243, -0.42503, 0.00000, 0.50391, -0.86098, 0.06921, 0.00000, - -0.39934, -0.16117, 0.90253, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.39934, -0.16117, 0.90253, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(-0.21940246, -0.02447371, 0.93933558, 0.26251179) [-0.76590, -0.48243, -0.42503, 0.00000, 0.50391, -0.86098, 0.06921, 0.00000, - -0.39934, -0.16117, 0.90253, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.39934, -0.16117, 0.90253, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.76443, -0.64402, 0.02966, 0.00000, 0.57342, 0.65816, -0.48786, 0.00000, - 0.29467, 0.38994, 0.87242, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.29467, 0.38994, 0.87242, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.24178869, -0.07299490, 0.33534470, 0.90760881) [0.76443, -0.64402, 0.02966, 0.00000, 0.57342, 0.65816, -0.48786, 0.00000, - 0.29467, 0.38994, 0.87242, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.29467, 0.38994, 0.87242, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.58724, -0.04069, 0.80839, 0.00000, 0.10143, 0.99456, -0.02362, 0.00000, - -0.80303, 0.09587, 0.58817, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.80303, 0.09587, 0.58817, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.03355663, 0.45253381, 0.03991234, 0.89022142) [0.58724, -0.04069, 0.80839, 0.00000, 0.10143, 0.99456, -0.02362, 0.00000, - -0.80303, 0.09587, 0.58817, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.80303, 0.09587, 0.58817, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.81812, 0.30688, -0.48631, 0.00000, 0.31034, 0.47635, 0.82267, 0.00000, - 0.48412, -0.82396, 0.29447, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.48412, -0.82396, 0.29447, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.51168895, -0.30156037, 0.00107313, 0.80450892) [0.81812, 0.30688, -0.48631, 0.00000, 0.31034, 0.47635, 0.82267, 0.00000, - 0.48412, -0.82396, 0.29447, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.48412, -0.82396, 0.29447, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.99349, -0.10814, -0.03584, 0.00000, 0.09800, 0.97162, -0.21529, 0.00000, - 0.05810, 0.21038, 0.97589, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.05810, 0.21038, 0.97589, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(0.10721210, -0.02366120, 0.05191907, 0.99259776) [0.99349, -0.10814, -0.03584, 0.00000, 0.09800, 0.97162, -0.21529, 0.00000, - 0.05810, 0.21038, 0.97589, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.05810, 0.21038, 0.97589, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.05383, 0.90779, 0.41595, 0.00000, 0.03822, -0.41437, 0.90930, 0.00000, - 0.99782, 0.06484, -0.01239, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.99782, 0.06484, -0.01239, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.58586085, 0.40368420, 0.60328585, -0.36035025) [-0.05383, 0.90779, 0.41595, 0.00000, 0.03822, -0.41437, 0.90930, 0.00000, - 0.99782, 0.06484, -0.01239, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.99782, 0.06484, -0.01239, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.52480, -0.47998, 0.70300, 0.00000, 0.63964, 0.76728, 0.04636, 0.00000, - -0.56165, 0.42533, 0.70968, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.56165, 0.42533, 0.70968, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.10936649, 0.36496523, 0.32311100, 0.86627859) [0.52480, -0.47998, 0.70300, 0.00000, 0.63964, 0.76728, 0.04636, 0.00000, - -0.56165, 0.42533, 0.70968, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.56165, 0.42533, 0.70968, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.17797, 0.19436, -0.96465, 0.00000, -0.09534, 0.97909, 0.17968, 0.00000, - 0.97941, 0.06000, 0.19278, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.97941, 0.06000, 0.19278, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.03903852, -0.63410169, -0.09449502, 0.76646054) [0.17797, 0.19436, -0.96465, 0.00000, -0.09534, 0.97909, 0.17968, 0.00000, - 0.97941, 0.06000, 0.19278, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.97941, 0.06000, 0.19278, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.66028, 0.72989, -0.17691, 0.00000, -0.48848, 0.59630, 0.63703, 0.00000, - 0.57046, -0.33420, 0.75026, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.57046, -0.33420, 0.75026, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.28005207, -0.21550162, -0.35131127, 0.86701232) [0.66028, 0.72989, -0.17691, 0.00000, -0.48848, 0.59630, 0.63703, 0.00000, - 0.57046, -0.33420, 0.75026, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.57046, -0.33420, 0.75026, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.96364, -0.26599, -0.02556, 0.00000, 0.10614, 0.46881, -0.87690, 0.00000, - 0.24523, 0.84230, 0.48000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.24523, 0.84230, 0.48000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.50369245, -0.07933722, 0.10902732, 0.85329515) [0.96364, -0.26599, -0.02556, 0.00000, 0.10614, 0.46881, -0.87690, 0.00000, - 0.24523, 0.84230, 0.48000, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.24523, 0.84230, 0.48000, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.80150, 0.28098, 0.52788, 0.00000, 0.57077, -0.09613, -0.81546, 0.00000, - -0.17839, 0.95489, -0.23742, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.17839, 0.95489, -0.23742, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.73058909, 0.29146054, 0.11959133, 0.60579556) [0.80150, 0.28098, 0.52788, 0.00000, 0.57077, -0.09613, -0.81546, 0.00000, - -0.17839, 0.95489, -0.23742, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.17839, 0.95489, -0.23742, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.96065, 0.27370, 0.04738, 0.00000, -0.27697, 0.93092, 0.23805, 0.00000, - 0.02105, -0.24180, 0.97010, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.02105, -0.24180, 0.97010, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(-0.12209239, 0.00669971, -0.14011085, 0.98255658) [0.96065, 0.27370, 0.04738, 0.00000, -0.27697, 0.93092, 0.23805, 0.00000, - 0.02105, -0.24180, 0.97010, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.02105, -0.24180, 0.97010, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.59943, -0.24741, -0.76123, 0.00000, -0.71064, -0.27316, 0.64836, 0.00000, - -0.36835, 0.92961, -0.01208, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.36835, 0.92961, -0.01208, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.41406831, 0.57843572, 0.68200094, -0.16980669) [-0.59943, -0.24741, -0.76123, 0.00000, -0.71064, -0.27316, 0.64836, 0.00000, - -0.36835, 0.92961, -0.01208, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.36835, 0.92961, -0.01208, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.80108, 0.30835, 0.51303, 0.00000, 0.22141, 0.64366, -0.73258, 0.00000, - -0.55611, 0.70044, 0.44735, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.55611, 0.70044, 0.44735, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(0.42132452, 0.31433791, -0.02556053, 0.85030824) [0.80108, 0.30835, 0.51303, 0.00000, 0.22141, 0.64366, -0.73258, 0.00000, - -0.55611, 0.70044, 0.44735, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.55611, 0.70044, 0.44735, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.54836, 0.24637, 0.79913, 0.00000, 0.58846, -0.79266, -0.15942, 0.00000, - 0.59415, 0.55767, -0.57964, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.59415, 0.55767, -0.57964, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(0.85449642, 0.24424680, 0.40763196, 0.20979841) [0.54836, 0.24637, 0.79913, 0.00000, 0.58846, -0.79266, -0.15942, 0.00000, - 0.59415, 0.55767, -0.57964, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.59415, 0.55767, -0.57964, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.02480, 0.03395, 0.99912, 0.00000, 0.21110, -0.97671, 0.03843, 0.00000, - 0.97715, 0.21186, 0.01706, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.97715, 0.21186, 0.01706, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.69549477, 0.08808376, 0.71038139, 0.06234292) [-0.02480, 0.03395, 0.99912, 0.00000, 0.21110, -0.97671, 0.03843, 0.00000, - 0.97715, 0.21186, 0.01706, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.97715, 0.21186, 0.01706, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.34816, 0.91344, 0.21075, 0.00000, -0.52149, 0.00191, 0.85325, 0.00000, - 0.77899, -0.40697, 0.47702, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.77899, -0.40697, 0.47702, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.46616358, -0.21019663, -0.53078848, 0.67584956) [0.34816, 0.91344, 0.21075, 0.00000, -0.52149, 0.00191, 0.85325, 0.00000, - 0.77899, -0.40697, 0.47702, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.77899, -0.40697, 0.47702, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.74915, 0.44235, 0.49305, 0.00000, 0.59655, 0.77409, 0.21192, 0.00000, - -0.28792, 0.45289, -0.84380, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.28792, 0.45289, -0.84380, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.28308913, 0.91747409, 0.18115196, 0.21280490) [-0.74915, 0.44235, 0.49305, 0.00000, 0.59655, 0.77409, 0.21192, 0.00000, - -0.28792, 0.45289, -0.84380, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.28792, 0.45289, -0.84380, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.98484, -0.12502, -0.12026, 0.00000, -0.16038, 0.39208, 0.90584, 0.00000, - -0.06610, 0.91140, -0.40618, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.06610, 0.91140, -0.40618, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(-0.08554069, 0.83413094, 0.54465115, -0.01623123) [-0.98484, -0.12502, -0.12026, 0.00000, -0.16038, 0.39208, 0.90584, 0.00000, - -0.06610, 0.91140, -0.40618, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.06610, 0.91140, -0.40618, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.63527, -0.76275, -0.12103, 0.00000, -0.61554, -0.59471, 0.51714, 0.00000, - -0.46642, -0.25403, -0.84730, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.46642, -0.25403, -0.84730, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.87710935, -0.39284909, -0.16743849, -0.21980277) [0.63527, -0.76275, -0.12103, 0.00000, -0.61554, -0.59471, 0.51714, 0.00000, - -0.46642, -0.25403, -0.84730, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.46642, -0.25403, -0.84730, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.42680, 0.76573, 0.48114, 0.00000, 0.88698, 0.25069, 0.38784, 0.00000, - 0.17636, 0.59230, -0.78618, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.17636, 0.59230, -0.78618, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.52647084, 0.78480536, 0.31222209, 0.09708924) [-0.42680, 0.76573, 0.48114, 0.00000, 0.88698, 0.25069, 0.38784, 0.00000, - 0.17636, 0.59230, -0.78618, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.17636, 0.59230, -0.78618, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.43865, 0.84116, -0.31629, 0.00000, 0.84588, 0.26763, -0.46137, 0.00000, - -0.30344, -0.46992, -0.82892, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.30344, -0.46992, -0.82892, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.52977055, 0.79611599, -0.29244864, -0.00403502) [-0.43865, 0.84116, -0.31629, 0.00000, 0.84588, 0.26763, -0.46137, 0.00000, - -0.30344, -0.46992, -0.82892, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.30344, -0.46992, -0.82892, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.27254, 0.95445, -0.12147, 0.00000, 0.43933, -0.23577, -0.86684, 0.00000, - -0.85599, 0.18288, -0.48357, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.85599, 0.18288, -0.48357, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(0.70566976, 0.49377745, -0.34628648, 0.37188703) [0.27254, 0.95445, -0.12147, 0.00000, 0.43933, -0.23577, -0.86684, 0.00000, - -0.85599, 0.18288, -0.48357, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.85599, 0.18288, -0.48357, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.87212, 0.33129, -0.36007, 0.00000, -0.08457, 0.82689, 0.55598, 0.00000, - 0.48193, -0.45443, 0.74916, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.48193, -0.45443, 0.74916, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.27206343, -0.22672045, -0.11197562, 0.92846149) [0.87212, 0.33129, -0.36007, 0.00000, -0.08457, 0.82689, 0.55598, 0.00000, - 0.48193, -0.45443, 0.74916, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.48193, -0.45443, 0.74916, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.86997, -0.45053, -0.20044, 0.00000, -0.42070, -0.89018, 0.17491, 0.00000, - -0.25723, -0.06785, -0.96397, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.25723, -0.06785, -0.96397, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.96489829, -0.22573029, -0.11857944, -0.06289791) [0.86997, -0.45053, -0.20044, 0.00000, -0.42070, -0.89018, 0.17491, 0.00000, - -0.25723, -0.06785, -0.96397, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.25723, -0.06785, -0.96397, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.33557, 0.85634, 0.39252, 0.00000, -0.34059, -0.27820, 0.89811, 0.00000, - 0.87829, -0.43507, 0.19831, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.87829, -0.43507, 0.19831, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.59486568, -0.21675034, -0.53407180, 0.56028700) [0.33557, 0.85634, 0.39252, 0.00000, -0.34059, -0.27820, 0.89811, 0.00000, - 0.87829, -0.43507, 0.19831, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.87829, -0.43507, 0.19831, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.22452, 0.31579, 0.92188, 0.00000, -0.25681, 0.93177, -0.25663, 0.00000, - -0.94002, -0.17913, 0.29030, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.94002, -0.17913, 0.29030, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.02477232, 0.59517753, -0.18303882, 0.78207844) [0.22452, 0.31579, 0.92188, 0.00000, -0.25681, 0.93177, -0.25663, 0.00000, - -0.94002, -0.17913, 0.29030, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.94002, -0.17913, 0.29030, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.59473, 0.79824, -0.09549, 0.00000, 0.59517, 0.51703, 0.61518, 0.00000, - 0.54044, 0.30903, -0.78258, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.54044, 0.30903, -0.78258, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(0.40951881, 0.85063720, 0.27162424, -0.18689792) [-0.59473, 0.79824, -0.09549, 0.00000, 0.59517, 0.51703, 0.61518, 0.00000, - 0.54044, 0.30903, -0.78258, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.54044, 0.30903, -0.78258, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.95513, -0.10834, 0.27565, 0.00000, 0.10907, 0.99395, 0.01270, 0.00000, - -0.27536, 0.01793, 0.96117, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.27536, 0.01793, 0.96117, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.00132331, 0.13932329, 0.05497207, 0.98871905) [0.95513, -0.10834, 0.27565, 0.00000, 0.10907, 0.99395, 0.01270, 0.00000, - -0.27536, 0.01793, 0.96117, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.27536, 0.01793, 0.96117, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.59268, 0.61558, -0.51942, 0.00000, -0.05237, 0.67298, 0.73780, 0.00000, - 0.80374, -0.41008, 0.43110, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.80374, -0.41008, 0.43110, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(-0.34949958, -0.40286580, -0.20337182, 0.82109016) [0.59268, 0.61558, -0.51942, 0.00000, -0.05237, 0.67298, 0.73780, 0.00000, - 0.80374, -0.41008, 0.43110, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.80374, -0.41008, 0.43110, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.28953, 0.92730, -0.23727, 0.00000, -0.91611, 0.34028, 0.21201, 0.00000, - 0.27734, 0.15598, 0.94803, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.27734, 0.15598, 0.94803, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.01744772, -0.16025776, -0.57406783, 0.80278224) [0.28953, 0.92730, -0.23727, 0.00000, -0.91611, 0.34028, 0.21201, 0.00000, - 0.27734, 0.15598, 0.94803, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.27734, 0.15598, 0.94803, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.84054, -0.12278, 0.52766, 0.00000, 0.08221, 0.99161, 0.09978, 0.00000, - -0.53548, -0.04049, 0.84357, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.53548, -0.04049, 0.84357, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(-0.03658033, 0.27726230, 0.05346029, 0.95860803) [0.84054, -0.12278, 0.52766, 0.00000, 0.08221, 0.99161, 0.09978, 0.00000, - -0.53548, -0.04049, 0.84358, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.53548, -0.04049, 0.84358, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.66013, 0.73211, -0.16806, 0.00000, -0.27955, 0.44711, 0.84968, 0.00000, - 0.69720, -0.51392, 0.49981, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.69720, -0.51392, 0.49981, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(-0.42226014, -0.26794082, -0.31327802, 0.80731708) [0.66013, 0.73211, -0.16806, 0.00000, -0.27955, 0.44711, 0.84968, 0.00000, - 0.69720, -0.51392, 0.49981, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.69720, -0.51392, 0.49981, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.10317, 0.82130, -0.56109, 0.00000, -0.97286, -0.20079, -0.11503, 0.00000, - -0.20714, 0.53399, 0.81972, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.20714, 0.53399, 0.81972, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.26358324, 0.14374615, 0.72864306, -0.61558121) [-0.10317, 0.82130, -0.56109, 0.00000, -0.97286, -0.20079, -0.11503, 0.00000, - -0.20714, 0.53399, 0.81972, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.20714, 0.53399, 0.81972, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.99503, 0.09744, 0.02075, 0.00000, -0.09777, 0.99509, 0.01556, 0.00000, - -0.01914, -0.01751, 0.99966, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.01914, -0.01751, 0.99966, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.00827966, 0.00998507, -0.04886289, 0.99872130) [0.99503, 0.09744, 0.02075, 0.00000, -0.09777, 0.99509, 0.01556, 0.00000, - -0.01914, -0.01751, 0.99966, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.01914, -0.01751, 0.99966, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.65424, 0.43498, -0.61868, 0.00000, -0.50693, 0.85929, 0.06808, 0.00000, - 0.56124, 0.26909, 0.78269, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.56124, 0.26909, 0.78269, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.05535709, -0.32495019, -0.25940236, 0.90777391) [0.65424, 0.43498, -0.61868, 0.00000, -0.50693, 0.85929, 0.06808, 0.00000, - 0.56124, 0.26909, 0.78269, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.56124, 0.26909, 0.78269, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.75809, 0.45666, 0.46557, 0.00000, 0.62861, 0.70175, 0.33525, 0.00000, - -0.17361, 0.54682, -0.81905, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.17361, 0.54682, -0.81905, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(0.29967248, 0.90538603, 0.24356183, 0.17649405) [-0.75809, 0.45666, 0.46557, 0.00000, 0.62861, 0.70175, 0.33525, 0.00000, - -0.17361, 0.54682, -0.81905, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.17361, 0.54682, -0.81905, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.14412, 0.43544, -0.88861, 0.00000, -0.54050, 0.71756, 0.43928, 0.00000, - 0.82891, 0.54360, 0.13194, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.82891, 0.54360, 0.13194, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.03994098, -0.65759784, -0.37366563, 0.65295011) [-0.14412, 0.43544, -0.88861, 0.00000, -0.54050, 0.71756, 0.43928, 0.00000, - 0.82891, 0.54360, 0.13194, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.82891, 0.54360, 0.13194, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.72325, 0.67347, -0.15279, 0.00000, -0.65908, 0.73921, 0.13848, 0.00000, - 0.20621, 0.00055, 0.97851, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.20621, 0.00055, 0.97851, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.03717959, -0.09676723, -0.35918251, 0.92749214) [0.72325, 0.67347, -0.15279, 0.00000, -0.65908, 0.73921, 0.13848, 0.00000, - 0.20621, 0.00055, 0.97851, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.20621, 0.00055, 0.97851, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.21039, 0.87009, -0.44574, 0.00000, 0.58405, 0.47750, 0.65641, 0.00000, - 0.78398, -0.12223, -0.60863, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.78398, -0.12223, -0.60863, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.47977704, 0.75771421, 0.17624755, -0.40573388) [-0.21039, 0.87009, -0.44574, 0.00000, 0.58405, 0.47750, 0.65641, 0.00000, - 0.78398, -0.12223, -0.60863, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.78398, -0.12223, -0.60863, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.04831, 0.97599, 0.21239, 0.00000, 0.58354, -0.14500, 0.79903, 0.00000, - 0.81064, 0.16254, -0.56253, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.81064, 0.16254, -0.56253, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.64405173, 0.60535949, 0.39710954, -0.24706522) [-0.04831, 0.97599, 0.21239, 0.00000, 0.58354, -0.14500, 0.79903, 0.00000, - 0.81064, 0.16254, -0.56253, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.81064, 0.16254, -0.56253, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.52721, 0.84591, -0.08054, 0.00000, -0.68087, -0.47725, -0.55556, 0.00000, - -0.50839, -0.23807, 0.82757, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.50839, -0.23807, 0.82757, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.17497791, -0.23579675, 0.84143168, -0.45362473) [-0.52721, 0.84591, -0.08054, 0.00000, -0.68087, -0.47725, -0.55556, 0.00000, - -0.50839, -0.23807, 0.82757, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.50839, -0.23807, 0.82757, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.40645, 0.91333, -0.02484, 0.00000, -0.29263, 0.15589, 0.94343, 0.00000, - 0.86554, -0.37619, 0.33063, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.86554, -0.37619, 0.33063, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 1.192092895507813e-007 q(-0.47956556, -0.32357344, -0.43826151, 0.68792742) [0.40645, 0.91333, -0.02484, 0.00000, -0.29263, 0.15589, 0.94343, 0.00000, - 0.86554, -0.37619, 0.33063, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.86554, -0.37619, 0.33063, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.79792, 0.27235, -0.53772, 0.00000, -0.03575, 0.91191, 0.40884, 0.00000, - 0.60170, -0.30700, 0.73737, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.60170, -0.30700, 0.73737, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 5.960464477539063e-008 q(-0.19277409, -0.30684772, -0.08297171, 0.92833090) [0.79792, 0.27235, -0.53772, 0.00000, -0.03575, 0.91191, 0.40884, 0.00000, - 0.60170, -0.30700, 0.73737, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.60170, -0.30700, 0.73737, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [-0.35790, 0.16569, -0.91894, 0.00000, -0.72331, 0.57319, 0.38506, 0.00000, - 0.59053, 0.80249, -0.08530, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.59053, 0.80249, -0.08530, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(-0.19634607, 0.70999873, 0.41815314, -0.53150541) [-0.35790, 0.16569, -0.91894, 0.00000, -0.72331, 0.57319, 0.38506, 0.00000, - 0.59053, 0.80249, -0.08530, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.59053, 0.80249, -0.08530, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.82578, -0.41854, 0.37804, 0.00000, 0.51437, 0.83382, -0.20042, 0.00000, - -0.23134, 0.35996, 0.90383, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.23134, 0.35996, 0.90383, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.14842853, 0.16140796, 0.24710263, 0.94385207) [0.82578, -0.41854, 0.37804, 0.00000, 0.51437, 0.83382, -0.20042, 0.00000, - -0.23134, 0.35996, 0.90383, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +-0.23134, 0.35996, 0.90383, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] [0.57132, 0.82056, 0.01650, 0.00000, 0.81800, -0.57095, 0.06999, 0.00000, - 0.06685, -0.02649, -0.99741, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.06685, -0.02649, -0.99741, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] 0.0 q(0.88595670, 0.46237046, 0.02352080, -0.02722242) [0.57132, 0.82056, 0.01650, 0.00000, 0.81800, -0.57095, 0.06999, 0.00000, - 0.06685, -0.02649, -0.99741, 0.00000, -0.00000, 0.00000, 0.00000, 1.00000] +0.06685, -0.02649, -0.99741, 0.00000, +0.00000, 0.00000, 0.00000, 1.00000,] # matrix to quat test # matrix to quat test From b6e6e452e40ca001443c4776de99315a3de75b38 Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Tue, 17 Mar 2020 19:38:39 -0500 Subject: [PATCH 4/5] updated readme --- README.md | 726 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 380 insertions(+), 346 deletions(-) diff --git a/README.md b/README.md index 399b798..0fa98a5 100644 --- a/README.md +++ b/README.md @@ -10,39 +10,31 @@ Has functions for Vec2, Vec3, Vec4, Mat3, Mat4 and Quat. import vmath ``` -## **proc** clamp - -Clamps n to min, else returns max if n is higher. - -```nim -proc clamp(n, min, max: float32): float32 -``` - -## **proc** between +## **func** between Returns true if value is between min and max or equal to them. ```nim -proc between(value, min, max: float32): bool +func between(value, min, max: float32): bool ``` -## **proc** sign +## **func** sign Returns the sign of a number, -1 or 1. ```nim -proc sign(v: float32): float32 +func sign(v: float32): float32 ``` -## **proc** quantize +## **func** quantize Makes v be multipe of n. Rounding to integer quantize by 1.0. ```nim -proc quantize(v: float32; n: float32): float32 +func quantize(v: float32; n: float32): float32 ``` -## **proc** lerp +## **func** lerp Interpolates value between a and b. * 0 -> a @@ -50,7 +42,7 @@ Interpolates value between a and b. * 0.5 -> between a and b ```nim -proc lerp(a: float32; b: float32; v: float32): float32 +func lerp(a: float32; b: float32; v: float32): float32 ``` ## **type** Vec2 @@ -63,194 +55,194 @@ Vec2 = object y*: float32 ``` -## **proc** vec2 +## **func** vec2 ```nim -proc vec2(x, y: float32): Vec2 +func vec2(x, y: float32): Vec2 ``` -## **proc** vec2 +## **func** vec2 ```nim -proc vec2(a: Vec2): Vec2 +func vec2(a: Vec2): Vec2 ``` -## **proc** `+` +## **func** `+` ```nim -proc `+`(a: Vec2; b: Vec2): Vec2 +func `+`(a: Vec2; b: Vec2): Vec2 ``` -## **proc** `-` +## **func** `-` ```nim -proc `-`(a: Vec2; b: Vec2): Vec2 +func `-`(a: Vec2; b: Vec2): Vec2 ``` -## **proc** `*` +## **func** `*` ```nim -proc `*`(a: Vec2; b: float32): Vec2 +func `*`(a: Vec2; b: float32): Vec2 ``` -## **proc** `*` +## **func** `*` ```nim -proc `*`(a: float32; b: Vec2): Vec2 +func `*`(a: float32; b: Vec2): Vec2 ``` -## **proc** `/` +## **func** `/` ```nim -proc `/`(a: Vec2; b: float32): Vec2 +func `/`(a: Vec2; b: float32): Vec2 ``` -## **proc** `+=` +## **func** `+=` ```nim -proc `+=`(a: var Vec2; b: Vec2) +func `+=`(a: var Vec2; b: Vec2) ``` -## **proc** `-=` +## **func** `-=` ```nim -proc `-=`(a: var Vec2; b: Vec2) +func `-=`(a: var Vec2; b: Vec2) ``` -## **proc** `*=` +## **func** `*=` ```nim -proc `*=`(a: var Vec2; b: float32) +func `*=`(a: var Vec2; b: float32) ``` -## **proc** `/=` +## **func** `/=` ```nim -proc `/=`(a: var Vec2; b: float32) +func `/=`(a: var Vec2; b: float32) ``` -## **proc** zero +## **func** zero ```nim -proc zero(a: var Vec2) +func zero(a: var Vec2) ``` -## **proc** `-` +## **func** `-` ```nim -proc `-`(a: Vec2): Vec2 +func `-`(a: Vec2): Vec2 ``` -## **proc** lengthSq +## **func** lengthSq ```nim -proc lengthSq(a: Vec2): float32 +func lengthSq(a: Vec2): float32 ``` -## **proc** length +## **func** length ```nim -proc length(a: Vec2): float32 +func length(a: Vec2): float32 ``` -## **proc** length= +## **func** length= ```nim -proc length=(a: var Vec2; b: float32) +func length=(a: var Vec2; b: float32) ``` -## **proc** normalize +## **func** normalize ```nim -proc normalize(a: Vec2): Vec2 +func normalize(a: Vec2): Vec2 ``` -## **proc** dot +## **func** dot ```nim -proc dot(a: Vec2; b: Vec2): float32 +func dot(a: Vec2; b: Vec2): float32 ``` -## **proc** dir +## **func** dir ```nim -proc dir(at: Vec2; to: Vec2): Vec2 +func dir(at: Vec2; to: Vec2): Vec2 ``` -## **proc** dir +## **func** dir ```nim -proc dir(th: float32): Vec2 +func dir(th: float32): Vec2 ``` -## **proc** dist +## **func** dist ```nim -proc dist(at: Vec2; to: Vec2): float32 +func dist(at: Vec2; to: Vec2): float32 ``` -## **proc** distSq +## **func** distSq ```nim -proc distSq(at: Vec2; to: Vec2): float32 +func distSq(at: Vec2; to: Vec2): float32 ``` -## **proc** lerp +## **func** lerp ```nim -proc lerp(a: Vec2; b: Vec2; v: float32): Vec2 +func lerp(a: Vec2; b: Vec2; v: float32): Vec2 ``` -## **proc** quantize +## **func** quantize ```nim -proc quantize(v: Vec2; n: float32): Vec2 +func quantize(v: Vec2; n: float32): Vec2 ``` -## **proc** inRect +## **func** inRect Check to see if v is inside a rectange formed by a and b. It does not matter how a and b are arranged. ```nim -proc inRect(v: Vec2; a: Vec2; b: Vec2): bool +func inRect(v: Vec2; a: Vec2; b: Vec2): bool ``` -## **proc** `[]` +## **func** `[]` ```nim -proc `[]`(a: Vec2; i: int): float32 +func `[]`(a: Vec2; i: int): float32 ``` -## **proc** `[]=` +## **func** `[]=` ```nim -proc `[]=`(a: var Vec2; i: int; b: float32) +func `[]=`(a: var Vec2; i: int; b: float32) ``` ## **proc** randVec2 @@ -260,51 +252,51 @@ proc `[]=`(a: var Vec2; i: int; b: float32) proc randVec2(): Vec2 ``` -## **proc** `$` +## **func** `$` ```nim -proc `$`(a: Vec2): string +func `$`(a: Vec2): string {.raises: [ValueError].} ``` -## **proc** fixAngle +## **func** fixAngle Make angle be from -PI to PI radians. ```nim -proc fixAngle(angle: float32): float32 +func fixAngle(angle: float32): float32 ``` -## **proc** angle +## **func** angle Angle of a Vec2. ```nim -proc angle(a: Vec2): float32 +func angle(a: Vec2): float32 ``` -## **proc** angleBetween +## **func** angleBetween Angle between 2 Vec2. ```nim -proc angleBetween(a: Vec2; b: Vec2): float32 +func angleBetween(a: Vec2; b: Vec2): float32 ``` -## **proc** angleBetween +## **func** angleBetween Angle between angle a and angle b. ```nim -proc angleBetween(a, b: float32): float32 +func angleBetween(a, b: float32): float32 ``` -## **proc** turnAngle +## **func** turnAngle Move from angle a to angle b with step of v. ```nim -proc turnAngle(a, b, speed: float32): float32 +func turnAngle(a, b, speed: float32): float32 ``` ## **type** Vec3 @@ -318,18 +310,18 @@ Vec3 = object z*: float32 ``` -## **proc** vec3 +## **func** vec3 ```nim -proc vec3(x, y, z: float32): Vec3 +func vec3(x, y, z: float32): Vec3 ``` -## **proc** vec3 +## **func** vec3 ```nim -proc vec3(a: Vec3): Vec3 +func vec3(a: Vec3): Vec3 ``` ## **const** X_DIR @@ -353,242 +345,249 @@ Y_DIR = (x: 0.0, y: 1.0, z: 0.0) Z_DIR = (x: 0.0, y: 0.0, z: 1.0) ``` -## **proc** `+` +## **func** `+` ```nim -proc `+`(a: Vec3; b: Vec3): Vec3 +func `+`(a: Vec3; b: Vec3): Vec3 ``` -## **proc** `-` +## **func** `-` ```nim -proc `-`(a: Vec3; b: Vec3): Vec3 +func `-`(a: Vec3; b: Vec3): Vec3 ``` -## **proc** `-` +## **func** `-` ```nim -proc `-`(a: Vec3): Vec3 +func `-`(a: Vec3): Vec3 ``` -## **proc** `*` +## **func** `*` ```nim -proc `*`(a: Vec3; b: float32): Vec3 +func `*`(a: Vec3; b: float32): Vec3 ``` -## **proc** `*` +## **func** `*` ```nim -proc `*`(a: float32; b: Vec3): Vec3 +func `*`(a: float32; b: Vec3): Vec3 ``` -## **proc** `/` +## **func** `/` ```nim -proc `/`(a: Vec3; b: float32): Vec3 +func `/`(a: Vec3; b: float32): Vec3 ``` -## **proc** `/` +## **func** `/` ```nim -proc `/`(a: float32; b: Vec3): Vec3 +func `/`(a: float32; b: Vec3): Vec3 ``` -## **proc** `+=` +## **func** `+=` ```nim -proc `+=`(a: var Vec3; b: Vec3) +func `+=`(a: var Vec3; b: Vec3) ``` -## **proc** `-=` +## **func** `-=` ```nim -proc `-=`(a: var Vec3; b: Vec3) +func `-=`(a: var Vec3; b: Vec3) ``` -## **proc** `*=` +## **func** `*=` ```nim -proc `*=`(a: var Vec3; b: float32) +func `*=`(a: var Vec3; b: float32) ``` -## **proc** `/=` +## **func** `/=` ```nim -proc `/=`(a: var Vec3; b: float32) +func `/=`(a: var Vec3; b: float32) ``` -## **proc** zero +## **func** zero ```nim -proc zero(a: var Vec3) +func zero(a: var Vec3) ``` -## **proc** `-` +## **func** `-` ```nim -proc `-`(a: var Vec3): Vec3 +func `-`(a: var Vec3): Vec3 ``` -## **proc** lengthSq +## **func** lengthSq ```nim -proc lengthSq(a: Vec3): float32 +func lengthSq(a: Vec3): float32 ``` -## **proc** length +## **func** length ```nim -proc length(a: Vec3): float32 +func length(a: Vec3): float32 ``` -## **proc** length= +## **func** length= ```nim -proc length=(a: var Vec3; b: float32) +func length=(a: var Vec3; b: float32) ``` -## **proc** normalize +## **func** normalize ```nim -proc normalize(a: Vec3): Vec3 +func normalize(a: Vec3): Vec3 ``` -## **proc** cross +## **func** cross ```nim -proc cross(a: Vec3; b: Vec3): Vec3 +func cross(a: Vec3; b: Vec3): Vec3 ``` -## **proc** computeNormal +## **func** computeNormal ```nim -proc computeNormal(a, b, c: Vec3): Vec3 +func computeNormal(a, b, c: Vec3): Vec3 ``` -## **proc** dot +## **func** dot ```nim -proc dot(a: Vec3; b: Vec3): float32 +func dot(a: Vec3; b: Vec3): float32 ``` -## **proc** dir +## **func** dir ```nim -proc dir(at: Vec3; to: Vec3): Vec3 +func dir(at: Vec3; to: Vec3): Vec3 ``` -## **proc** dist +## **func** dist ```nim -proc dist(at: Vec3; to: Vec3): float32 +func dist(at: Vec3; to: Vec3): float32 ``` -## **proc** distSq +## **func** distSq ```nim -proc distSq(at: Vec3; to: Vec3): float32 +func distSq(at: Vec3; to: Vec3): float32 ``` -## **proc** lerp +## **func** lerp ```nim -proc lerp(a: Vec3; b: Vec3; v: float32): Vec3 +func lerp(a: Vec3; b: Vec3; v: float32): Vec3 ``` -## **proc** angleBetween +## **func** quantize ```nim -proc angleBetween(a, b: Vec3): float32 +func quantize(v: Vec3; n: float32): Vec3 ``` -## **proc** `[]` +## **func** angleBetween ```nim -proc `[]`(a: Vec3; i: int): float32 +func angleBetween(a, b: Vec3): float32 ``` -## **proc** `[]=` +## **func** `[]` ```nim -proc `[]=`(a: var Vec3; i: int; b: float32) +func `[]`(a: Vec3; i: int): float32 ``` -## **proc** xy +## **func** `[]=` ```nim -proc xy(a: Vec3): Vec2 +func `[]=`(a: var Vec3; i: int; b: float32) ``` -## **proc** xz +## **func** xy ```nim -proc xz(a: Vec3): Vec2 +func xy(a: Vec3): Vec2 ``` -## **proc** yx +## **func** xz ```nim -proc yx(a: Vec3): Vec2 +func xz(a: Vec3): Vec2 ``` -## **proc** yz +## **func** yx ```nim -proc yz(a: Vec3): Vec2 +func yx(a: Vec3): Vec2 ``` -## **proc** zx +## **func** yz ```nim -proc zx(a: Vec3): Vec2 +func yz(a: Vec3): Vec2 ``` -## **proc** zy +## **func** zx ```nim -proc zy(a: Vec3): Vec2 +func zx(a: Vec3): Vec2 ``` -## **proc** almostEquals +## **func** zy ```nim -proc almostEquals(a, b: Vec3; precision = 1e-006): bool +func zy(a: Vec3): Vec2 +``` + +## **func** almostEquals + + +```nim +func almostEquals(a, b: Vec3; precision = 1e-006): bool ``` ## **proc** randVec3 @@ -599,11 +598,11 @@ Generates a random vector based on