rust/integral-geometry/src/lib.rs
changeset 15214 58a0f2a6527b
parent 15182 decb2f1c682b
child 15215 13041ae61ac5
equal deleted inserted replaced
15213:517f3a1dd5c2 15214:58a0f2a6527b
     1 use fpnum::{distance, fp, FPNum, FPPoint};
     1 use fpnum::{fp, integral_sqrt, FPNum, FPPoint};
     2 use std::{
     2 use std::{
     3     cmp::{max, min},
     3     cmp::{max, min},
     4     ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, RangeInclusive, Sub, SubAssign},
     4     ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, RangeInclusive, Sub, SubAssign},
     5 };
     5 };
     6 
     6 
    43         std::cmp::max(self.x.abs(), self.y.abs())
    43         std::cmp::max(self.x.abs(), self.y.abs())
    44     }
    44     }
    45 
    45 
    46     #[inline]
    46     #[inline]
    47     pub fn integral_norm(self) -> u32 {
    47     pub fn integral_norm(self) -> u32 {
    48         distance(self.x, self.y).abs_round()
    48         let sqr = (self.x as u64).pow(2) + (self.y as u64).pow(2);
       
    49         integral_sqrt(sqr) as u32
    49     }
    50     }
    50 
    51 
    51     #[inline]
    52     #[inline]
    52     pub const fn transform(self, matrix: &[i32; 4]) -> Self {
    53     pub const fn transform(self, matrix: &[i32; 4]) -> Self {
    53         Point::new(
    54         Point::new(