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 Espirales
Codigo para trazar espirales.
void TForm1::Espiral()
{
int xc = ClientWidth / 2, yc = ClientHeight / 2, radio = 5; // radio valor a cambiar
double dos_pi = M_PI * 2.0;
int cont = 0;
double dth, cth, sth, x, y, x_temp, xt, yt;
dth = dos_pi / (16 * radio); // cambiar 16 a 2 y 4
cth = cos(dth);
sth = sin(dth);
x = 0.0; y = radio;
xt = xc + x; yt = yc + y;
do
{
x_temp = x;
x = x * cth - y * sth;
y = y * cth + x_temp * sth;
if(x > 0)
x += 0.5;
else
x -= 0.5;
if(y > 0)
y += 0.5;
else
y -= 0.5;
Canvas->Pixels[floor(xt + 0.5)][floor(yt + 0.5)] = clRed;
linea_DDA(floor(xt + 0.5), floor(yt + 0.5), floor(xc + x + 0.5),
floor(yc + y + 0.5));
xt = xc + x;
yt = yc + y;
cont++;
Sleep(20);
}while(cont <= 350);
}
void TForm1::Espiral2()
{
int xc = ClientWidth / 2, yc = ClientHeight / 2;
float radio = 1.0; // valores a cambiar
double th, x, y, xt, yt;
th = 0.0; // valores a cambiar
x = radio * cos(th);
y = radio * sin(th);
xt = xc + x;
yt = yc + y;
while(radio < 250)
{
th += 0.1;
radio += 0.9;
x = radio * cos(th);
y = radio * sin(th);
g->linea_DDA(floor(xt + 0.5), floor(yt + 0.5), floor(xc + x + 0.5),
floor(yc + y + 0.5));
xt = xc + x;
yt = yc + y;
Sleep(5);
}
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario