Skip to content

Instantly share code, notes, and snippets.

@ynagatomo
Created June 1, 2022 04:48
Show Gist options
  • Save ynagatomo/695f5f8c8392d133642405d7364c67dc to your computer and use it in GitHub Desktop.
Save ynagatomo/695f5f8c8392d133642405d7364c67dc to your computer and use it in GitHub Desktop.
import simd
// Initializers
simd_float2x3()
simd_float2x3(1)
simd_float2x2(diagonal: SIMD2<Float>.one * 2)
simd_float2x3([SIMD3<Float>(1, 2, 3), SIMD3<Float>(4, 5, 6)])
simd_float2x3(SIMD3<Float>(1, 2, 3), SIMD3<Float>(4, 5, 6))
simd_float2x3(columns: (simd_float3.zero, simd_float3.one))
simd_float2x3(rows: [SIMD2<Float>.zero, SIMD2<Float>.one, SIMD2<Float>.zero])
simd_float3x3(simd_quatf()) // from a quarternion
// Matrix Constants
matrix_identity_float3x3 // Global Variable
// Matrix Properties
simd_float3x3(1).determinant
simd_float3x3(1).inverse
simd_float3x3(1).transpose
simd_float3x3(1).columns.0
simd_float3x3(1).debugDescription
// Matrix Creation Functions
simd_matrix(simd_float2(1, 2), simd_float2(3, 4)) // columns
simd_matrix_from_rows(simd_float2(1, 2), simd_float2(3, 4)) // rows
matrix_from_rows(SIMD2<Float>(1, 2), SIMD2<Float>(3, 4)) // rows
simd_diagonal_matrix(simd_float2(1, 2))
simd_matrix3x3(simd_quatf()) // from a quarternion
// Math Functions
simd_add(simd_float3x3(1), simd_float3x3(2))
simd_sub(simd_float3x3(2), simd_float3x3(1))
matrix_scale(2, simd_float3x3(1))
// Matrix-Scalar Multiplication Functions
simd_mul(2, simd_float3x3(1))
// Matrix-Vector Multiplication Functions
simd_mul(simd_float2(1, 2), simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)))
matrix_multiply(simd_float2(1, 2), simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)))
simd_mul(simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)), simd_float2(1, 2))
matrix_multiply(simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)), simd_float2(1, 2))
// Matrix-Matrix Multiplication Functions
simd_mul(simd_float2x3(simd_float3(1, 2, 3), simd_float3(4, 5, 6)), simd_float3x2(simd_float2(1, 2), simd_float2(3, 4), simd_float2(5, 6)))
// Equality Functions
simd_equal(simd_float3x3(1), simd_float3x3(1))
simd_almost_equal_elements(simd_float3x3(1), simd_float3x3(1.09), 0.1) // x, y, tolerance
simd_almost_equal_elements(simd_float3x3(1), simd_float3x3(0.91), 0.1) // x, y, tolerance
simd_almost_equal_elements_relative(simd_float3x3(1), simd_float3x3(0.91), 0.1) // x, y, tol
// Determinant and Inverse Functions
simd_determinant(simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)))
simd_inverse(simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)))
// Linear Combination Function
simd_linear_combination(0.1, simd_float2x2(simd_float2.one, simd_float2.one), 0.9, simd_float2x2(simd_float2.one, simd_float2.one)*2) // a, x, b, y
// Transpose Function
simd_transpose(simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)))
// Element Access (Subscript)
simd_float2x2(simd_float2(1, 2), simd_float2(3, 4))[0] // column
simd_float2x2(simd_float2(1, 2), simd_float2(3, 4))[0][1]
// Typealias
float3x3()
matrix_float3x3()
// Operators
simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)) * 2
simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)) * simd_float2(5, 6)
simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)) + simd_float2x2(1)
-simd_float2x2(simd_float2(1, 2), simd_float2(3, 4)) - simd_float2x2(1)
simd_float3x3(1) == simd_float3x3(1)
simd_float3x3(1) != simd_float3x3(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment