mod point_vec2;
mod points2;
mod points3;
mod polarpoints;
mod rotation_2d;
pub use point_vec2::*;
pub use points2::*;
pub use points3::*;
pub use polarpoints::*;
pub trait Points {
type Output;
fn add_p(&self, other: &Self) -> Self::Output;
fn sub_p(&self, other: &Self) -> Self::Output;
fn mul_p(&self, other: &Self) -> Self::Output;
fn div_p(&self, other: &Self) -> Self::Output;
fn neg_p(&self) -> Self::Output;
fn scale(&self, s: f64) -> Self::Output;
fn round(&self) -> Self::Output;
}
pub fn internal_norm(x: &f64, y: &f64) -> (f64, f64) {
let xy_mag = (x.powi(2) + y.powi(2)).sqrt();
(x / xy_mag, y / xy_mag)
}