33 Point4d(
const float _x,
const float _y,
const float _z,
const float _w)
50 inline bool operator==(
const Point4d& param)
const {
return (x == param.x) && (y == param.y) && (z == param.z) && (w == param.w); }
52 inline Point4d operator-(
const Point4d& _p)
const {
return Point4d(x - _p.x, y - _p.y, z - _p.z, w - _p.w); }
54 inline Point4d operator-()
const {
return Point4d(-x, -y, -z, -w); }
56 inline Point4d operator+(
const Point4d& _p)
const {
return Point4d(x + _p.x, y + _p.y, z + _p.z, w + _p.w); }
58 inline Point4d operator*(
const float d)
const {
return Point4d(x * d, y * d, z * d, w * d); }
60 inline Point4d operator/(
const float d)
const {
return Point4d(x / d, y / d, z / d, w / d); }
62 inline Point4d normalize()
const
64 float d = sqrt(x * x + y * y + z * z + w * w);
65 return Point4d(x / d, y / d, z / d, w / d);
68 inline float size()
const
70 float d = x * x + y * y + z * z + w * w;
76 friend float dot(
const Point4d& p1,
const Point4d& p2) {
return p1.x * p2.x + p1.y * p2.y + p1.z * p2.z + p1.w * p2.w; }
81 inline std::ostream& operator<<(std::ostream& stream,
const Point4d& p)
83 stream << p.x <<
"," << p.y <<
"," << p.z <<
"," << p.w;