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; |
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 |