@@ -104,6 +104,57 @@ def test_corner_center():
104104 assert_almost_equal (ellipse .get_corners (), corners_rot )
105105
106106
107+ def test_ellipse_vertices ():
108+ # expect 0 for 0 ellipse width, height
109+ ellipse = Ellipse (xy = (0 , 0 ), width = 0 , height = 0 , angle = 0 )
110+ assert_almost_equal (
111+ ellipse .get_vertices (),
112+ [(0.0 , 0.0 ), (0.0 , 0.0 )],
113+ )
114+ assert_almost_equal (
115+ ellipse .get_co_vertices (),
116+ [(0.0 , 0.0 ), (0.0 , 0.0 )],
117+ )
118+
119+ ellipse = Ellipse (xy = (0 , 0 ), width = 2 , height = 1 , angle = 30 )
120+ assert_almost_equal (
121+ ellipse .get_vertices (),
122+ [
123+ (
124+ ellipse .center [0 ] + ellipse .width / 4 * np .sqrt (3 ),
125+ ellipse .center [1 ] + ellipse .width / 4 ,
126+ ),
127+ (
128+ ellipse .center [0 ] - ellipse .width / 4 * np .sqrt (3 ),
129+ ellipse .center [1 ] - ellipse .width / 4 ,
130+ ),
131+ ],
132+ )
133+ assert_almost_equal (
134+ ellipse .get_co_vertices (),
135+ [
136+ (
137+ ellipse .center [0 ] - ellipse .height / 4 ,
138+ ellipse .center [1 ] + ellipse .height / 4 * np .sqrt (3 ),
139+ ),
140+ (
141+ ellipse .center [0 ] + ellipse .height / 4 ,
142+ ellipse .center [1 ] - ellipse .height / 4 * np .sqrt (3 ),
143+ ),
144+ ],
145+ )
146+ v1 , v2 = np .array (ellipse .get_vertices ())
147+ np .testing .assert_almost_equal ((v1 + v2 ) / 2 , ellipse .center )
148+ v1 , v2 = np .array (ellipse .get_co_vertices ())
149+ np .testing .assert_almost_equal ((v1 + v2 ) / 2 , ellipse .center )
150+
151+ ellipse = Ellipse (xy = (2.252 , - 10.859 ), width = 2.265 , height = 1.98 , angle = 68.78 )
152+ v1 , v2 = np .array (ellipse .get_vertices ())
153+ np .testing .assert_almost_equal ((v1 + v2 ) / 2 , ellipse .center )
154+ v1 , v2 = np .array (ellipse .get_co_vertices ())
155+ np .testing .assert_almost_equal ((v1 + v2 ) / 2 , ellipse .center )
156+
157+
107158def test_rotate_rect ():
108159 loc = np .asarray ([1.0 , 2.0 ])
109160 width = 2
0 commit comments