Merge pull request #43 from guzba/master

1.1.0 added some vector conversions
This commit is contained in:
treeform 2021-10-11 22:56:09 -07:00 committed by GitHub
commit 7082ed6452
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 55 additions and 5 deletions

View file

@ -485,6 +485,42 @@ genConstructor(uvec, UVec, uint32)
genConstructor(vec, Vec, float32)
genConstructor(dvec, DVec, float64)
proc vec2*(ivec2: Ivec2): Vec2 {.inline.} =
vec2(ivec2.x.float32, ivec2.y.float32)
proc vec2*(uvec2: Uvec2): Vec2 {.inline.} =
vec2(uvec2.x.float32, uvec2.y.float32)
proc ivec2*(uvec2: Uvec2): Ivec2 {.inline.} =
ivec2(uvec2.x.int32, uvec2.y.int32)
proc uvec2*(ivec2: Ivec2): Uvec2 {.inline.} =
uvec2(ivec2.x.uint32, ivec2.y.uint32)
proc vec3*(ivec3: Ivec3): Vec3 {.inline.} =
vec3(ivec3.x.float32, ivec3.y.float32, ivec3.z.float32)
proc vec3*(uvec3: Uvec3): Vec3 {.inline.} =
vec3(uvec3.x.float32, uvec3.y.float32, uvec3.z.float32)
proc ivec3*(uvec3: Uvec3): Ivec3 {.inline.} =
ivec3(uvec3.x.int32, uvec3.y.int32, uvec3.z.int32)
proc uvec3*(ivec3: Ivec3): Uvec3 {.inline.} =
uvec3(ivec3.x.uint32, ivec3.y.uint32, ivec3.z.uint32)
proc vec4*(ivec4: Ivec4): Vec4 {.inline.} =
vec4(ivec4.x.float32, ivec4.y.float32, ivec4.z.float32, ivec4.w.float32)
proc vec4*(uvec4: Uvec4): Vec4 {.inline.} =
vec4(uvec4.x.float32, uvec4.y.float32, uvec4.z.float32, uvec4.w.float32)
proc ivec4*(uvec4: Uvec4): Ivec4 {.inline.} =
ivec4(uvec4.x.int32, uvec4.y.int32, uvec4.z.int32, uvec4.w.int32)
proc uvec4*(ivec4: Ivec4): Uvec4 {.inline.} =
uvec4(ivec4.x.uint32, ivec4.y.uint32, ivec4.z.uint32, ivec4.w.uint32)
{.experimental: "dotOperators".}
proc num(letter: char, fields: NimNode): int =
## Given a swizzle character gives back the location number.

View file

@ -25,25 +25,25 @@ proc vec3Tuple(x, y, z: float32): Vec3Tuple {.inline.} =
timeIt "create vec3Obj", 1000:
var s = newSeq[Vec3Obj](100000)
for i in 0 .. 100000:
for i in 0 ..< 100000:
s[i] = vec3Obj(i.float32, 0, 0)
keep s
timeIt "create vec3Arr", 1000:
var s = newSeq[Vec3Arr](100000)
for i in 0 .. 100000:
for i in 0 ..< 100000:
s[i] = vec3Arr(i.float32, 0, 0)
keep s
timeIt "create vec3ObjArr", 1000:
var s = newSeq[Vec3ObjArr](100000)
for i in 0 .. 100000:
for i in 0 ..< 100000:
s[i] = vec3ObjArr(i.float32, 0, 0)
keep s
timeIt "create vec3Tuple", 1000:
var s = newSeq[Vec3Tuple](100000)
for i in 0 .. 100000:
for i in 0 ..< 100000:
s[i] = vec3Tuple(i.float32, 0, 0)
keep s

View file

@ -885,3 +885,17 @@ block:
doAssert bvec4(true, true, true, false) != bvec4(true, true, true, true)
doAssert ivec4(3, 3, 3, 3) != ivec4(3, 3, 3, 4)
doAssert uvec4(3, 3, 3, 3) != uvec4(3, 3, 3, 4)
block:
doAssert vec2(ivec2(1, 1)) == vec2(1, 1)
doAssert vec2(uvec2(5, 5)) == vec2(5, 5)
doAssert ivec2(uvec2(23, 23)) == ivec2(23, 23)
doAssert uvec2(ivec2(12, 12)) == uvec2(12, 12)
doAssert vec3(ivec3(1, 2, 3)) == vec3(1, 2, 3)
doAssert vec3(uvec3(4, 5, 6)) == vec3(4, 5, 6)
doAssert ivec3(uvec3(7, 8, 9)) == ivec3(7, 8, 9)
doAssert uvec3(ivec3(10, 11, 12)) == uvec3(10, 11, 12)
doAssert vec4(ivec4(13, 14, 15, 16)) == vec4(13, 14, 15, 16)
doAssert vec4(uvec4(17, 18, 19, 20)) == vec4(17, 18, 19, 20)
doAssert ivec4(uvec4(21, 22, 23, 24)) == ivec4(21, 22, 23, 24)
doAssert uvec4(ivec4(25, 26, 27, 28)) == uvec4(25, 26, 27, 28)

View file

@ -1,4 +1,4 @@
version = "1.0.11"
version = "1.1.0"
author = "Andre von Houck"
description = "Your single stop for vector math routines for 2d and 3d graphics."
license = "MIT"