Commit 9dae93cc9b158d9cd30fe781be098b00e88c5f81
1 parent
2bc6d362
Exists in
master
and in
26 other branches
Added a method to draw arcs given 2 points and a center
Showing
2 changed files
with
33 additions
and
0 deletions
Show diff stats
invesalius/data/measures.py
@@ -865,6 +865,7 @@ class AngularMeasure(object): | @@ -865,6 +865,7 @@ class AngularMeasure(object): | ||
865 | # path.AddArc((c[0], c[1]), min(s0, s1), sa, ea) | 865 | # path.AddArc((c[0], c[1]), min(s0, s1), sa, ea) |
866 | # gc.StrokePath(path) | 866 | # gc.StrokePath(path) |
867 | 867 | ||
868 | + canvas.draw_arc(points[1], points[0], points[2]) | ||
868 | canvas.draw_text_box(txt, (points[0][0], points[0][1])) | 869 | canvas.draw_text_box(txt, (points[0][0], points[0][1])) |
869 | 870 | ||
870 | def GetNumberOfPoints(self): | 871 | def GetNumberOfPoints(self): |
invesalius/data/viewer_slice.py
@@ -320,6 +320,38 @@ class CanvasRendererCTX: | @@ -320,6 +320,38 @@ class CanvasRendererCTX: | ||
320 | tpx, tpy = px + border, py + border | 320 | tpx, tpy = px + border, py + border |
321 | gc.DrawText(text, tpx, tpy) | 321 | gc.DrawText(text, tpx, tpy) |
322 | 322 | ||
323 | + def draw_arc(self, center, p0, p1, line_colour=(255, 0, 0, 128), width=2): | ||
324 | + if self.gc is None: | ||
325 | + return None | ||
326 | + gc = self.gc | ||
327 | + pen = wx.Pen(wx.Colour(*line_colour), width, wx.SOLID) | ||
328 | + gc.SetPen(pen) | ||
329 | + | ||
330 | + c = np.array(center) | ||
331 | + v0 = np.array(p0) - c | ||
332 | + v1 = np.array(p1) - c | ||
333 | + | ||
334 | + c[1] = -c[1] | ||
335 | + v0[1] = -v0[1] | ||
336 | + v1[1] = -v1[1] | ||
337 | + | ||
338 | + s0 = np.linalg.norm(v0) | ||
339 | + s1 = np.linalg.norm(v1) | ||
340 | + | ||
341 | + a0 = np.arctan2(v0[1] , v0[0]) | ||
342 | + a1 = np.arctan2(v1[1] , v1[0]) | ||
343 | + | ||
344 | + if (a1 - a0) % (np.pi*2) < (a0 - a1) % (np.pi*2): | ||
345 | + sa = a0 | ||
346 | + ea = a1 | ||
347 | + else: | ||
348 | + sa = a1 | ||
349 | + ea = a0 | ||
350 | + | ||
351 | + path = gc.CreatePath() | ||
352 | + path.AddArc((c[0], c[1]), min(s0, s1), sa, ea) | ||
353 | + gc.StrokePath(path) | ||
354 | + | ||
323 | 355 | ||
324 | class Viewer(wx.Panel): | 356 | class Viewer(wx.Panel): |
325 | 357 |