Blog hecho para la Materia de Graficacion de la carrera de ing. en sistemas computacionales del Instituto Tecnologico de la Laguna. Las publicaciones de este blog seran conforme vallamos avanzando en el curso, asi que se publicara codigo e imagenes para que sean de provecho para todos que quieran aprender.
domingo, 9 de octubre de 2011
Trazo de Circunferencias
Los parametros basicos que definen una circunferencia son las coordenadas del centro (xc, yc) y el
radio. Podemos expresar la ecuacion de la circunferencia de varias formas.
Abajo el codigo para hacer un circulo mediante coordenadas polares, por segmentos e incrementos
de angulos.
void TForm1::Circ_Coord_Polares(int xc, int yc, int r)
{
float dt, ct, st, x, y, xtemp;
dt = 1.0 / r;
ct = cos(dt);
st = sin(dt);
x = 0;
y = r;
while(y >= x)
{
Canvas->Pixels[floor(xc + x)+ 0.5][floor(yc + y)+ 0.5] = clRed;
Canvas->Pixels[floor(xc - x)+ 0.5][floor(yc + y)+ 0.5] = clRed;
Canvas->Pixels[floor(xc + x)+ 0.5][floor(yc - y)+ 0.5] = clRed;
Canvas->Pixels[floor(xc - x)+ 0.5][floor(yc - y)+ 0.5] = clRed;
xtemp = x;
x = x * ct - y * st;
y = y * ct + xtemp * st;
}
}
void TForm1::Circulo_x_Segmentos(int xc, int yc, int radio)
{
double dos_pi = M_PI * 2;
double dth, ct, st, x, y, xtemp;
if(radio != 0)
{
dth = dos_pi / (16 * radio);
ct = cos(dth);
st = sin(dth);
x = 0;
y = radio;
for(int i = 0;i <=(16 * radio); i++)
{
xtemp = x;
x = x * ct + y *st;
y = y * ct - xtemp * st;
Canvas->Pixels[floor(x + xc + 0.5)][floor(y + yc + 0.5)] = clBlue;
}
}
}
void TForm1::Circulo_incremento_angulo(int xc, int yc, int radio)
{
int x, y;
for(int grados = 0; grados < 360; grados++)
{
x = xc + radio * cos (grados/180.0 * M_PI);
y = yc + radio * sin (grados/180.0 * M_PI);
Canvas->Pixels[x][y] = clBlack;
Sleep(30);
}
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario