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