get point on circle returns vector

This commit is contained in:
Frank DeMarco 2019-08-27 00:00:20 -04:00
parent 9e863858d3
commit 5c5f03805c
2 changed files with 7 additions and 3 deletions

View File

@ -1,7 +1,5 @@
from math import pi, degrees
from .extension import get_delta, get_distance, get_angle
class Vector(list):
def __init__(self, x=0, y=0):
@ -111,6 +109,7 @@ class EVector(Vector):
def set_step(self, dx=0, dy=0, magnitude=None, angle=0):
"""specify angle in radians, counter-clockwise, 0 is up"""
if magnitude is not None:
from .extension import get_delta
self.magnitude = magnitude
self.angle = angle
self.dx, self.dy = get_delta(angle, magnitude, False)
@ -121,6 +120,7 @@ class EVector(Vector):
self.magnitude = 0
self.angle = 0
else:
from .extension import get_angle, get_distance
end = self.x + dx, self.y + dy
self.magnitude = get_distance(self, end)
self.angle = -get_angle(self, end) - pi
@ -135,6 +135,7 @@ class EVector(Vector):
def __setattr__(self, name, value):
list.__setattr__(self, name, value)
if name == "magnitude" and self.angle is not None:
from .extension import get_delta
self.dx, self.dy = get_delta(self.angle, value, False)
def move(self):

View File

@ -5,6 +5,8 @@ from pygame import Surface, PixelArray, Color, Rect
from pygame.mixer import get_num_channels, Channel
from pygame.locals import *
from .Vector import Vector
def get_step(start, end, speed):
x0, y0 = start
x1, y1 = end
@ -73,7 +75,8 @@ def get_points_on_circle(center, radius, count, offset=0):
def get_point_on_circle(center, radius, angle, translate_angle=True):
if translate_angle:
angle = radians(angle)
return center[0] + sin(angle) * radius, center[1] - cos(angle) * radius
return Vector(center[0] + sin(angle) * radius,
center[1] - cos(angle) * radius)
def get_range_steps(start, end, count):
for ii in range(count):