File size: 1,162 Bytes
91daf98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import numpy as np
import math
from geometry.curve import Curve


class Arc(Curve):
    def __init__(self, point_indices, point_data, is_outer):
        assert len(point_indices) == 4, "Arc must be defined by 3 points"
        assert point_data is not None
        super(Arc, self).__init__(point_indices, point_data)
        self.type = 'arc'
        self.is_outer = is_outer
        self.start = self.point_geom[0, :]
        self.mid = self.point_geom[1, :]
        self.center = self.point_geom[2, :]
        self.end = self.point_geom[3, :]

        self.r1 = math.sqrt( (self.start[0] - self.center[0])**2 + (self.start[1] - self.center[1])**2 )
        self.r2 = math.sqrt( (self.end[0] - self.center[0])**2 + (self.end[1] - self.center[1])**2 )
        self.radius = (self.r1+self.r2)/2

        self.start_idx = point_indices[0]
        self.mid_idx = point_indices[1]
        self.center_idx = point_indices[2]
        self.end_idx = point_indices[3]

        self.bbox = self.verts_to_bbox(np.vstack([self.start, self.end, self.mid]))
        self.bottom_left = np.array([self.bbox[0], self.bbox[2]])