Example #1
0
float4 operator *(const float4 &lhs, const float3x4 &rhs)
{
	///\todo SSE.
	return float4(DOT3STRIDED(lhs, rhs.ptr(), 4),
				  DOT3STRIDED(lhs, rhs.ptr()+1, 4),
				  DOT3STRIDED(lhs, rhs.ptr()+2, 4),
				  DOT3STRIDED(lhs, rhs.ptr()+3, 4) + lhs.w);
}
Example #2
0
float3x3 float3x3::operator *(const float3x3 &rhs) const
{
    float3x3 r;
    const float *c0 = rhs.ptr();
    const float *c1 = rhs.ptr() + 1;
    const float *c2 = rhs.ptr() + 2;
    r[0][0] = DOT3STRIDED(v[0], c0, 3);
    r[0][1] = DOT3STRIDED(v[0], c1, 3);
    r[0][2] = DOT3STRIDED(v[0], c2, 3);

    r[1][0] = DOT3STRIDED(v[1], c0, 3);
    r[1][1] = DOT3STRIDED(v[1], c1, 3);
    r[1][2] = DOT3STRIDED(v[1], c2, 3);

    r[2][0] = DOT3STRIDED(v[2], c0, 3);
    r[2][1] = DOT3STRIDED(v[2], c1, 3);
    r[2][2] = DOT3STRIDED(v[2], c2, 3);

    return r;
}
Example #3
0
float3x4 float3x4::operator *(const float3x3 &rhs) const
{
	///\todo SSE.
	float3x4 r;
	const float *c0 = rhs.ptr();
	const float *c1 = rhs.ptr() + 1;
	const float *c2 = rhs.ptr() + 2;
	r[0][0] = DOT3STRIDED(v[0], c0, 3);
	r[0][1] = DOT3STRIDED(v[0], c1, 3);
	r[0][2] = DOT3STRIDED(v[0], c2, 3);
	r[0][3] = v[0][3];

	r[1][0] = DOT3STRIDED(v[1], c0, 3);
	r[1][1] = DOT3STRIDED(v[1], c1, 3);
	r[1][2] = DOT3STRIDED(v[1], c2, 3);
	r[1][3] = v[1][3];

	r[2][0] = DOT3STRIDED(v[2], c0, 3);
	r[2][1] = DOT3STRIDED(v[2], c1, 3);
	r[2][2] = DOT3STRIDED(v[2], c2, 3);
	r[2][3] = v[2][3];

	return r;
}
Example #4
0
float3 float3x3::TransformLeft(const float3 &vector) const
{
    return float3(DOT3STRIDED(vector, ptr(), 3),
                  DOT3STRIDED(vector, ptr()+1, 3),
                  DOT3STRIDED(vector, ptr()+2, 3));
}
Example #5
0
float3x4 float3x4::operator *(const float3x4 &rhs) const
{
	float3x4 r;
#ifdef MATH_SSE
	mat3x4_mul_sse(r.row, row, rhs.row);
#else
	const float *c0 = rhs.ptr();
	const float *c1 = rhs.ptr() + 1;
	const float *c2 = rhs.ptr() + 2;
	const float *c3 = rhs.ptr() + 3;
	r[0][0] = DOT3STRIDED(v[0], c0, 4);
	r[0][1] = DOT3STRIDED(v[0], c1, 4);
	r[0][2] = DOT3STRIDED(v[0], c2, 4);
	r[0][3] = DOT3STRIDED(v[0], c3, 4) + v[0][3];

	r[1][0] = DOT3STRIDED(v[1], c0, 4);
	r[1][1] = DOT3STRIDED(v[1], c1, 4);
	r[1][2] = DOT3STRIDED(v[1], c2, 4);
	r[1][3] = DOT3STRIDED(v[1], c3, 4) + v[1][3];

	r[2][0] = DOT3STRIDED(v[2], c0, 4);
	r[2][1] = DOT3STRIDED(v[2], c1, 4);
	r[2][2] = DOT3STRIDED(v[2], c2, 4);
	r[2][3] = DOT3STRIDED(v[2], c3, 4) + v[2][3];
#endif

	return r;
}