43 lines
631 B
C++
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;
|
|
}
|
|
};
|
|
|
|
|