Skip to content

Commit 8002076

Browse files
committed
Fix tests
1 parent 73469bc commit 8002076

2 files changed

Lines changed: 2 additions & 44 deletions

File tree

src/int_interval_interval.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22

33
use crate::interval::Interval;
44

5-
// The possible 'configuration' in Result are listed as an
6-
// enumeration.
7-
// https://github.com/davideberly/GeometricTools/blob/master/GTE/Mathematics/IntrIntervals.h
8-
// https://github.com/davideberly/GeometricTools/blob/4f47cd85ae2711612dc9c166a87fe16a8cb368cf/GTE/Mathematics/IntrIntervals.h#L177
95
#[derive(Debug, PartialEq)]
106
pub enum IntervalConfig {
117
NoOverlap(),
@@ -33,15 +29,12 @@ pub fn intersect_interval_interval(interval0: Interval, interval1: Interval) ->
3329
if overlap0 < overlap1 {
3430
return IntervalConfig::Overlap(overlap0, overlap1);
3531
} else {
36-
// case with degenerate intervals
3732
return IntervalConfig::Overlap(overlap0, overlap0);
3833
}
3934
} else {
40-
// interval0[0] == interval1[1]
4135
return IntervalConfig::Touching(interval0.0);
4236
}
4337
} else {
44-
// interval0[1] == interval1[0]
4538
return IntervalConfig::Touching(interval0.1);
4639
}
4740
}

src/int_segment_segment.rs

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

3-
43
use crate::int_interval_interval::{intersect_interval_interval, IntervalConfig};
54
use crate::int_line_line::{intersect_line_line, LineConfig};
65
use crate::interval::interval;
76

87
use crate::{line::line, point::Point, segment::Segment};
98

10-
// Intersection between two line segments
11-
// https://github.com/davideberly/GeometricTools/blob/master/GTE/Mathematics/IntrSegment2Segment2.h
12-
// https://github.com/davideberly/GeometricTools/blob/master/GTE/Mathematics/IntrSegment2Segment2.h#L215
139
#[derive(Debug, PartialEq)]
1410
pub enum SegmentConfig {
1511
NoIntersection(),
1612
OnePoint(Point, f64, f64),
17-
//TwoPoints(Point, Point, f64, f64, f64, f64),
13+
1814
TwoPoints(Point, Point, Point, Point),
1915
}
2016

21-
// This version of the query uses GetCenteredForm, which
22-
// has a Normalize call. This generates rounding errors, so the query
23-
// should be used only with float or double. NOTE: The parameters are
24-
// are relative to the centered form of the segment. Each segment has
25-
// a center C, a unit-length direction D and an extent e > 0. A
26-
// segment point is C+t*D where |t| <= e.
2717
pub fn intersect_segment_segment(segment0: Segment, segment1: Segment) -> SegmentConfig {
2818
let (seg0_origin, seg0_direction, seg0_extent) = segment0.get_centered_form();
2919
let (seg1_origin, seg1_direction, seg1_extent) = segment1.get_centered_form();
@@ -35,38 +25,22 @@ pub fn intersect_segment_segment(segment0: Segment, segment1: Segment) -> Segmen
3525
match ll_result {
3626
LineConfig::ParallelDistinct() => return SegmentConfig::NoIntersection(),
3727
LineConfig::OnePoint(p, s0, s1) => {
38-
// The lines are not parallel, so they intersect in a single
39-
// point. Test whether the line-line intersection is on the
40-
// segments.
4128
if s0.abs() <= seg0_extent && s1.abs() <= seg1_extent {
4229
return SegmentConfig::OnePoint(p, s0, s1);
4330
} else {
4431
return SegmentConfig::NoIntersection();
4532
}
4633
}
4734
LineConfig::ParallelTheSame() => {
48-
// The lines are the same. Compute the location of segment1
49-
// endpoints relative to segment0.
5035
let diff = seg1_origin - seg0_origin;
5136
let t = seg0_direction.dot(diff);
5237
let interval0 = interval(-seg0_extent, seg0_extent);
5338
let interval1 = interval(t - seg1_extent, t + seg1_extent);
54-
// Compute the intersection of the intervals.
39+
5540
let ii_result = intersect_interval_interval(interval0, interval1);
5641
match ii_result {
5742
IntervalConfig::NoOverlap() => return SegmentConfig::NoIntersection(),
5843
IntervalConfig::Overlap(_, _) => {
59-
// let param00 = i0;
60-
// let param10 = i0 - t;
61-
// let point0 = seg0_origin + seg0_direction * param00;
62-
63-
// let param01 = i1;
64-
// let param11 = i1 - t;
65-
// let point1 = seg0_origin + seg0_direction * param01;
66-
67-
// return SegmentConfig::TwoPoints(
68-
// point0, point1, param00, param01, param10, param11,
69-
// );
7044
let (p0, p1, p2, p3) = Point::sort_parallel_points(
7145
segment0.p0,
7246
segment0.p1,
@@ -76,10 +50,6 @@ pub fn intersect_segment_segment(segment0: Segment, segment1: Segment) -> Segmen
7650
return SegmentConfig::TwoPoints(p0, p1, p2, p3);
7751
}
7852
IntervalConfig::Touching(_) => {
79-
// let param0 = i0;
80-
// let param1 = i0 - t;
81-
// let point0 = seg0_origin + seg0_direction * param0;
82-
8353
return SegmentConfig::NoIntersection();
8454
}
8555
}
@@ -114,7 +84,6 @@ mod test_int_segment_segment {
11484

11585
#[test]
11686
fn test_no_intersection2() {
117-
// parallel, not overlaping
11887
let sqrt_2_2 = std::f64::consts::SQRT_2 / 2.0;
11988
let p0 = point(0.0, 0.0);
12089
let p1 = point(sqrt_2_2, sqrt_2_2);
@@ -129,7 +98,6 @@ mod test_int_segment_segment {
12998

13099
#[test]
131100
fn test_parallel_overlaping() {
132-
// parallel the same, overlaping
133101
let ulp = std::f64::EPSILON * 2.0;
134102
let s0 = segment(point(0.0, 0.0), point(2.0, 2.0));
135103
let s1 = segment(point(1.0, 1.0), point(3.0, 3.0));
@@ -146,7 +114,6 @@ mod test_int_segment_segment {
146114

147115
#[test]
148116
fn test_parallel_overlaping2() {
149-
// parallel the same, overlaping
150117
let ulp = std::f64::EPSILON * 3.0;
151118
let s0 = segment(point(0.0, 0.0), point(2.0, 2.0));
152119
let s1 = segment(point(4.0, 4.0), point(-4.0, -4.0));
@@ -163,11 +130,9 @@ mod test_int_segment_segment {
163130

164131
#[test]
165132
fn test_parallel_touching() {
166-
// parallel the same, overlaping
167133
let s0 = segment(point(0.0, 0.0), point(1.0, 0.0));
168134
let s1 = segment(point(1.0, 0.0), point(4.0, 0.0));
169135
assert!(intersect_segment_segment(s0, s1) == SegmentConfig::NoIntersection());
170-
171136
}
172137

173138
#[test]

0 commit comments

Comments
 (0)