get points on line; get line segments; color key hue shift

This commit is contained in:
Frank DeMarco 2019-07-25 06:04:47 -04:00
parent 2ff27c9600
commit 45c3e84dc4
1 changed files with 21 additions and 2 deletions

View File

@ -14,6 +14,24 @@ def get_step(start, end, speed):
def get_step_relative(start, end, step):
return get_step(start, end, get_distance(start, end) * step)
def get_segments(start, end, count):
rel_step = get_step_relative(start, end, 1 / float(count))
segs = [[start]]
for ii in range(count):
seg_end = segs[-1][0][0] + rel_step[0], segs[-1][0][1] + rel_step[1]
segs[-1].append(seg_end)
if ii < count - 1:
segs.append([seg_end])
return segs
def get_points_on_line(start, end, count):
rel_step = get_step_relative(start, end, 1 / float(count - 1))
points = [start]
for ii in range(count - 2):
points.append((points[-1][0] + rel_step[0], points[-1][1] + rel_step[1]))
points.append(end)
return points
def get_angle(start, end, transpose=False):
angle = atan2(end[1] - start[1], end[0] - start[0])
if transpose:
@ -170,8 +188,9 @@ def get_hue_shifted_surface(base, offset):
color = Color(0, 0, 0)
for x in range(surface.get_width()):
for y in range(surface.get_height()):
h, s, l, a = Color(*surface.unmap_rgb(pixels[x][y])).hsla
if a:
rgb = surface.unmap_rgb(pixels[x][y])
h, s, l, a = Color(*rgb).hsla
if a and surface.get_colorkey() != rgb:
color.hsla = (int(h) + offset) % 360, int(s), int(l), int(a)
pixels[x][y] = color
del pixels