Minkowski.h
1//-*-C++-*-
2/***************************************************************************
3 *
4 * Copyright (C) 2014 by Willem van Straten
5 * Licensed under the Academic Free License version 2.1
6 *
7 ***************************************************************************/
8
9// epsic/src/util/Minkowski.h
10
11#ifndef __Minkowski_H
12#define __Minkowski_H
13
14#include "Matrix.h"
15
16namespace Minkowski
17{
18
20 template<typename T, typename U> typename PromoteTraits<T,U>::promote_type
21 inner (const Vector<4,T>& A, const Vector<4,U>& B)
22 {
23 typename PromoteTraits<T,U>::promote_type result = A[0] * B[0];
24 for (unsigned i=1; i<4; i++)
25 result -= A[i] * B[i];
26 return result;
27 }
28
30 template<typename T, typename U>
31 Matrix<4,4,typename PromoteTraits<T,U>::promote_type>
32 outer (const Vector<4,T>& A, const Vector<4,U>& B)
33 {
34 Matrix<4,4,typename PromoteTraits<T,U>::promote_type> result = ::outer(A,B);
35 typename PromoteTraits<T,U>::promote_type inv = 0.5 * inner(A,B);
36 result[0][0] -= inv;
37 for (unsigned i=1; i<4; i++)
38 result[i][i] += inv;
39 return result;
40 }
41}
42
43#endif

Generated using doxygen 1.14.0