Приветствую!
Решил написать простую программку, которая бы рисовала многоугольник в зависимости от начальной точки, радиуса и количества углов, собственно сам метод, который формирует 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 - это не ширина, а суммарное количество точек, поэтому ты опять же получишь прямую линию.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте господа форумчане!
С# как преобразовывать подобные строковые значения string time1 = "2 ч 46 мин" и string time2 = "54 мин" в TimeSpan ?
Ребята мы должны использовать IComparer с типом точным? (не обобщенным) Или можем использовать и обобщенный?