get point on circle returns vector
This commit is contained in:
parent
9e863858d3
commit
5c5f03805c
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue