def test_two_short_line_endpoints_get_picked(self): lines = [LineSegment(Point(0, 0), Point(1, 0)), \ LineSegment(Point(0, 1), Point(1, 1))] traj_lines = [TrajectoryLineSegment(lines[0], 0), \ TrajectoryLineSegment(lines[1], 1)] res = get_representative_trajectory_average_inputs(trajectory_line_segments=traj_lines, \ min_prev_dist=1, min_lines=2) expected = 2 self.assertEquals(len(res), expected)
def test_four_line_sets_should_result(self): lines = [LineSegment(Point(0, 0), Point(1, 0)), \ LineSegment(Point(0.5, 1), Point(1.5, 1))] traj_lines = [TrajectoryLineSegment(lines[0], 0), \ TrajectoryLineSegment(lines[1], 1)] res = get_representative_trajectory_average_inputs(trajectory_line_segments=traj_lines, \ min_prev_dist=0.5, min_lines=1) expected = 4 self.assertEquals(len(res), expected)
def test_line_seg_distances(self): seg = LineSegment(Point(0, 0), Point(0, 2)) other = LineSegment(Point(0, 0), Point(2, 2)) perp_dist = perpendicular_distance(seg, other) ang_dist = angular_distance(seg, other) self.assertAlmostEquals(math.sqrt(2.0), perp_dist, delta=DECIMAL_MAX_DIFF_FOR_EQUALITY) self.assertAlmostEquals(math.sqrt(2.0), ang_dist, delta=DECIMAL_MAX_DIFF_FOR_EQUALITY)
def create_trajectory_line_seg(self, start, end, traj_id, original_position=None): return TrajectoryLineSegment(LineSegment(Point(start[0], start[1]), \ Point(end[0], end[1])), traj_id, original_position)
def test_right_angle_encoding_cost(self): points = [Point(0, 0), Point(0, 2), Point(2, 2)] line_segs = [ LineSegment(Point(0, 0), Point(0, 2)), LineSegment(Point(0, 2), Point(2, 2)) ] #line_segs = self.get_line_segs(points) actual = encoding_cost(trajectory_line_segs=line_segs, low=0, high=len(line_segs), partition_line=LineSegment( points[0], points[2]), angular_dist_func=angular_distance, perpendicular_dist_func=perpendicular_distance) self.assertAlmostEquals(math.log(2 * math.sqrt(2.0), 2) + math.log(2 * math.sqrt(2.0), 2), actual, delta=DECIMAL_MAX_DIFF_FOR_EQUALITY)
def create_line(self, horizontal_start, horizontal_end, line_set_ids, trajectory_id, orig_pos=None): if orig_pos == None: orig_pos = random.randint(0, 1000) return {'trajectory_line_segment': \ TrajectoryLineSegment(LineSegment(Point(horizontal_start, random.randint(0, 1000)), \ Point(horizontal_end, random.randint(0, 1000))), \ trajectory_id, orig_pos), \ 'line_set_ids': line_set_ids}
def funtmp(seg): start = Point(x=seg['start']['x'], y=seg['start']['y'], C=seg['start']['c'], V=seg['start']['v'], TIME=seg['start']['time']) end = Point(x=seg['end']['x'], y=seg['end']['y'], C=seg['end']['c'], V=seg['end']['v'], TIME=seg['end']['time']) lineseg = LineSegment(start, end) return lineseg
def test_creation(self): self.assertRaises((Exception, ArgumentError), TrajectoryLineSegment, \ LineSegment(Point(0, 0), Point(1, 1)), -1) self.assertRaises((Exception, ArgumentError), TrajectoryLineSegment, None, 1) self.assertRaises((Exception, ArgumentError), TrajectoryLineSegment, \ LineSegment(Point(0, 0), Point(1, 1)), None)
def get_line_segs(self, points): return map(lambda i: LineSegment(points[i], points[i + 1]), range(0, len(points) - 1))
def create_simple_line_seg(self, start, end): return LineSegment(Point(start[0], start[1]), Point(end[0], end[1]))