1928 self.Points[-1] = self.EndPoint[0] |
1928 self.Points[-1] = self.EndPoint[0] |
1929 # Calculate the segments directions |
1929 # Calculate the segments directions |
1930 self.Segments = [] |
1930 self.Segments = [] |
1931 i = 0 |
1931 i = 0 |
1932 while i < len(self.Points) - 1: |
1932 while i < len(self.Points) - 1: |
1933 segment = vector(self.Points[i], self.Points[i + 1]) |
1933 if 0 < i < len(self.Points) - 2 and \ |
1934 if is_null_vector(segment) and i > 0: |
1934 self.Points[i] == self.Points[i + 1] and \ |
1935 segment = (self.Segments[-1][1], self.Segments[-1][0]) |
1935 self.Segments[-1] == vector(self.Points[i + 1], self.Points[i + 2]): |
1936 if i < len(self.Points) - 2: |
1936 for j in xrange(2): |
1937 next = vector(self.Points[i + 1], self.Points[i + 2]) |
1937 self.Points.pop(i) |
1938 if next == segment or is_null_vector(add_vectors(segment, next)): |
1938 else: |
1939 self.Points.insert(i + 1, wx.Point(self.Points[i + 1].x, self.Points[i + 1].y)) |
1939 segment = vector(self.Points[i], self.Points[i + 1]) |
1940 self.Segments.append(segment) |
1940 if is_null_vector(segment) and i > 0: |
1941 i += 1 |
1941 segment = (self.Segments[-1][1], self.Segments[-1][0]) |
|
1942 if i < len(self.Points) - 2: |
|
1943 next = vector(self.Points[i + 1], self.Points[i + 2]) |
|
1944 if next == segment or is_null_vector(add_vectors(segment, next)): |
|
1945 self.Points.insert(i + 1, wx.Point(self.Points[i + 1].x, self.Points[i + 1].y)) |
|
1946 self.Segments.append(segment) |
|
1947 i += 1 |
1942 self.RefreshBoundingBox() |
1948 self.RefreshBoundingBox() |
1943 self.RefreshRealPoints() |
1949 self.RefreshRealPoints() |
1944 |
1950 |
1945 # Returns the position of the point indicated |
1951 # Returns the position of the point indicated |
1946 def GetPoint(self, index): |
1952 def GetPoint(self, index): |