Skip to content

Commit 73469bc

Browse files
committed
Fix tests
1 parent a1f1f44 commit 73469bc

27 files changed

Lines changed: 536 additions & 1295 deletions

src/arc.rs

Lines changed: 42 additions & 309 deletions
Large diffs are not rendered by default.

src/arc_string.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
#![allow(dead_code)]
22

3-
use std::fmt::Display;
43

54
use crate::Arc;
65

7-
6+
// A series of contiguous arc segments.
87
pub struct ArcString(pub Vec<Arc>);
98

10-
9+
// https://github.com/georust/geo/blob/main/geo-types/src/geometry/line_string.rs
1110
pub struct ArcsIter<'a>(::core::slice::Iter<'a, Arc>);
1211

1312
impl<'a> Iterator for ArcsIter<'a> {
@@ -35,12 +34,12 @@ impl<'a> DoubleEndedIterator for ArcsIter<'a> {
3534
}
3635

3736
impl ArcString {
38-
37+
/// Instantiate Self from the raw content value
3938
pub fn new(value: Vec<Arc>) -> Self {
4039
Self(value)
4140
}
4241

43-
42+
/// Return an iterator yielding the arcs
4443
pub fn arcs(&self) -> ArcsIter {
4544
ArcsIter(self.0.iter())
4645
}
@@ -53,8 +52,6 @@ impl ArcString {
5352

5453
#[cfg(test)]
5554
mod test_arc_string {
56-
use super::*;
57-
use crate::point::point;
5855

5956
#[test]
6057
fn test_new() {}

src/dist_arc_arc.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#![allow(dead_code)]
22

33
use crate::int_line_arc::LineArcConfig;
4+
use crate::line::line;
45
use crate::{
5-
dist_point_arc::distance_point_arc, int_arc_arc::intersect_arc_arc, int_line_arc::intersect_line_arc, point::point, Arc, Point
6+
dist_point_arc::distance_point_arc, int_arc_arc::intersect_arc_arc,
7+
int_line_arc::intersect_line_arc, point::point, Arc, Point,
68
};
7-
use crate::line::line;
89

9-
// TODO: fake distance
1010
pub fn distance_arc_arc(arc0: &Arc, arc1: &Arc) -> (Point, f64) {
1111
let inter = intersect_arc_arc(arc0, arc1);
1212
match inter {
@@ -16,15 +16,15 @@ pub fn distance_arc_arc(arc0: &Arc, arc1: &Arc) -> (Point, f64) {
1616
v.push(distance_point_arc(arc0.b, arc1).1);
1717
v.push(distance_point_arc(arc1.a, arc0).1);
1818
v.push(distance_point_arc(arc1.b, arc0).1);
19-
// Arc - Arc
19+
2020
let la0 = intersect_line_arc(line(arc0.c, arc1.c), arc0);
2121
let la1 = intersect_line_arc(line(arc0.c, arc1.c), arc1);
2222
match (la0, la1) {
23-
(LineArcConfig::OnePoint(p0, _), LineArcConfig::OnePoint(p1,_)) => {
24-
v.push((p0-p1).norm_imp());
23+
(LineArcConfig::OnePoint(p0, _), LineArcConfig::OnePoint(p1, _)) => {
24+
v.push((p0 - p1).norm());
2525
}
2626
_ => {}
27-
}
27+
}
2828

2929
let mm;
3030
let m = v.into_iter().min_by(|a, b| a.partial_cmp(b).unwrap());
@@ -44,7 +44,6 @@ pub fn distance_arc_arc(arc0: &Arc, arc1: &Arc) -> (Point, f64) {
4444

4545
#[cfg(test)]
4646
mod tests_distance_arc_arc {
47-
4847

4948
#[test]
5049
fn test_distance_arc_arc() {}

src/dist_line_circle.rs

Lines changed: 9 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
#![allow(dead_code)]
22

3-
use core::num;
4-
53
use crate::circle::Circle;
64
use crate::line::Line;
75
use crate::point::point;
@@ -13,45 +11,13 @@ pub enum DistLineCircleConfig {
1311
TwoPairs(f64, Point, Point, Point, Point),
1412
}
1513

16-
17-
18-
19-
20-
21-
22-
23-
24-
25-
26-
27-
28-
29-
30-
31-
32-
3314
pub fn distance_line_circle(line: &Line, circle: &Circle) -> DistLineCircleConfig {
3415
let mut parameter: [f64; 2] = [0.0; 2];
3516
let mut closest: [[Point; 2]; 2] = [[point(0.0, 0.0); 2]; 2];
3617
let num_closest_pairs;
37-
38-
39-
let delta = line.origin - circle.c;
40-
41-
42-
4318

44-
45-
19+
let delta = line.origin - circle.c;
4620

47-
48-
49-
50-
51-
52-
53-
54-
5521
const ZERO: f64 = 0.0;
5622
let direction = line.dir;
5723
let radius = circle.r;
@@ -62,42 +28,22 @@ pub fn distance_line_circle(line: &Line, circle: &Circle) -> DistLineCircleConfi
6228
let r_sqr = radius * radius;
6329
let test = dot_perp_dir_del * dot_perp_dir_del - r_sqr * dot_dir_dir;
6430
if test >= ZERO {
65-
66-
67-
68-
69-
70-
71-
72-
73-
74-
75-
7631
num_closest_pairs = 1;
7732
parameter[0] = -dot_dir_del / dot_dir_dir;
7833
closest[0][0] = delta + direction * parameter[0];
7934
closest[0][1] = closest[0][0];
8035

81-
8236
if test > ZERO {
8337
closest[0][1].normalize();
8438
closest[0][1] = closest[0][1] * radius;
8539
}
8640
} else {
87-
88-
89-
90-
91-
92-
9341
let a0 = delta.dot(delta) - radius * radius;
9442
let a1 = dot_dir_del;
9543
let a2 = dot_dir_dir;
9644
let discr = max(a1 * a1 - a0 * a2, ZERO);
9745
let sqrt_discr = discr.sqrt();
9846

99-
100-
10147
let temp = -dot_dir_del
10248
+ if dot_dir_del > ZERO {
10349
-sqrt_discr
@@ -111,28 +57,30 @@ pub fn distance_line_circle(line: &Line, circle: &Circle) -> DistLineCircleConfi
11157
(parameter[1], parameter[0]) = (parameter[0], parameter[1]);
11258
}
11359

114-
11560
closest[0][0] = delta + direction * parameter[0];
11661
closest[0][1] = closest[0][0];
11762
closest[1][0] = delta + direction * parameter[1];
11863
closest[1][1] = closest[1][0];
11964
}
12065

121-
122-
12366
for j in 0..num_closest_pairs {
12467
for i in 0..2 {
12568
closest[j][i] = closest[j][i] + circle.c;
12669
}
12770
}
12871

129-
let diff = closest[0][0] - closest[0][1];
130-
let distance = (closest[0][0] - closest[0][1]).norm_imp();
72+
let distance = (closest[0][0] - closest[0][1]).norm();
13173

13274
if num_closest_pairs == 2 {
13375
DistLineCircleConfig::OnePair(distance, closest[0][0], closest[0][1])
13476
} else {
135-
DistLineCircleConfig::TwoPairs(distance, closest[0][0], closest[0][1], closest[1][0], closest[1][1])
77+
DistLineCircleConfig::TwoPairs(
78+
distance,
79+
closest[0][0],
80+
closest[0][1],
81+
closest[1][0],
82+
closest[1][1],
83+
)
13684
}
13785
}
13886

@@ -153,7 +101,6 @@ fn max(a: f64, b: f64) -> f64 {
153101

154102
#[cfg(test)]
155103
mod tests_distance_line_circle {
156-
use super::*;
157104

158105
#[test]
159106
fn test_distance_line_circle() {}

src/dist_point_arc.rs

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,11 @@
11
#![allow(dead_code)]
22

3-
use crate::{
4-
circle::{circle, Circle},
5-
dist_point_circle::distance_point_circle,
6-
Arc, Point,
7-
};
8-
3+
use crate::{circle::circle, dist_point_circle::distance_point_circle, Arc, Point};
94

105
pub fn distance_point_arc(point: Point, arc: &Arc) -> (Point, f64) {
116
let circle = circle(arc.c, arc.r);
127
let pc_result = distance_point_circle(point, &circle);
138
if circle.r != pc_result.1 {
14-
15-
16-
17-
189
if arc.contains(pc_result.0) {
1910
(pc_result.0, pc_result.1)
2011
} else {
@@ -29,15 +20,12 @@ pub fn distance_point_arc(point: Point, arc: &Arc) -> (Point, f64) {
2920
}
3021
}
3122
} else {
32-
3323
(arc.a, arc.r)
3424
}
3525
}
3626

3727
#[cfg(test)]
3828
mod tests_dist_point_circle {
39-
use super::*;
40-
4129
#[test]
4230
fn test_dist_point_circle() {}
4331
}

src/dist_point_circle.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
use crate::circle::Circle;
44
use crate::Point;
55

6-
76
pub fn distance_point_circle(point: Point, circle: &Circle) -> (Point, f64) {
87
let diff = point - circle.c;
9-
let length = diff.norm_imp();
8+
let length = diff.norm();
109
if length > 0f64 {
1110
let diff = diff / length;
1211
(circle.c + diff * circle.r, (length - circle.r).abs())
@@ -18,7 +17,6 @@ pub fn distance_point_circle(point: Point, circle: &Circle) -> (Point, f64) {
1817

1918
#[cfg(test)]
2019
mod tests_distance_point_circle {
21-
use super::*;
2220

2321
#[test]
2422
fn test_distance_point_circle() {}

src/dist_point_segment.rs

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,9 @@
11
#![allow(dead_code)]
22

3-
use crate::circle::Circle;
43
use crate::segment::Segment;
54
use crate::Point;
65

7-
8-
9-
10-
11-
12-
13-
14-
15-
166
pub fn distance_point_segment(point: Point, segment: Segment) -> (Point, f64) {
17-
18-
197
let closest;
208
const ZERO: f64 = 0f64;
219
const ONE: f64 = 1f64;
@@ -40,12 +28,11 @@ pub fn distance_point_segment(point: Point, segment: Segment) -> (Point, f64) {
4028
}
4129
}
4230

43-
(closest, (point - closest).norm_imp())
31+
(closest, (point - closest).norm())
4432
}
4533

4634
#[cfg(test)]
4735
mod tests_distance_point_segment {
48-
use super::*;
4936

5037
#[test]
5138
fn test_distance_point_segment() {}

src/dist_segment_arc.rs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
11
#![allow(dead_code)]
22

33
use crate::{
4-
circle::{circle, Circle},
5-
dist_point_arc::distance_point_arc,
6-
dist_point_circle::distance_point_circle,
7-
dist_point_segment::distance_point_segment,
8-
int_segment_arc::intersect_segment_arc,
9-
point::point,
10-
segment::Segment,
11-
Arc, Point,
4+
dist_point_arc::distance_point_arc, dist_point_segment::distance_point_segment,
5+
int_segment_arc::intersect_segment_arc, point::point, segment::Segment, Arc, Point,
126
};
137

14-
158
pub fn distance_segment_arc(seg: Segment, arc: &Arc) -> (Point, f64) {
169
let inter = intersect_segment_arc(seg, arc);
1710
match inter {
@@ -39,7 +32,6 @@ pub fn distance_segment_arc(seg: Segment, arc: &Arc) -> (Point, f64) {
3932

4033
#[cfg(test)]
4134
mod tests_distance_segment_arc {
42-
use super::*;
4335

4436
#[test]
4537
fn test_distance_segment_arc() {}

src/dist_segment_circle.rs

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
#![allow(dead_code)]
22

3-
use crate::int_interval_interval::{intersect_interval_interval, IntervalConfig};
4-
use crate::int_line_circle::LineCircleConfig;
5-
use crate::interval::interval;
6-
use crate::line::line;
7-
use crate::{circle::Circle, int_line_circle::intersect_line_circle, segment::Segment, Point};
8-
9-
3+
use crate::Point;
104

115
#[derive(Debug, PartialEq)]
126
pub enum DistSegmentCircleConfig {
@@ -15,33 +9,9 @@ pub enum DistSegmentCircleConfig {
159
TwoPoints(Point, Point, f64, f64),
1610
}
1711

18-
19-
20-
21-
22-
23-
24-
25-
26-
27-
28-
29-
30-
31-
32-
33-
34-
pub fn dist_segment_circle(seg: Segment, circle: Circle) -> DistSegmentCircleConfig {
35-
36-
37-
DistSegmentCircleConfig::NoIntersection()
38-
}
39-
40-
4112
#[cfg(test)]
4213
mod tests_dist_segment_circle {
43-
use super::*;
4414

4515
#[test]
4616
fn test_dist_segment_circle() {}
47-
}
17+
}

0 commit comments

Comments
 (0)