1
0
Fork 0
mirror of https://github.com/cosmo-sims/monofonIC.git synced 2024-09-19 17:03:45 +02:00
monofonIC/include/vec3.hh
2019-05-07 01:05:16 +02:00

29 lines
525 B
C++

#pragma once
template< typename T >
class vec3{
private:
std::array<T,3> data_;
public:
T &operator[](size_t i){ return data_[i];}
const T &operator[](size_t i) const { return data_[i]; }
T dot(const vec3<T> &a) const
{
return data_[0] * a.data_[0] + data_[1] * a.data_[1] + data_[2] * a.data_[2];
}
T norm_squared(void) const
{
return this->dot(*this);
}
T norm(void) const
{
return std::sqrt( this->norm_squared() );
}
};