Pascal/Turbo Pascal - circulo a base de puntos

 
Vista:

circulo a base de puntos

Publicado por micropais (209 intervenciones) el 11/10/2005 00:29:25
Circulo a base de puntos usa la libreria casera UTECLADO publicada en este foro
___________________________________________________________________

uses crt,uteclado,graph;
var a:real;
gd,gm:integer;
ancho,alto:real;
centrox,centroy:integer;
cociente:integer;
tsin,tcos:integer;
n_puntos:real;

begin
gd:=0; { 0,1 }
gm:=1;
initgraph(gd,gm,'c:\tp\bgi');{}
directvideo:=false;

{*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
textcolor(3);
gotoxy(1,1);
writeln('MICROPAIS 2005 - Circulo ');
textcolor(7);
writeln('usa las teclas ARRIBA y ABAJO ¢ ESC para SALIR');

centrox:=640 div 2 ; { la resolucion de la pantalla div 2 }
centroy:=(400 div 2);

tsin:=90;
tcos:=90;

cociente:=10{1}; { multiplicador de tama¤o normal=1 para aspecto RATIO }
ancho:=(50 * cociente) / 10 {16}; { aspecto ratio }
alto :=(50 * cociente) / 10 {14}; { aspecto ratio }
{
10,13 gd=3

si cociente =1 nos podemos evitar la division si multiplicamos por 10 y
dividimos por 10 nos quedamos igual,paro como la pantalla no mide lo
mismo de ancho que de alto, al crear un circulo ,parecera una elipse,
al usar aspecto ratio podemos aproximarnos mas al crear circulo perfectos
dependiendo del tipo de pantalla que usemos tambien podra se usado para
crear elipses a nuestro gusto
}
{ancho y alto del circulo aqui podemos meter el aspecto 1:1 normal}
{si cociente =10 aqui lo normal es 10:10 16:14 etc }

{ tsin:=trunc(sin(1)*ancho)+centrox;
tcos:=trunc(cos(1)*alto)+centroy;{}
n_puntos:=trunc(6);{ numero de puntos totales que formam el circulo}

{*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
textcolor(14);
{ para probar aspecto ratio quitar la siguiente llave de apertura ----- }
{
setcolor(14);
circle(centrox,centroy,trunc(ancho));
{----------------------------------------------------------------------- }
repeat
a:=0;
while a < 2*pi do
begin
tsin:=trunc(sin(a)*ancho)+centrox;
tcos:=trunc(cos(a)*alto)+centroy;
{ aqui dibujamos los puntos con el color 15 }
putpixel (tsin,tcos,15);
a:=a+( (2*pi) / n_puntos );
end;
REPEAT UNTIL PORT[$3DA]AND 8=0;{}
{ espera para acondicionar el teclado }
repeat
repeat
delay(10);
until tecla_pulsada=0;
delay(10);
until tecla_pulsada<>0;

a:=0;
while a < 2*pi do
begin
tsin:=trunc(sin(a)*ancho)+centrox;
tcos:=trunc(cos(a)*alto)+centroy;
REPEAT UNTIL PORT[$3DA]AND 8=0;{ retrazado }
{ aqui borramos los puntos con el color 0 }
putpixel (tsin,tcos,0);
a:=a+((2*pi) / n_puntos);
end;

if tecla_pulsada=arriba then n_puntos:=n_puntos+1;
if tecla_pulsada=abajo then n_puntos:=n_puntos-1;
if n_puntos<1 then n_puntos:=1;
if n_puntos>360 then n_puntos:=360;{}

gotoxy(1,4);
writeln('Puntos ',n_puntos:3:0);
until tecla_pulsada=1;

end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder