Я пытаюсь установить индикаторы интервалов по кругу, подобно тому, что вы найдете на таймере или часах.Интервальные индикаторы на круговой грани
import pygame
from pygame.locals import *
import math
SCREENWIDTH = 400
SCREENHEIGHT = 400
BACKGROUND = (0, 0, 0)
FPS = 60
clock = pygame.time.Clock()
screen = pygame.display.set_mode((SCREENWIDTH, SCREENHEIGHT))
lineStart = (200, 200)
lineLen = 100
color = (255, 255, 255)
pygame.init()
def drawLines(width, delta, amt):
for i in range(amt):
deltaAmt = 0
deltaRadian = delta*2*math.pi #converts degree amt to radians
x = lineStart[0] + math.cos(deltaAmt) * lineLen
y = lineStart[1] + math.sin(deltaAmt) * lineLen
pygame.draw.line(screen, color, lineStart, (x, y), width)
deltaAmt += deltaRadian
pygame.display.flip()
drawLines(4, 0, 80)
clock.tick(FPS)
У меня возникла проблема в том, что код, как есть, только рисует одну строку. Мне нужно, чтобы он рисовал несколько строк с разной степенью разницы. Например, мне нужно нарисовать четыре линии на 90 градусов друг от друга или 5 линий на 72 градуса друг от друга. Я думал, что я предусмотрел это, увеличив deltaAmt по текущему значению deltaRadian, но снова посмотрев на код, я не думаю, что это на самом деле это делает.
Кроме того, вы увидите, что для параметра delta я в настоящее время передал 0 в качестве аргумента. В идеале это означало бы, что линия будет нарисована в положении 12 часов, но вместо этого нарисована на 3 часа. Когда я ввожу 90 в качестве аргумента, линия позиционируется в положении «6 часов» или на 180 градусов, когда она должна быть нарисована в положении «3 часа» или «90 градусов».
Любая помощь будет оценена по достоинству.
Нормально, что некоторые системы используют 3 часа как 0 градусов - простое использование 'math.sin (math.radians (angle-90))' – furas