Форум сайта python.su
У меня есть функция рисующая эллипс. Я хочу научить его смещаться на угол beta. Но он схлопывается в линию.
from graph import * import math windowSize(500, 500) # Function which draws ellipse(a,b - large and small semi diagonals x,y are starter coordinates) def draw_ellipse(a, b, x, y): # constants and calcs penColor(0, 0, 0) penSize(3) moveTo(x, y) beta = math.radians(90) alpha = 0 c = (a ** 2 - b ** 2) ** 0.5 e = c / a if not 1 > e >= 0: print("error") r = b / (1 - e ** 2 * ((1 + math.cos(math.radians(2 * alpha))) / 2)) ** 0.5 '''circle which draws ellipse''' while alpha <= 360: x1 = r * math.cos(math.radians(alpha)) y1 = r * math.sin(math.radians(alpha)) x1 = x1 * math.cos(beta) - y1 * math.sin(beta) y1 = x1 * math.sin(beta) + y1 * math.cos(beta) lineTo((x + x1), (y - y1)) moveTo(x, y) alpha = alpha + 0.1 r = b / (1 - e ** 2 * ((1 + math.cos(math.radians(2 * alpha))) / 2)) ** 0.5 draw_ellipse(50, 20, 250, 250) print(randColor)
Офлайн
Сам решил. Но методом тыка, а хотелось бы понять почему. Формулы изначально правильные. Я упрощу немного задачу, что бы кода не писать суть та же.
import math def corner(x,y): beta = math.radians(90) x = x * math.cos(beta) - y * math.sin(beta) y = x * math.sin(beta) + y * math.cos(beta) print(x1,y1,beta) corner(5,0)
import math def corner(x,y): beta = math.radians(90) x1= x * math.cos(beta) - y * math.sin(beta) y1 = x * math.sin(beta) + y * math.cos(beta) print(x1,y1,beta) corner(5,0)
Офлайн
nodochyЭто не одно и тоже
У меня остался единственный вопрос почему
x = x * math.cos(beta) - y * math.sin(beta) # в следующей строчке уже используется новый x y = x * math.sin(beta) + y * math.cos(beta)
Офлайн