Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
p3_ = Coordinate(180, 89)
p4_ = Coordinate(-90, 89)
p5_ = Coordinate(45, 89)
p6_ = Coordinate(135, 89)
arc13 = Arc(p1_, p3_)
arc24 = Arc(p2_, p4_)
arc32 = Arc(p3_, p2_)
arc41 = Arc(p4_, p1_)
arc40 = Arc(p4_, p0_)
arc56 = Arc(p5_, p6_)
arc45 = Arc(p4_, p5_)
arc02 = Arc(p0_, p2_)
arc35 = Arc(p3_, p5_)
self.assertTrue(arc13.intersects(arc24))
self.assertFalse(arc32.intersects(arc41))
self.assertFalse(arc56.intersects(arc40))
self.assertFalse(arc56.intersects(arc40))
self.assertFalse(arc45.intersects(arc02))
self.assertTrue(arc35.intersects(arc24))
msg="this should be pi")
self.assertAlmostEqual(arc3.angle(arc1), math.pi,
msg="this should be pi")
self.assertAlmostEqual(arc2.angle(arc4), math.pi,
msg="this should be pi")
self.assertAlmostEqual(arc4.angle(arc2), math.pi,
msg="this should be pi")
p5_ = Coordinate(base + 1, base + 1)
p6_ = Coordinate(base + 1, base - 1)
p7_ = Coordinate(base - 1, base - 1)
p8_ = Coordinate(base - 1, base + 1)
arc5 = Arc(p0_, p5_)
arc6 = Arc(p0_, p6_)
arc7 = Arc(p0_, p7_)
arc8 = Arc(p0_, p8_)
self.assertAlmostEqual(arc1.angle(arc5), math.pi / 4, 3,
msg="this should be pi/4")
self.assertAlmostEqual(arc5.angle(arc2), math.pi / 4, 3,
msg="this should be pi/4")
self.assertAlmostEqual(arc2.angle(arc6), math.pi / 4, 3,
msg="this should be pi/4")
self.assertAlmostEqual(arc6.angle(arc3), math.pi / 4, 3,
msg="this should be pi/4")
self.assertAlmostEqual(arc3.angle(arc7), math.pi / 4, 3,
msg="this should be pi/4")
self.assertAlmostEqual(arc7.angle(arc4), math.pi / 4, 3,
msg="this should be pi/4")
self.assertAlmostEqual(arc4.angle(arc8), math.pi / 4, 3,
def test_angle(self):
"""Testing the angle value between two arcs.
"""
base = 0
p0_ = Coordinate(base, base)
p1_ = Coordinate(base, base + 1)
p2_ = Coordinate(base + 1, base)
p3_ = Coordinate(base, base - 1)
p4_ = Coordinate(base - 1, base)
arc1 = Arc(p0_, p1_)
arc2 = Arc(p0_, p2_)
arc3 = Arc(p0_, p3_)
arc4 = Arc(p0_, p4_)
self.assertAlmostEqual(arc1.angle(arc2), math.pi / 2,
msg="this should be pi/2")
self.assertAlmostEqual(arc2.angle(arc3), math.pi / 2,
msg="this should be pi/2")
self.assertAlmostEqual(arc3.angle(arc4), math.pi / 2,
msg="this should be pi/2")
self.assertAlmostEqual(arc4.angle(arc1), math.pi / 2,
msg="this should be pi/2")
self.assertAlmostEqual(arc1.angle(arc4), -math.pi / 2,
msg="this should be -pi/2")
self.assertAlmostEqual(arc4.angle(arc3), -math.pi / 2,
msg="this should be -pi/2")
self.assertAlmostEqual(arc3.angle(arc2), -math.pi / 2,
msg="this should be -pi/2")
self.assertAlmostEqual(arc4.angle(arc1), math.pi / 2,
msg="this should be pi/2")
self.assertAlmostEqual(arc1.angle(arc4), -math.pi / 2,
msg="this should be -pi/2")
self.assertAlmostEqual(arc4.angle(arc3), -math.pi / 2,
msg="this should be -pi/2")
self.assertAlmostEqual(arc3.angle(arc2), -math.pi / 2,
msg="this should be -pi/2")
self.assertAlmostEqual(arc2.angle(arc1), -math.pi / 2,
msg="this should be -pi/2")
self.assertAlmostEqual(Arc(c1_, c2_).angle(arc1), math.pi/4, 3,
msg="this should be pi/4")
self.assertAlmostEqual(Arc(c4_, c3_).angle(arc4), -math.pi/4, 3,
msg="this should be -pi/4")
self.assertAlmostEqual(Arc(c1_, c4_).angle(arc1), -math.pi/4, 3,
msg="this should be -pi/4")
def test_intersects(self):
"""Test if two arcs intersect.
"""
p0_ = Coordinate(0, 0)
p1_ = Coordinate(0, 1)
p2_ = Coordinate(1, 0)
p3_ = Coordinate(0, -1)
p4_ = Coordinate(-1, 0)
p5_ = Coordinate(1, 1)
p6_ = Coordinate(1, -1)
arc13 = Arc(p1_, p3_)
arc24 = Arc(p2_, p4_)
arc32 = Arc(p3_, p2_)
arc41 = Arc(p4_, p1_)
arc40 = Arc(p4_, p0_)
arc56 = Arc(p5_, p6_)
arc45 = Arc(p4_, p5_)
arc02 = Arc(p0_, p2_)
arc35 = Arc(p3_, p5_)
self.assertTrue(arc13.intersects(arc24))
self.assertFalse(arc32.intersects(arc41))
def test_angle(self):
"""Testing the angle value between two arcs.
"""
base = 0
p0_ = Coordinate(base, base)
p1_ = Coordinate(base, base + 1)
p2_ = Coordinate(base + 1, base)
p3_ = Coordinate(base, base - 1)
p4_ = Coordinate(base - 1, base)
arc1 = Arc(p0_, p1_)
arc2 = Arc(p0_, p2_)
arc3 = Arc(p0_, p3_)
arc4 = Arc(p0_, p4_)
self.assertAlmostEqual(arc1.angle(arc2), math.pi / 2,
msg="this should be pi/2")
self.assertAlmostEqual(arc2.angle(arc3), math.pi / 2,
msg="this should be pi/2")
self.assertAlmostEqual(arc3.angle(arc4), math.pi / 2,
msg="this should be pi/2")
self.assertAlmostEqual(arc4.angle(arc1), math.pi / 2,
msg="this should be pi/2")
self.assertAlmostEqual(arc1.angle(arc4), -math.pi / 2,
msg="this should be -pi/2")
self.assertAlmostEqual(arc4.angle(arc3), -math.pi / 2,
msg="this should be -pi/2")
self.assertAlmostEqual(arc3.angle(arc2), -math.pi / 2,
from pyresample.spherical_geometry import Arc
self_corners = self.corners
other_corners = other.corners
for i in self_corners:
if i in other:
return True
for i in other_corners:
if i in self:
return True
self_arc1 = Arc(self_corners[0], self_corners[1])
self_arc2 = Arc(self_corners[1], self_corners[2])
self_arc3 = Arc(self_corners[2], self_corners[3])
self_arc4 = Arc(self_corners[3], self_corners[0])
other_arc1 = Arc(other_corners[0], other_corners[1])
other_arc2 = Arc(other_corners[1], other_corners[2])
other_arc3 = Arc(other_corners[2], other_corners[3])
other_arc4 = Arc(other_corners[3], other_corners[0])
for i in (self_arc1, self_arc2, self_arc3, self_arc4):
for j in (other_arc1, other_arc2, other_arc3, other_arc4):
if i.intersects(j):
return True
return False
"""
from pyresample.spherical_geometry import Arc
self_corners = self.corners
other_corners = other.corners
for i in self_corners:
if i in other:
return True
for i in other_corners:
if i in self:
return True
self_arc1 = Arc(self_corners[0], self_corners[1])
self_arc2 = Arc(self_corners[1], self_corners[2])
self_arc3 = Arc(self_corners[2], self_corners[3])
self_arc4 = Arc(self_corners[3], self_corners[0])
other_arc1 = Arc(other_corners[0], other_corners[1])
other_arc2 = Arc(other_corners[1], other_corners[2])
other_arc3 = Arc(other_corners[2], other_corners[3])
other_arc4 = Arc(other_corners[3], other_corners[0])
for i in (self_arc1, self_arc2, self_arc3, self_arc4):
for j in (other_arc1, other_arc2, other_arc3, other_arc4):
if i.intersects(j):
return True
return False
for i in self_corners:
if i in other:
return True
for i in other_corners:
if i in self:
return True
self_arc1 = Arc(self_corners[0], self_corners[1])
self_arc2 = Arc(self_corners[1], self_corners[2])
self_arc3 = Arc(self_corners[2], self_corners[3])
self_arc4 = Arc(self_corners[3], self_corners[0])
other_arc1 = Arc(other_corners[0], other_corners[1])
other_arc2 = Arc(other_corners[1], other_corners[2])
other_arc3 = Arc(other_corners[2], other_corners[3])
other_arc4 = Arc(other_corners[3], other_corners[0])
for i in (self_arc1, self_arc2, self_arc3, self_arc4):
for j in (other_arc1, other_arc2, other_arc3, other_arc4):
if i.intersects(j):
return True
return False
def get_polygon_area(corners):
"""Get the area of the convex area defined by *corners*.
"""
# We assume the earth is spherical !!!
# Should be the radius of the earth at the observed position
R = 1
c1_ = corners[0]
area = 0
for idx in range(1, len(corners) - 1):
b1_ = Arc(c1_, corners[idx])
b2_ = Arc(c1_, corners[idx + 1])
b3_ = Arc(corners[idx], corners[idx + 1])
e__ = (abs(b1_.angle(b2_, snap=False)) +
abs(b2_.angle(b3_, snap=False)) +
abs(b3_.angle(b1_, snap=False)))
area += e__ - math.pi
return R ** 2 * area