rust/land2d/src/lib.rs
changeset 13945 2354264ab0b0
parent 13944 4162ea9ae333
child 13946 54e2a3698425
equal deleted inserted replaced
13944:4162ea9ae333 13945:2354264ab0b0
     1 extern crate integral_geometry;
     1 extern crate integral_geometry;
     2 extern crate vec2d;
     2 extern crate vec2d;
     3 
     3 
     4 use std::cmp;
     4 use std::{cmp, mem::replace};
     5 use std::ops;
       
     6 
     5 
     7 use integral_geometry::{ArcPoints, EquidistantPoints, LinePoints, Point};
     6 use integral_geometry::{ArcPoints, EquidistantPoints, LinePoints, Point};
     8 
     7 
     9 pub struct Land2D<T> {
     8 pub struct Land2D<T> {
    10     pixels: vec2d::Vec2D<T>,
     9     pixels: vec2d::Vec2D<T>,
   212         let mut result = 0;
   211         let mut result = 0;
   213 
   212 
   214         for point in LinePoints::new(from, to) {
   213         for point in LinePoints::new(from, to) {
   215             for vector in ArcPoints::new(radius) {
   214             for vector in ArcPoints::new(radius) {
   216                 for delta in EquidistantPoints::new(vector) {
   215                 for delta in EquidistantPoints::new(vector) {
   217                     self.map_point(point + delta, |p| {
   216                     self.map_point(point + delta, |p|
   218                         if *p != value {
   217                         result += (replace(p, value) != value) as usize)
   219                             *p = value;
       
   220                             result += 1;
       
   221                         }
       
   222                     })
       
   223                 }
   218                 }
   224             }
   219             }
   225         }
   220         }
   226 
   221 
   227         result
   222         result