Мне нужно нарисовать многоугольник «n» сторон, учитывая 2 точки (центр и 1 его вершины), только чтобы сосать математику. Я читал много, и все это то, что я смог понять (я не знаю, правильно ли это):Нарисуйте многоугольник в C
Хорошо, я беру расстояние между двумя точками (радиус) с теоремой Пифагора :
sqrt(pow(abs(x - xc), 2) + pow(abs(y - yc), 2));
и угол между этими 2 точками с atan2, как это:
atan2(abs(y - yc), abs(x - xc));
Где хс, ус является точка центра и х, у есть только вершина знать.
И с этими данными я сделать:
void polygon(int xc, int yc, int radius, double angle, int sides)
{
int i;
double ang = 360/sides; //Every vertex is about "ang" degrees from each other
radian = 180/M_PI;
int points_x[7]; //Here i store the calculated vertexs
int points_y[7]; //Here i store the calculated vertexs
/*Here i calculate the vertexs of the polygon*/
for(i=0; i<sides; i++)
{
points_x[i] = xc + ceil(radius * cos(angle/radian));
points_y[i] = yc + ceil(radius * sin(angle/radian));
angle = angle+ang;
}
/*Here i draw the polygon with the know vertexs just calculated*/
for(i=0; i<sides-1; i++)
line(points_x[i], points_y[i], points_x[i+1], points_y[i+1]);
line(points_y[i], points_x[i], points_x[0], points_y[0]);
}
Проблема заключается в том, что программа не работает правильно, потому что рисовать линии не как полигона.
Кто-то, кто знает достаточно математики, чтобы дать руку? им работать в этой графических примитивов с C и турбо С
Edit: я не хочу, чтобы заполнить полигон, просто сделать это.
Можете ли вы уточнить, хотите ли вы заполненный полигон (в этом случае ответы о trangles может иметь отношение) или незаполненный один (где вы просто хотите по периметру линии, как вы предлагаете, и рисование линий все, что вам нужно –