Решаю задачу №202 на Project Euler. Ищу способ реализации симуляции отражения луча. Нашел как зная координаты получить косинус угла. Если я захочу построить луч внутри треугольника, чтобы он отражался от его стен, как мне строить этот луч? Как задать направление движения?
Ниже вывел углы треугольника: {'a': 0.8944271909999159, 'b': 0.0, 'c': 0.4472135954999579}
from math import sqrt, fabs
def get_angle(a, b, c):
ab = fabs(sqrt((a[0] - b[0]) ** 2 + (a[1] - b[1]) ** 2))
ac = fabs(sqrt((a[0] - c[0]) ** 2 + (a[1] - c[1]) ** 2))
bc = fabs(sqrt((b[0] - c[0]) ** 2 + (b[1] - c[1]) ** 2))
cos_a = (ab ** 2 + ac ** 2 - bc ** 2) / (2 * ab * ac)
cos_b = (ab ** 2 + bc ** 2 - ac ** 2) / (2 * ab * bc)
cos_c = (ac ** 2 + bc ** 2 - ab ** 2) / (2 * ac * bc)
return {'a' : cos_a, 'b' : cos_b, 'c' : cos_c}
a = [0, 0]
b = [0, 25]
c = [12.5, 25]
print(get_angle(a, b, c))
Знаю что это можно перевести в арккосинус, а затем умножить на (180 / 3.14), тогда я получу угол в человеческих градусах. Но что с этим делать - я не знаю.