galmon/minivec.hh

43 lines
631 B
C++

#pragma once
#include <math.h>
struct Point
{
Point() : x{0}, y{0}, z{0}
{}
Point(double x_, double y_, double z_) : x(x_), y(y_), z(z_)
{}
double x, y, z;
};
struct Vector
{
Vector() : x{0}, y{0}, z{0} {}
Vector(double x_, double y_, double z_) : x(x_), y(y_), z(z_)
{}
Vector(const Point& a, const Point& b) : Vector(b.x - a.x, b.y - a.y, b.z - a.z)
{
}
double x, y, z;
double length() const
{
return sqrt(x*x + y*y + z*z);
}
void norm()
{
double l = length();
x/=l;
y/=l;
z/=l;
}
double inner(const Vector& b) const
{
return x*b.x + y*b.y + z*b.z;
}
};