}
impl Point2D<f64> {
- pub fn length(self) -> f64 {
+ pub fn length(&self) -> f64 {
((self.x * self.x) + (self.y * self.y)).sqrt()
}
+ pub fn normalize(&self) -> Self {
+ let l = self.length();
+ Self {
+ x: self.x / l,
+ y: self.y / l,
+ }
+ }
+
+ pub fn radians(&self) -> Radians {
+ Radians(self.y.atan2(self.x))
+ }
+
+ pub fn degrees(&self) -> Degrees {
+ self.radians().to_degrees()
+ }
+
pub fn to_i32(self) -> Point2D<i32> {
Point2D {
x: self.x as i32,