From e8a8c3ef2d3af5a12ac58f092d9b0615bb302555 Mon Sep 17 00:00:00 2001 From: hgn Date: Mon, 22 Jan 2024 17:50:05 +0000 Subject: [PATCH] add outer product --- vg_m.h | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/vg_m.h b/vg_m.h index bc2e8a0..f5ed405 100644 --- a/vg_m.h +++ b/vg_m.h @@ -884,6 +884,20 @@ static void m3x3_skew_symetric( m3x3f a, v3f v ) a[2][2] = 0.0f; } +/* aka kronecker product */ +static void m3x3_outer_product( m3x3f out_m, v3f a, v3f b ) +{ + out_m[0][0] = a[0]*b[0]; + out_m[0][1] = a[0]*b[1]; + out_m[0][2] = a[0]*b[2]; + out_m[1][0] = a[1]*b[0]; + out_m[1][1] = a[1]*b[1]; + out_m[1][2] = a[1]*b[2]; + out_m[2][0] = a[2]*b[0]; + out_m[2][1] = a[2]*b[1]; + out_m[2][2] = a[2]*b[2]; +} + static void m3x3_add( m3x3f a, m3x3f b, m3x3f d ) { v3_add( a[0], b[0], d[0] ); @@ -891,6 +905,13 @@ static void m3x3_add( m3x3f a, m3x3f b, m3x3f d ) v3_add( a[2], b[2], d[2] ); } +static void m3x3_sub( m3x3f a, m3x3f b, m3x3f d ) +{ + v3_sub( a[0], b[0], d[0] ); + v3_sub( a[1], b[1], d[1] ); + v3_sub( a[2], b[2], d[2] ); +} + static inline void m3x3_copy( m3x3f a, m3x3f b ) { v3_copy( a[0], b[0] ); @@ -904,12 +925,12 @@ static inline void m3x3_identity( m3x3f a ) m3x3_copy( id, a ); } -static void m3x3_diagonal( m3x3f a, f32 v ) +static void m3x3_diagonal( m3x3f out_a, f32 v ) { - m3x3_identity( a ); - a[0][0] = v; - a[1][1] = v; - a[2][2] = v; + m3x3_identity( out_a ); + out_a[0][0] = v; + out_a[1][1] = v; + out_a[2][2] = v; } static void m3x3_setdiagonalv3( m3x3f a, v3f v ) -- 2.25.1