数学を吸うだけで、2つのポイント(中心と頂点の1つ)が与えられた「n」辺のポリゴンを描画する必要があります。私はたくさん読んでいます、そしてこれは私がそれを理解することができたものです(私はそれが正しいかどうかわかりません):
わかりました。ピタゴラスの定理を使用して、2点(半径)間の距離を取ります。
sqrt(pow(abs(x - xc), 2) + pow(abs(y - yc), 2));
そして、この2つのポイント間の角度は次のようにatan2を使用します。
atan2(abs(y - yc), abs(x - xc));
ここで、xc、ycは中心点であり、x、yは既知の唯一の頂点です。
そしてそのデータで私はします:
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およびturboCを使用して作業しています。
編集:ポリゴンを塗りつぶしたくないので、描画するだけです。