TwSh escribió:Esto también lo tuve que hacer yo cuando estudiaba programación. En realidad es bastante facilongo. Tienes que usar las funciones trigonométricas para calcular los valores x,y de cada vértice del polígono. Si el polígono tiene 6 lados pues divide 360 entre 6 y te da 60 grados. Por lo que el primer vertice será x= cos(0º), y = sen(0º). el siguiente sería x=cos(60º), y = sen(60º). Ahora ya puedes pintar una línea desde la x,y del primer vértice y la x,y del segundo obtenido. Sigue averiguando vértices y pintando líneas incrementando el ángulo en 60 grados hasta que llegues a 360º.
Ah, se me olvidaba: las funciones trigonómetricas solo devuelven valores comprendidos entre -1 y 1 por lo que tendrás que sumarle a cada x,y el radio de tu circunferencia.
Espero haberme explicado bien. A ver si ahora te voy a liar más.
Andy_Manu escribió:Hola, soy estudiante de informatica y tengo un problemilla con la primera practica de programacion
Tengo que programar parte de un programa para que me dibuje un poligono regular circunscrito en una circunferencia
Lo que necesito es averiguar el radio del circulo, sabiendo el tamaño de los lados y el numero de lados
y no tengo ni idea de como acerlo
http://img826.imageshack.us/img826/8345/sinttuloyf.png
alfa = (360/nlds);
beta=270 - alfa/2; //Esto es para que el lado inferior quede paralelo al eje de x
alfa = alfa*RPG; //RPG = PI/180
beta = beta*RPG;
R = (lado / (2*cos(alfa/2)));
x0=R*cos(beta);
y0=R*sin(beta);
for(int i=1; i<=nlds; i++)
{ cin.clear();cin.sync();
//vgLine(x0 , y0 , x1, y1) dibuja una linea de (x0,y0) a (x1,y1)
vgLine(R*cos(beta), R*sin(beta), R*cos(beta + alfa), R*sin(beta + alfa));
cout << "Vertice " << i << " : ("<< R*cos(beta) << " , " << R*sin(beta) << ")" << endl;
beta = beta + alfa;
}