Синус и косинус:
Подумайте о треугольнике с одним углом 90 °. 1 линия - горизонтальная, другая - с правой стороны и вертикальная, третья линия идет от нижнего левого до верхнего правого.
Угол слева мы называем е (да, это е в вашей функции)
синус е определяется как вертикальная линия справа, разделенная диагональной линией; косинус е = горизонтальная линия (касающаяся угла е) / диагональ.
-
Теперь нарисуйте круг с серединой под углом e и радиусом = длина диагонали.
Если вы увеличите угол e, вы увидите, что вертикальная линия становится больше, а горизонтальная линия становится меньше (сохраняйте длину диагонали постоянной), пока не достигнете 90 °. Тогда, конечно, вы можете выйти за пределы 90 °, тогда вертикальная линия может быть слева. Далее на 180 ° вертикальная линия будет указывать вниз (отрицательная координата), ...
Так что это одно из применений sin и cos: если вы установите угол, они дадут вам значение y и значение x, показывая вам 1 точку на окружности. Это всегда число от -1 до +1. пример: sin (0) = 0 (без вертикальной составляющей), cos (0) = 1
Этот код ниже дает вам круг вокруг центра (0,0) и радиуса 100. Передайте этой функции набор значений для e, и вы получите столько же точек на круге
function rotate(e) {
var px = 100 * Math.cos(e);
var py = 100 * Math.sin(e);
}
Теперь, если вместо 100 * cos (e) вы поставите 200 * cos (e), то это больше не круг. Каждая координата x будет вдвое дальше (по сравнению с кругом). Различные rx и ry приведут к эллипсу.
ваши переменные b & h предназначены для перемещения центра эллипса куда-то внутри изображения / div / canvas / ..., а не в угол (тогда вы обрезаете большую часть эллипса).
Помогает ли это?