freevec.org

  • about
  • benchmarks
Home

Matrix 4x4 Translation of a vector

markos — Sat, 01/03/2008 - 20:56

Printer-friendly version

(Please see Matrix 4x4 addition/subtraction (floats) for the typedefs and definitions used.)

Getting the translation matrix of a vector is essential to do movements of a vector in 3D space.

For the theory behind translation matrices please see http://en.wikipedia.org/wiki/Translation_(geometry)

We follow a similar method as in the Identity matrix:

void Mat44Identity(Mat44 m, Vec4f pVec)
{
        vector float v0 = vec_ctf(vec_splat_u32(0), 0);
        LOAD_VECTOR(vvec, pVec);
 
        CLEAR_VECTOR(&m[0]);
        CLEAR_VECTOR(&m[4]);
        CLEAR_VECTOR(&m[8]);
        STORE_VECTOR(vvec, &m[12]);
        m[15] = 1.0f;
}

where we defined CLEAR_VECTOR as the macro:

#define CLEAR_VECTOR(vs)                          \
{                                                 \
        vec_st(vec_splat_s8(0), 0, (float *)vs);  \
}

SIMD

  • Matrix
  • Translate
  • AltiVec
  • Login to post comments

Primary links

  • About
    • History of libfreevec
  • Benchmarks
    • libfreevec

Search

User login

  • Request new password

Popular tags

Addition Algorithms AltiVec ARM Benchmarking float Inverse libfreevec Matrix Memory Multiply NEON reference Scale SSE String searching Subtraction Translate Transpose Tutorial
more tags

Please donate to libfreevec to ensure its continuing development! Donations are done via Paypal.





  • about
  • benchmarks

Copyright (c)2008 by CODEX.
Powered by Drupal. Using theme Deco.
All Google charts have been created by the CSV Chart and Chart API Drupal modules.