Sunteți pe pagina 1din 6

File: /home/luis/Documents/hipocicloide.

java Page 1 of 6

import java.awt.*;
import java.awt.event.*;
/*-----------------------------------------------------------*/
class hipocicloide extends Frame
{
public static void main(String[] args){
new hipocicloide();
}

hipocicloide ()
{
super("Hipocicloide ");
addWindowListener
(
new WindowAdapter()
{
public void windowClosing (WindowEvent e)
{
System.exit(0);
}
}
);

setSize(1366,768);
add("Center",new Cvpoint());
setVisible(true);//show();

/*----------------------------------------------------------*/
class Cvpoint extends Canvas
{
int ymax, xmax;
int wChar = 8; //ancho caracter
int hChar = 8; //alto caracter
int incMarcas = 100; //incremento de marcas en ejes x y
int heightMark = 5; // altura de marcas de ejes

void putPixel(Graphics g, int x, int y)


{
g.drawLine(x,y,x,y);
}
void coordenada(Graphics g, int x, int y)
{
putPixel(g, (xmax/2) + x, (ymax/2) - y );
}

int ix (float x)
{
return Math.round(x);
}

int iy (float y)
{
return Math.round(y);
}

void ejes(Graphics g)
{
int xc = xmax/2; //punto medio del ancho
File: /home/luis/Documents/hipocicloide.java Page 2 of 6

int yc = ymax/2; //punto medio del alto

//eje x
for (int i = 0; i < xmax; i ++)
{
putPixel(g, i, yc);
}
//eje y
for (int i = 0; i < ymax; i ++)
{
putPixel(g, xc, i);
}
//marcas eje x positivo
int mark = 0;
for (int i = xc; i < xmax; i +=100)
{
lineaV(g, heightMark, i, yc - heightMark / 2);
label(g, "" + mark, i, yc + heightMark);
mark += 100;
}
//marcas eje x negativo
mark = 100;
for (int i = xc - 100; i > 0; i -=100)
{
lineaV(g, heightMark, i, yc - heightMark / 2);
label(g, "-" + mark, i, yc + heightMark);
mark += 100;
}
//marcas eje y positivo
mark = 100;
for (int i = yc - 100; i > 0; i -=100)
{
lineaH(g, heightMark, xc - heightMark / 2, i);
label(g, "" + mark, xc + heightMark, i - hChar / 2);
mark += 100;
}
//marcas eje y negativo
mark = 100;
for (int i = yc + 100; i < ymax; i +=100)
{
lineaH(g, heightMark, xc - heightMark / 2, i);
label(g, "-" + mark, xc + heightMark, i - hChar / 2);
mark += 100;
}

}
/*---------------linea vertical------------------------------*/
void lineaV(Graphics g, int largo, int x, int y)
{
for (int i = 0; i < largo; i ++)
{
putPixel(g, x, y + i);
}
}

/*---------------linea horizontal-------------------------*/
void lineaH(Graphics g, int largo, int x, int y)
{
for (int i = 0; i < largo; i ++)
{
File: /home/luis/Documents/hipocicloide.java Page 3 of 6

putPixel(g, x + i, y);
}
}
/*--------------pinta Caracter-----------------------*/

void drawChar (Graphics g, int n, int x, int y)


{

int asc8[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E,
0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E,
0x7E, 0xFF, 0xDB, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E, 0x6C, 0xFE, 0xFE,
0xFE, 0x7C, 0x38, 0x10, 0x00,
0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x3C, 0x3C, 0x18,
0xFF, 0xE7, 0x18, 0x3C, 0x00,
0x10, 0x38, 0x7C, 0xFE, 0xEE, 0x10, 0x38, 0x00, 0x00, 0x00, 0x18,
0x3C, 0x3C, 0x18, 0x00, 0x00,
0xFF, 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF, 0x00, 0x3C, 0x66,
0x42, 0x42, 0x66, 0x3C, 0x00,
0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, 0xFF, 0x0F, 0x07, 0x0F,
0x7D, 0xCC, 0xCC, 0xCC, 0x78,
0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18, 0x08, 0x0C, 0x0A,
0x0A, 0x08, 0x78, 0xF0, 0x00,
0x18, 0x14, 0x1A, 0x16, 0x72, 0xE2, 0x0E, 0x1C, 0x10, 0x54, 0x38,
0xEE, 0x38, 0x54, 0x10, 0x00,
0x80, 0xE0, 0xF8, 0xFE, 0xF8, 0xE0, 0x80, 0x00, 0x02, 0x0E, 0x3E,
0xFE, 0x3E, 0x0E, 0x02, 0x00,
0x18, 0x3C, 0x5A, 0x18, 0x5A, 0x3C, 0x18, 0x00, 0x66, 0x66, 0x66,
0x66, 0x66, 0x00, 0x66, 0x00,
0x7F, 0xDB, 0xDB, 0xDB, 0x7B, 0x1B, 0x1B, 0x00, 0x1C, 0x22, 0x38,
0x44, 0x44, 0x38, 0x88, 0x70,
0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x00, 0x18, 0x3C, 0x5A,
0x18, 0x5A, 0x3C, 0x18, 0x7E,
0x18, 0x3C, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18,
0x18, 0x5A, 0x3C, 0x18, 0x00,
0x00, 0x18, 0x0C, 0xFE, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x30, 0x60,
0xFE, 0x60, 0x30, 0x00, 0x00,
0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFE, 0x00, 0x00, 0x00, 0x24, 0x42,
0xFF, 0x42, 0x24, 0x00, 0x00,
0x00, 0x10, 0x38, 0x7C, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0xFE,
0x7C, 0x38, 0x10, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C,
0x18, 0x18, 0x00, 0x18, 0x00,
0x6C, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0xFE,
0x6C, 0xFE, 0x6C, 0x6C, 0x00,
0x10, 0x7C, 0xD0, 0x7C, 0x16, 0xFC, 0x10, 0x00, 0x00, 0x66, 0xAC,
0xD8, 0x36, 0x6A, 0xCC, 0x00,
0x38, 0x4C, 0x38, 0x78, 0xCE, 0xCC, 0x7A, 0x00, 0x30, 0x10, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00, 0x60, 0x30, 0x18,
0x18, 0x18, 0x30, 0x60, 0x00,
0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00, 0x00, 0x30, 0x30,
0xFC, 0x30, 0x30, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x20, 0x00, 0x00, 0x00,
0xFC, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02, 0x06, 0x0C,
0x18, 0x30, 0x60, 0xC0, 0x00,
0x7C, 0xCE, 0xDE, 0xF6, 0xE6, 0xE6, 0x7C, 0x00, 0x18, 0x38, 0x78,
0x18, 0x18, 0x18, 0x7E, 0x00,
0x7C, 0xC6, 0x06, 0x1C, 0x70, 0xC6, 0xFE, 0x00, 0x7C, 0xC6, 0x06,
0x3C, 0x06, 0xC6, 0x7C, 0x00,
0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x1E, 0x00, 0xFE, 0xC0, 0xFC,
File: /home/luis/Documents/hipocicloide.java Page 4 of 6

0x06, 0x06, 0xC6, 0x7C, 0x00,


0x7C, 0xC6, 0xC0, 0xFC, 0xC6, 0xC6, 0x7C, 0x00, 0xFE, 0xC6, 0x0C,
0x18, 0x30, 0x30, 0x30, 0x00,
0x7C, 0xC6, 0xC6, 0x7C, 0xC6, 0xC6, 0x7C, 0x00, 0x7C, 0xC6, 0xC6,
0x7E, 0x06, 0xC6, 0x7C, 0x00,
0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00,
0x00, 0x00, 0x30, 0x10, 0x20,
0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x7E,
0x00, 0x00, 0x7E, 0x00, 0x00,
0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00, 0x78, 0xCC, 0x0C,
0x18, 0x30, 0x00, 0x30, 0x00,
0x7C, 0x82, 0x9E, 0xA6, 0x9E, 0x80, 0x7C, 0x00, 0x7C, 0xC6, 0xC6,
0xFE, 0xC6, 0xC6, 0xC6, 0x00,
0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00, 0x7C, 0xC6, 0xC0,
0xC0, 0xC0, 0xC6, 0x7C, 0x00,
0xFC, 0x66, 0x66, 0x66, 0x66, 0x66, 0xFC, 0x00, 0xFE, 0x62, 0x68,
0x78, 0x68, 0x62, 0xFE, 0x00,
0xFE, 0x62, 0x68, 0x78, 0x68, 0x60, 0xF0, 0x00, 0x7C, 0xC6, 0xC6,
0xC0, 0xCE, 0xC6, 0x7E, 0x00,
0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x3C, 0x18, 0x18,
0x18, 0x18, 0x18, 0x3C, 0x00,
0x1E, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, 0xE6, 0x66, 0x6C,
0x78, 0x6C, 0x66, 0xE6, 0x00,
0xF0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x82, 0xC6, 0xEE,
0xFE, 0xD6, 0xC6, 0xC6, 0x00,
0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00, 0x7C, 0xC6, 0xC6,
0xC6, 0xC6, 0xC6, 0x7C, 0x00,
0xFC, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00, 0x7C, 0xC6, 0xC6,
0xC6, 0xD6, 0xDE, 0x7C, 0x06,
0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xE6, 0x00, 0x7C, 0xC6, 0xC0,
0x7C, 0x06, 0xC6, 0x7C, 0x00,
0x7E, 0x5A, 0x5A, 0x18, 0x18, 0x18, 0x3C, 0x00, 0xC6, 0xC6, 0xC6,
0xC6, 0xC6, 0xC6, 0x7C, 0x00,
0xC6, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x10, 0x00, 0xC6, 0xC6, 0xD6,
0xFE, 0xEE, 0xC6, 0x82, 0x00,
0xC6, 0x6C, 0x38, 0x38, 0x38, 0x6C, 0xC6, 0x00, 0x66, 0x66, 0x66,
0x3C, 0x18, 0x18, 0x3C, 0x00,
0xFE, 0xC6, 0x8C, 0x18, 0x32, 0x66, 0xFE, 0x00, 0x78, 0x60, 0x60,
0x60, 0x60, 0x60, 0x78, 0x00,
0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00, 0x78, 0x18, 0x18,
0x18, 0x18, 0x18, 0x78, 0x00,
0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF,
0x30, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
0x0C, 0x7C, 0xCC, 0x76, 0x00,
0xE0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00, 0x00, 0x00, 0x7C,
0xC6, 0xC0, 0xC6, 0x7C, 0x00,
0x1C, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x7C,
0xC6, 0xFE, 0xC0, 0x7C, 0x00,
0x1C, 0x36, 0x30, 0x78, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x76,
0xCC, 0xCC, 0x7C, 0x0C, 0x78,
0xE0, 0x60, 0x6C, 0x76, 0x66, 0x66, 0xE6, 0x00, 0x18, 0x00, 0x38,
0x18, 0x18, 0x18, 0x3C, 0x00,
0x00, 0x0C, 0x00, 0x1C, 0x0C, 0x0C, 0xCC, 0x78, 0xE0, 0x60, 0x66,
0x6C, 0x78, 0x6C, 0xE6, 0x00,
0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0xCC,
0xFE, 0xD6, 0xD6, 0xD6, 0x00,
0x00, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x7C,
0xC6, 0xC6, 0xC6, 0x7C, 0x00,
0x00, 0x00, 0xDC, 0x66, 0x66, 0x7C, 0x60, 0xF0, 0x00, 0x00, 0x7C,
0xCC, 0xCC, 0x7C, 0x0C, 0x1E,
0x00, 0x00, 0xDE, 0x76, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x7C,
0xC0, 0x7C, 0x06, 0x7C, 0x00,
File: /home/luis/Documents/hipocicloide.java Page 5 of 6

0x10, 0x30, 0xFC, 0x30, 0x30, 0x34, 0x18, 0x00, 0x00, 0x00, 0xCC,
0xCC, 0xCC, 0xCC, 0x76, 0x00,
0x00, 0x00, 0xC6, 0xC6, 0x6C, 0x38, 0x10, 0x00, 0x00, 0x00, 0xC6,
0xD6, 0xD6, 0xFE, 0x6C, 0x00,
0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0xCC,
0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
0x00, 0x00, 0xFC, 0x98, 0x30, 0x64, 0xFC, 0x00, 0x0E, 0x18, 0x18,
0x30, 0x18, 0x18, 0x0E, 0x00,
0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0xE0, 0x30, 0x30,
0x18, 0x30, 0x30, 0xE0, 0x00,
0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38,
0x6C, 0xC6, 0xC6, 0xFE, 0x00

};

int hfontsize = 8, vfontsize, i, j, ptr;


int par, tpar, bit;

vfontsize = 8; //size

ptr = n * vfontsize;

for (i = 0; i < vfontsize; i ++)


{
par = asc8[ptr];

for (j = 0; j < hfontsize; j ++) //numero de pares a


decodificar
{
tpar = par;
tpar = (byte)tpar << j;
bit = (byte)tpar >> 7;

if (bit == -1)
putPixel(g,x+j,y+i);
}

ptr ++;

}//---fin drawChar

/*-------------pinta Cadena Horizontal----------------*/


void label(Graphics g, String cadena, int x, int y)
{
for (int i=0; i< cadena.length(); i++)
{
drawChar(g,(int) cadena.codePointAt(i), x + i * wChar, y);
}
}//fin drawStringH

/*---------------PAINT--------------------------------------------------------
*/
public void paint (Graphics g)
{
Dimension d = getSize ();
float x, y;
float deg;
double theta, sintheta, costheta, costheta2, sintheta2;
int a = 250;
int b = 10;
File: /home/luis/Documents/hipocicloide.java Page 6 of 6

xmax = d.width - 1;
ymax = d.height - 1;

ejes(g);

//paramtrica Hipocicloide
g.setColor (Color.blue);

for (deg = 0; deg < 360; deg +=0.01)


{
theta = 0.0174533F * deg; //convierte radianes a grados

sintheta = Math.sin(theta);
sintheta2 = Math.sin( ( ( a - b ) / b ) * theta );
costheta = Math.cos(theta);
costheta2 = Math.cos( ( ( a - b ) / b ) * theta );

x = Math.round ( ( a - b ) * costheta + ( b * costheta2 ) );


y = Math.round ( ( a - b ) * sintheta - ( b * sintheta2 ) );

coordenada(g, ix(x), iy(y));

} // end paint
} // end Cvpoint

S-ar putea să vă placă și