Приветствую!
Решил написать простую программку, которая бы рисовала многоугольник в зависимости от начальной точки, радиуса и количества углов, собственно сам метод, который формирует Point :
private void PolygonPoints()
{
double angle = -Math.PI * 0.5;
Points = new Point[Corners];
for (int i=0; i< Corners; i++)
{
Points[i] = new Point
( Xstrt + (int)Math.Round(Math.Cos(angle + Math.PI * 2.0 * i/ Corners) * Radius),
Ystrt + (int)Math.Round(Math.Cos(angle + Math.PI * 2.0 * i/ Corners) * Radius));
}
}
Однако получается, что все точки лежат на одной прямой. Подскажите, где ошибся ?
Ну, у тебя же даже в коде видно, что формулы для вычисления X и Y абсолютно идентичны и имеют линейную зависимость от i
Xstrt + (int)Math.Round(Math.Cos(angle + Math.PI * 2.0 * i/ Corners) * Radius)
Ystrt + (int)Math.Round(Math.Cos(angle + Math.PI * 2.0 * i/ Corners) * Radius)
Вот ты и получаешь прямую линию. Может, ты хотел использовать синус для одной из координат? А для того чтобы перевести целочисленный индекс в табличный, нужно хотя бы знать ширину этой таблицы.
int index = y * width + x;
Тогда:
int y = index / width;
int x = index % width;
В твоём случае Corners - это не ширина, а суммарное количество точек, поэтому ты опять же получишь прямую линию.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники