use crate::coordinate::{CPoint, PPoint};
pub trait CPointTrait {
fn to_polar(&self) -> PPoint;
fn distance(&self, other: &Self) -> f64;
fn distance_squared(&self, other: &Self) -> f64;
fn midpoint(&self, other: &Self) -> Self;
fn is_origin(&self) -> bool;
fn is_on_x_axis(&self) -> bool;
fn is_on_y_axis(&self) -> bool;
fn slope(&self, other: &Self) -> f64;
fn slope_intercept(&self, other: &Self) -> (f64, f64);
}
pub trait PPointTrait {
fn to_cartesian(&self) -> CPoint;
fn distance(&self, other: &Self) -> f64;
fn distance_squared(&self, other: &Self) -> f64;
fn midpoint(&self, other: &Self) -> Self;
fn is_origin(&self) -> bool;
fn is_on_x_axis(&self) -> bool;
fn is_on_y_axis(&self) -> bool;
fn slope(&self, other: &Self) -> f64;
}