def bezier3x_lines(self, data, canvas, i): # points = [[beginning], [beginning_midifier], [end], [end_midifier]] # points = [[200, 400], [300, 250], [450, 500], [500, 475]] canvas_w = self.layout.game_w canvas_h = self._step * data[3] x_center = self.layout.game_w // 2 y_center = self._step * data[3] // 2 bezier = [[[0, 0] for j in range(4)] for j in range(3)] # line 1 start bezier[0][0] = Vector2(self.start_positions[i]) bezier[0][1] = Vector2( random.randrange(self._step, canvas_w - self._step), random.randrange(self._step * 2, canvas_h - self._step)) # mod1 #first point modifier # line 1 end bezier[0][2] = Vector2( random.randrange(self._step, canvas_w - self._step), random.randrange(self._step, canvas_h - self._step)) # first line end bezier[0][3] = Vector2( ex.rand_safe_curve(bezier[0][2], canvas_w, canvas_h)) # line 2 start bezier[1][0] = bezier[0][2] bezier[1][1] = bezier[0][2] + Vector2(-(Vector2.from_points( bezier[0][2], bezier[0][3]))) # 3rd point modifier # line 2 end if bezier[0][2][ 0] > x_center: # if first point is on the right the second will be on the left x_range = [self._step, x_center] else: x_range = [x_center, canvas_w - self._step] if bezier[0][2][ 1] > y_center: # if first point is on the bottom the second will be on the over the center y_range = [self._step, y_center] else: y_range = [y_center, canvas_h - self._step] bezier[1][2] = Vector2(random.randrange(*x_range), random.randrange(*y_range)) # second line end bezier[1][3] = Vector2( ex.rand_safe_curve(bezier[1][2], canvas_w, canvas_h)) # line 3 start bezier[2][0] = bezier[1][2] bezier[2][1] = bezier[1][2] + Vector2(-(Vector2.from_points( bezier[1][2], bezier[1][3]))) # 5th point modifier # line 3 end bezier[2][2] = Vector2(self.end_positions[i]) # last point bezier[2][3] = Vector2( random.randrange(self._step, canvas_w - self._step), random.randrange(self._step, self._step * (data[3] - 1))) # 6th point modifier bezier_points = [] for j in range(3): bezier_points.extend(ex.DrawBezier(bezier[j])) # pygame.draw.aalines(canvas, (0, 0, 0), False, bezier_points) self.ready_lines.append(bezier_points)
def bezier2x_lines(self, data, canvas, i): # points = [[beginning], [beginning_midifier], [end], [end_midifier]] # points = [[200, 400], [300, 250], [450, 500], [500, 475]] canvas_w = self.layout.game_w canvas_h = self._step * data[3] bezier = [[[0, 0] for j in range(4)] for j in range(2)] # line 1 start bezier[0][0] = Vector2(self.start_positions[i]) bezier[0][1] = Vector2(random.randrange(self._step, canvas_w - self._step), random.randrange(self._step * 2, canvas_h - self._step)) # mod1 #first point modifier # line 1 end bezier[0][2] = Vector2(random.randrange(self._step, canvas_w - self._step), random.randrange(self._step, canvas_h - self._step)) # first line end bezier[0][3] = Vector2(ex.rand_safe_curve(bezier[0][2], canvas_w, canvas_h)) # line 3 start bezier[1][0] = bezier[0][2] bezier[1][1] = bezier[0][2] + Vector2(-(Vector2.from_points(bezier[0][2], bezier[0][3]))) # 5th point modifier # line 3 end bezier[1][2] = Vector2(self.end_positions[i]) # last point bezier[1][3] = Vector2(random.randrange(self._step, canvas_w - self._step), random.randrange(self._step, self._step * (data[3] - 1))) # 6th point modifier bezier_points = [] for j2 in range(2): bezier_points.extend(ex.DrawBezier(bezier[j2])) self.ready_lines.append(bezier_points)
def bezier3x_simplified(self, data, canvas, i): # points = [[beginning], [beginning_midifier], [end], [end_midifier]] # points = [[200, 400], [300, 250], [450, 500], [500, 475]] canvas_w = self.layout.game_w canvas_h = self._step * data[3] x_center = self.layout.game_w // 2 y_center = self._step * data[3] // 2 first = self.start_positions last = self.end_positions bezier = [[[0, 0] for j in range(4)] for j in range(3)] # points = ex.simplified_points(self.start_positions[i],self.end_positions[i],canvas_w,canvas_h,x_center,y_center,self._step) bezier[0][0] = Vector2(first[i]) bezier[0][1] = Vector2(random.randrange(first[i][0] - self._step * 2, first[i][0] + self._step * 2), random.randrange(self._step * 3, canvas_h)) # mod1 #first point modifier # p1 if first[i][0] < x_center: x_range = (first[i][0] + self._step, canvas_w - self._step) else: x_range = (self._step, first[i][0] - self._step) y_range = (self._step, y_center - self._step // 2) # line 1 end bezier[0][2] = Vector2(random.randrange(*x_range), random.randrange( *y_range)) # Vector2(random.randrange(self._step,canvas_w-self._step),random.randrange(self._step,canvas_h-self._step)) #first line end bezier[0][3] = Vector2(bezier[0][2][0], bezier[0][2][1] - self._step) # line 2 start bezier[1][0] = bezier[0][2] bezier[1][1] = Vector2(bezier[0][2][0], bezier[0][2][ 1] + self._step) # bezier[0][2] + Vector2(-(Vector2.from_points(bezier[0][2], bezier[0][3]))) #3rd point modifier # p2 if last[i][0] < x_center: x_range = (last[i][0] + self._step, canvas_w - self._step) p4_x_mod = last[i][0] - self._step else: x_range = (self._step, last[i][0] - self._step) p4_x_mod = last[i][0] + self._step y_range = (canvas_h - y_center, round(canvas_h - self._step * 0.5)) bezier[1][2] = Vector2(random.randrange(*x_range), random.randrange(*y_range)) # second line end bezier[1][3] = Vector2(bezier[1][2][0] + self._step, bezier[1][2][1] - self._step) # line 3 start bezier[2][0] = bezier[1][2] bezier[2][1] = Vector2(bezier[1][2][0] - self._step, bezier[1][2][ 1] + self._step) # bezier[1][2] + Vector2(-(Vector2.from_points(bezier[1][2], bezier[1][3]))) #5th point modifier # line 3 end bezier[2][2] = Vector2(self.end_positions[i]) # last point bezier[2][3] = Vector2(p4_x_mod, random.randrange(2 * self._step, canvas_h - self._step)) # Vector2(random.randrange(self.end_positions[i][0]-self._step//2,self.end_positions[i][0]+self._step//2),random.randrange(self._step*(data[3]-3),self._step*(data[3]-1))) #6th point modifier bezier_points = [] # labels = ["p1s","mod","p1e","mod","p2s","mod","p2e","mod","p3s","mod","p3e","mod"] for j in range(3): bezier_points.extend(ex.DrawBezier(bezier[j])) self.ready_lines.append(bezier_points)
def bezier_lines(self, data, canvas, i): # points = [[beginning], [beginning_midifier], [end_midifier], [end]] # points = [[200, 400], [300, 250], [450, 500], [500, 475]] modifiers = [[0, 0], [0, 0]] modifiers[0] = [random.randrange(0, self.layout.game_w), random.randrange(self._step * 2, self._step * data[3])] modifiers[1] = [random.randrange(0, self.layout.game_w), random.randrange(0, self._step * (data[3] - 2))] points = [Vector2(self.start_positions[i]), Vector2(modifiers[0]), Vector2(self.end_positions[i]), Vector2(modifiers[1])] bezier_points = ex.DrawBezier(points) self.ready_lines.append(bezier_points)