equal
deleted
inserted
replaced
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 |