Skip to content

Commit 830140c

Browse files
authored
Merge pull request OmkarPathak#70 from OmkarPathak/dev
Merge from branch
2 parents da91053 + f513a89 commit 830140c

File tree

66 files changed

+1249
-4
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+1249
-4
lines changed

docs/Geometry.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Features
5555
* Algorithms available:
5656
- Separating Axis Theorem (polygon2)
5757
- Broad-phase (rect2)
58+
- Extrapolated intersection (extrapolated_intersection)
5859

5960
Vector2
6061
-------
@@ -92,6 +93,10 @@ Axis-Aligned Rectangle
9293
:special-members:
9394
:private-members:
9495

95-
96+
Extrapolated Intersection
97+
-------------------------
98+
99+
.. automodule:: pygorithm.geometry.extrapolated_intersection
100+
:members:
96101

97102

imgs/test_geometry/test_extrapolated_intersection/__init__.py

Whitespace-only changes.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from utils import create_newfig, create_moving_point, create_still_segment, run_or_export
2+
3+
def setup_fig01():
4+
fig, ax, renderer = create_newfig('aa01')
5+
6+
create_moving_point(fig, ax, renderer, 1, 1, 6, 1)
7+
create_still_segment(fig, ax, renderer, (2, 4), (6, 2))
8+
return fig, ax, 'aa01_test_point_line_no_intr'
9+
10+
def setup_fig02():
11+
fig, ax, renderer = create_newfig('aa02')
12+
13+
create_moving_point(fig, ax, renderer, 1, 1, 1, 4)
14+
create_still_segment(fig, ax, renderer, (2, 4), (6, 2), 'topright')
15+
return fig, ax, 'aa02_test_point_line_no_intr'
16+
17+
def setup_fig03():
18+
fig, ax, renderer = create_newfig('aa03')
19+
20+
create_moving_point(fig, ax, renderer, 4, 1, 1, 4)
21+
create_still_segment(fig, ax, renderer, (2, 4), (6, 4), 'topright')
22+
return fig, ax, 'aa03_test_point_line_no_intr'
23+
24+
def setup_fig04():
25+
fig, ax, renderer = create_newfig('aa04')
26+
27+
create_moving_point(fig, ax, renderer, 2, 1, 6, 4)
28+
create_still_segment(fig, ax, renderer, (1, 2), (5, 4), 'topleft')
29+
return fig, ax, 'aa04_test_point_line_no_intr'
30+
31+
run_or_export(setup_fig01, setup_fig02, setup_fig03, setup_fig04)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from utils import create_newfig, create_moving_point, create_still_segment, run_or_export
2+
3+
func_code = 'ab'
4+
func_name = 'test_point_line_touching'
5+
6+
def setup_fig01():
7+
fig, ax, renderer = create_newfig('{}01'.format(func_code))
8+
9+
create_moving_point(fig, ax, renderer, 1, 1, 2, 4)
10+
create_still_segment(fig, ax, renderer, (2, 4), (6, 2), 'topright')
11+
return fig, ax, '{}01_{}'.format(func_code, func_name)
12+
13+
def setup_fig02():
14+
fig, ax, renderer = create_newfig('{}02'.format(func_code))
15+
16+
create_moving_point(fig, ax, renderer, 2, 1, 6, 2)
17+
create_still_segment(fig, ax, renderer, (2, 0), (6, 2), 'botright')
18+
return fig, ax, '{}02_{}'.format(func_code, func_name)
19+
20+
def setup_fig03():
21+
fig, ax, renderer = create_newfig('{}03'.format(func_code))
22+
23+
create_moving_point(fig, ax, renderer, 2, 1, 2, 0)
24+
create_still_segment(fig, ax, renderer, (2, 0), (6, 2), 'botright')
25+
return fig, ax, '{}03_{}'.format(func_code, func_name)
26+
27+
def setup_fig04():
28+
fig, ax, renderer = create_newfig('{}04'.format(func_code))
29+
30+
create_moving_point(fig, ax, renderer, 6.25, 3, 2, 0, 'topright')
31+
create_still_segment(fig, ax, renderer, (2, 0), (6, 2), 'botright')
32+
return fig, ax, '{}04_{}'.format(func_code, func_name)
33+
34+
run_or_export(setup_fig01, setup_fig02, setup_fig03, setup_fig04)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from utils import create_newfig, create_moving_point, create_still_segment, run_or_export
2+
3+
func_code = 'ac'
4+
func_name = 'test_point_line_touching_at_start'
5+
6+
def setup_fig01():
7+
fig, ax, renderer = create_newfig('{}01'.format(func_code))
8+
9+
create_moving_point(fig, ax, renderer, 4, 1, 3, 2, 'top')
10+
create_still_segment(fig, ax, renderer, (2, 0), (6, 2), 'botright')
11+
return fig, ax, '{}01_{}'.format(func_code, func_name)
12+
13+
def setup_fig02():
14+
fig, ax, renderer = create_newfig('{}02'.format(func_code))
15+
16+
create_moving_point(fig, ax, renderer, 2, 2, 1, 2, 'top')
17+
create_still_segment(fig, ax, renderer, (2, 2), (6, 2), 'botright')
18+
return fig, ax, '{}02_{}'.format(func_code, func_name)
19+
20+
def setup_fig03():
21+
fig, ax, renderer = create_newfig('{}03'.format(func_code))
22+
23+
create_moving_point(fig, ax, renderer, 3, 1, 4, 2, 'left')
24+
create_still_segment(fig, ax, renderer, (3, 0), (3, 4), 'botright')
25+
return fig, ax, '{}03_{}'.format(func_code, func_name)
26+
27+
def setup_fig04():
28+
fig, ax, renderer = create_newfig('{}04'.format(func_code))
29+
30+
create_moving_point(fig, ax, renderer, 3, 4, 2, 4, 'top')
31+
create_still_segment(fig, ax, renderer, (3, 0), (3, 4), 'botright')
32+
return fig, ax, '{}04_{}'.format(func_code, func_name)
33+
34+
run_or_export(setup_fig01, setup_fig02, setup_fig03, setup_fig04)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from utils import create_newfig, create_moving_point, create_still_segment, run_or_export
2+
3+
func_code = 'ad'
4+
func_name = 'test_point_line_intr_later'
5+
6+
def setup_fig01():
7+
fig, ax, renderer = create_newfig('{}01'.format(func_code))
8+
9+
create_moving_point(fig, ax, renderer, 0, 2, 3, 1, 'topright')
10+
create_still_segment(fig, ax, renderer, (3, 0), (3, 4), 'botright')
11+
return fig, ax, '{}01_{}'.format(func_code, func_name)
12+
13+
def setup_fig02():
14+
fig, ax, renderer = create_newfig('{}02'.format(func_code))
15+
16+
create_moving_point(fig, ax, renderer, 6, 2, 3, 2, 'top')
17+
create_still_segment(fig, ax, renderer, (3, 0), (3, 4), 'botright')
18+
return fig, ax, '{}02_{}'.format(func_code, func_name)
19+
20+
def setup_fig03():
21+
fig, ax, renderer = create_newfig('{}03'.format(func_code))
22+
23+
create_moving_point(fig, ax, renderer, 6, 2, 3, 2, 'top')
24+
create_still_segment(fig, ax, renderer, (1, 1), (5, 3), 'botright')
25+
return fig, ax, '{}03_{}'.format(func_code, func_name)
26+
27+
def setup_fig04():
28+
fig, ax, renderer = create_newfig('{}04'.format(func_code))
29+
30+
create_moving_point(fig, ax, renderer, 6, 4, 3, 2, 'top')
31+
create_still_segment(fig, ax, renderer, (1, 1), (5, 3), 'botright')
32+
return fig, ax, '{}04_{}'.format(func_code, func_name)
33+
34+
run_or_export(setup_fig01, setup_fig02, setup_fig03, setup_fig04)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from utils import create_newfig, create_moving_line, create_still_segment, run_or_export
2+
3+
func_code = 'ae'
4+
func_name = 'test_line_line_no_intr'
5+
6+
def setup_fig01():
7+
fig, ax, renderer = create_newfig('{}01'.format(func_code))
8+
9+
create_moving_line(fig, ax, renderer, (1, 4), (1, 3), (2, 0), 'botright')
10+
create_still_segment(fig, ax, renderer, (1, 1), (3, 2), 'bot')
11+
return fig, ax, '{}01_{}'.format(func_code, func_name)
12+
13+
def setup_fig02():
14+
fig, ax, renderer = create_newfig('{}02'.format(func_code))
15+
16+
create_moving_line(fig, ax, renderer, (1, 3), (2, 4), (3, -3), 'topleft')
17+
create_still_segment(fig, ax, renderer, (1, 0.5), (3, 0.5), 'bot')
18+
return fig, ax, '{}02_{}'.format(func_code, func_name)
19+
20+
def setup_fig03():
21+
fig, ax, renderer = create_newfig('{}03'.format(func_code))
22+
23+
create_moving_line(fig, ax, renderer, (1, 3), (2, 4), (3, -3), 'topleft')
24+
create_still_segment(fig, ax, renderer, (4, 3), (6, 4), 'botright')
25+
return fig, ax, '{}03_{}'.format(func_code, func_name)
26+
27+
def setup_fig04():
28+
fig, ax, renderer = create_newfig('{}04'.format(func_code))
29+
30+
create_moving_line(fig, ax, renderer, (1, 3), (2, 3), (3, -3), 'bot')
31+
create_still_segment(fig, ax, renderer, (0, 4), (3, 3), 'topright')
32+
return fig, ax, '{}04_{}'.format(func_code, func_name)
33+
34+
run_or_export(setup_fig01, setup_fig02, setup_fig03, setup_fig04)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from utils import create_newfig, create_moving_line, create_still_segment, run_or_export
2+
3+
func_code = 'af'
4+
func_name = 'test_line_line_touching'
5+
6+
def setup_fig01():
7+
fig, ax, renderer = create_newfig('{}01'.format(func_code))
8+
9+
create_moving_line(fig, ax, renderer, (1, 3), (2, 3), (3, -3), 'top')
10+
create_still_segment(fig, ax, renderer, (3, 3), (5, 0), 'topright')
11+
return fig, ax, '{}01_{}'.format(func_code, func_name)
12+
13+
def setup_fig02():
14+
fig, ax, renderer = create_newfig('{}02'.format(func_code))
15+
16+
create_moving_line(fig, ax, renderer, (1, 1), (2, 1), (1, 1), 'bot')
17+
create_still_segment(fig, ax, renderer, (3, 2), (3, 3), 'right')
18+
return fig, ax, '{}02_{}'.format(func_code, func_name)
19+
20+
def setup_fig03():
21+
fig, ax, renderer = create_newfig('{}03'.format(func_code))
22+
23+
create_moving_line(fig, ax, renderer, (1, 1), (2, 1), (2, 2), 'bot')
24+
create_still_segment(fig, ax, renderer, (2, 3), (3, 3), 'top')
25+
return fig, ax, '{}03_{}'.format(func_code, func_name)
26+
27+
def setup_fig04():
28+
fig, ax, renderer = create_newfig('{}04'.format(func_code))
29+
30+
create_moving_line(fig, ax, renderer, (1, 1), (2, 1), (0, 2), 'bot')
31+
create_still_segment(fig, ax, renderer, (2, 3), (3, 3), 'top')
32+
return fig, ax, '{}04_{}'.format(func_code, func_name)
33+
34+
run_or_export(setup_fig01, setup_fig02, setup_fig03, setup_fig04)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from utils import create_newfig, create_moving_line, create_still_segment, run_or_export
2+
3+
func_code = 'ag'
4+
func_name = 'test_line_line_touching_at_start'
5+
6+
def setup_fig01():
7+
fig, ax, renderer = create_newfig('{}01'.format(func_code))
8+
9+
create_moving_line(fig, ax, renderer, (1, 1), (2, 1), (0, 2), 'botleft')
10+
create_still_segment(fig, ax, renderer, (2, 1), (3, 0), 'topright')
11+
return fig, ax, '{}01_{}'.format(func_code, func_name)
12+
13+
def setup_fig02():
14+
fig, ax, renderer = create_newfig('{}02'.format(func_code))
15+
16+
create_moving_line(fig, ax, renderer, (1, 1), (1, 3), (2, 0), 'left')
17+
create_still_segment(fig, ax, renderer, (1, 2), (2, 2), 'topright')
18+
return fig, ax, '{}02_{}'.format(func_code, func_name)
19+
20+
def setup_fig03():
21+
fig, ax, renderer = create_newfig('{}03'.format(func_code))
22+
23+
create_moving_line(fig, ax, renderer, (1, 1), (2, 0), (2, 0), 'topright')
24+
create_still_segment(fig, ax, renderer, (0, 1), (1.5, 0.5), 'botleft')
25+
return fig, ax, '{}03_{}'.format(func_code, func_name)
26+
27+
def setup_fig04():
28+
fig, ax, renderer = create_newfig('{}04'.format(func_code))
29+
30+
create_moving_line(fig, ax, renderer, (5, 4), (6, 3), (-2, -2), 'topright')
31+
create_still_segment(fig, ax, renderer, (5.5, 3.5), (6, 4), 'botleft', 'botright')
32+
return fig, ax, '{}04_{}'.format(func_code, func_name)
33+
34+
run_or_export(setup_fig01, setup_fig02, setup_fig03, setup_fig04)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from utils import create_newfig, create_moving_line, create_still_segment, run_or_export
2+
3+
func_code = 'ah'
4+
func_name = 'test_line_line_intr_later'
5+
6+
def setup_fig01():
7+
fig, ax, renderer = create_newfig('{}01'.format(func_code))
8+
9+
create_moving_line(fig, ax, renderer, (5, 4), (6, 3), (-2, -2), 'topright')
10+
create_still_segment(fig, ax, renderer, (3.5, 1.5), (3.5, 0), 'botleft', 'bot')
11+
return fig, ax, '{}01_{}'.format(func_code, func_name)
12+
13+
def setup_fig02():
14+
fig, ax, renderer = create_newfig('{}02'.format(func_code))
15+
16+
create_moving_line(fig, ax, renderer, (5, 4), (5, 3), (-2, -2), 'topright')
17+
create_still_segment(fig, ax, renderer, (3, 3), (3, 0), 'left')
18+
return fig, ax, '{}02_{}'.format(func_code, func_name)
19+
20+
def setup_fig03():
21+
fig, ax, renderer = create_newfig('{}03'.format(func_code))
22+
23+
create_moving_line(fig, ax, renderer, (5, 4), (5, 3), (-2, 0), 'right')
24+
create_still_segment(fig, ax, renderer, (1, 1), (3, 3.5), 'left')
25+
return fig, ax, '{}03_{}'.format(func_code, func_name)
26+
27+
def setup_fig04():
28+
fig, ax, renderer = create_newfig('{}04'.format(func_code))
29+
30+
create_moving_line(fig, ax, renderer, (0, 1), (1, 0), (1, 2), 'topright')
31+
create_still_segment(fig, ax, renderer, (2, 1), (2, 4), 'right')
32+
return fig, ax, '{}04_{}'.format(func_code, func_name)
33+
34+
run_or_export(setup_fig01, setup_fig02, setup_fig03, setup_fig04)

0 commit comments

Comments
 (0)