-
Notifications
You must be signed in to change notification settings - Fork 4
/
cg.py
46 lines (39 loc) · 803 Bytes
/
cg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from numpy import hstack
from numpy import ones
from numpy.linalg import det
from sympy.geometry import Line
from sympy.geometry import Point
from sympy.geometry import Triangle
from sympy.geometry import intersection
from sympy.geometry import Polygon
def vuw(T):
"""
Vertices under water
Triangle: T
"""
return [v for v in T.vertices if v.y <= 0]
def auw(T):
"""
Area under water
Triangle: T
Waterlevel assumed to be at 0
o = Point(-1, -1)
p = Point(1, -1)
q = Point(0, 1)
T = Triangle(o, p, q)
vuw(T)
r = Point(-1, 1)
s = Point(1, 1)
t = Point(0, 2)
V = Triangle(r, s, t)
vuw(V)
auw(V)
from wpr import _pp
figure()
_pp(T)
_pp(auw(T), color='g')
"""
v = vuw(T)
if len(v) > 0:
return Polygon(*(v + intersection(T, Line(Point(-10, 0), Point(10, 0)))))
return None