Skip to content

Modern Math TransformVector

Paul Squires edited this page Oct 19, 2026 · 5 revisions

Home › Math Library › Math Library › TransformVector

TransformVector

Applies a matrix to a direction, leaving out the translation.

Syntax

TransformVector( byref a as Mat4, byref v as Vec3 ) as Vec3

Notes

  • A direction has no position, so the translation column is skipped -- the w=0 case.
  • Using TransformPoint on a normal or a velocity is the classic bug: it moves something that only has an orientation.
  • Note that a non-uniform scale still needs the inverse transpose for normals; this applies the matrix as given.

Examples

#import "std/numeric"
using numeric

dim as Mat4 m
for i as int32 = 0 to 15
    m.m( i ) = 0
next
for i as int32 = 0 to 3
    m.m( i * 4 + i ) = 1
next
m.m( 12 ) = 10               '' translation, which a direction ignores

dim as Vec3 d = type<Vec3>( 1, 0, 0 )
dim as Vec3 r = TransformVector( m, d )
print r.x                    '' 1 -- NOT 11

Library: Math Library
Category: Math Library
Documented under: Members

Clone this wiki locally