Причины, почему селекторы на основе id не работают
Решения
$(document).ready();
.bind()
для jQuery. В старых версиях jQuery для этого было .live()
. for (i = 0; i < n; i++) {
printf("%f %f\n",r * Math.cos(2 * Math.PI * i / n), r * Math.sin(2 * Math.PI * i / n));
}
где r
- радиус окружающего круга. Извините за неправильный язык Нет Habla C #.
Обычно угол между любыми двумя вершинами равен 2 pi / n , и все вершины находятся на расстоянии r от начала координат.
РЕДАКТИРОВАТЬ: Если вы хотите, чтобы центр был где-то еще, а не в начале координат, скажем, в (x, y)
for (i = 0; i < n; i++) {
printf("%f %f\n",x + r * Math.cos(2 * Math.PI * i / n), y + r * Math.sin(2 * Math.PI * i / n));
}
Скажем, расстояние вершин до начала координат равно 1. И скажем, (1, 0) всегда является координатой многоугольника.
Учитывая количество вершин (скажем, n), угол поворота, необходимый для позиционирования (1, 0) к следующей координате, будет (360 / n).
Требуемое здесь вычисление - вращение координат. Вот что это такое; Матрица вращения .
Скажите, что тета = 360 / n;
[cos(theta) -sin(theta)]
[sin(theta) cos(theta)]
будет вашей матрицей вращения.
Если вы знаете линейную алгебру, вы уже знаете, что я имею в виду. Если не просто взглянуть на Умножение матриц
Извините, у меня сейчас нет полного решения под рукой, но Вам следует попробовать поискать 2D-рендеринг кругов. Все классические реализации круга (x, y, r) используют многоугольник, как вы описали для рисования (но с более чем 50 сторонами).
Количество точек равно количеству сторон.
Требуемый угол равен angle = 2 * pi / numPoints
.
Затем начните вертикально над исходной точкой с размером многоугольника, задаваемым radius
:
for (int i = 0; i < numPoints; i++)
{
x = centreX + radius * sin(i * angle);
y = centreY + radius * cos(i * angle);
}
Если ваш центр является исходной точкой, просто игнорируйте centreX
и centreY
как они будут 0,0.
Если поменять местами cos
и sin
, первая точка будет указывать горизонтально вправо от начала координат.