Está en la página 1de 34

LABORATORIO NMERO 1

PRIMITIVA DE LA LNEA Y CLCULO DEL BIORRITMO

PRESENTADO POR:
RAFAEL ALBERTO CUBILLOS RODRGUEZ
161211115
WILLIAN FERNEY CUARTAS MESA
161211154

PRESENTADO A:
ING. ESA PALOM

UNIVERSIDAD DE CUNDINAMARCA
COMPUTACIN GRAFICA
V SEMESTRE
FUSAGASUG-CUNDINAMARCA
2013

INTRODUCCIN

El siguiente laboratorio pretende el clculo del biorritmo fsico, magntico,


intelectual y espiritual para diferentes personas en cualquier fecha requerida, se
dar de que el usuario defina cual biorritmo desea ver o en lo contrario que
observe todos los biorritmos para la fecha solicitada.

Tambin se calculara los das vividos, el da de la semana en que naci y los aos
cumplidos del individuo, si el usuario no tiene cierta informacin acerca de qu y
para qu es un Biorritmo se ofrece un hipervnculo para una mayor interaccin o
entendimiento con el aplicativo que se brinda.

Lo anterior se realiza por medio de las herramientas de diseo que por defecto
trae Netbeans esto nos facilita mucho ms la creacin del diseo de la interfaz
grfica esto se traduce en una interfaz ms amiga, entendible y agradable con el
usuario, para dibujar las curvas calculadas de cada biorritmo se utiliza la funcin
de seno por ende los biorritmos obedecen a una funcin senoidal.

INTRODUCTION

The following lab seeks physical biorhythm calculation, magnetic, intellectual and
spiritual to different people or on any date required, will define the user which
biorhythm want to see or otherwise observe all the required date biorhythms.

Also calculated the days spent, the day of the week you were born and reached
the age of the individual, if the user does not have some information about what is
and what is a Biorhythm provides a hyperlink to greater interaction and
understanding with the application that is provided.

This is done by means of the design tools that brings Netbeans default this gives
us much more the creation of graphical interface design that results in a more
friendly interface, understandable and pleasant to the user, to draw the curves
calculated each biorhythm using the sine function biorhythms therefore obey a sine
function.

OBJETIVO PRINCIPAL

Crear la Primitiva de la funcin Lnea para manipular pixel a pixel y pintar


las curvas pertenecientes a los biorritmos que el usuario desee, adems las
lneas que en si son puntos consecutivos diferenciarlas por un color y forma
que las represente.

OBJETIVOS ESPECIFICOS

Calcular los biorritmos de la persona para cualquier fecha requerida.


Mostrar los Biorritmos tanto individual como todos a la vez con esto buscar
la manera de generar el desfase de cada curva del biorritmo para mostrar el
da a que se calcula dicho biorritmo.
Aprender a utilizar la herramienta de diseo llamada DateChooserCombo
que permite de manera muy didctica seleccionar y capturar la fecha sin
necesidad de validar dicha fecha.
Calcular los das vividos del usuario y as mismo el da de la semana en que
naci, junto con los aos cumplidos.

MARCO CONCEPTUAL
EL BIORRITMO: es el conjunto de actividades y de procesos bioqumicos,
fisiolgicos y del comportamiento que se llevan a cabo en todos los organismos
vivos, con una constante e inalterable periodicidad.
A inicios del siglo pasado, el doctor Wilhem Fliess not repeticiones idnticas en
las historias clnicas de sus pacientes. El doctor observ fases positivas y
negativas en los aspectos fsico, magntico, intelectual y espiritual de las
personas. De estas observaciones derivan los principios del biorritmo: la curva
fsico con su ciclo de 23 das, la curva magntica de 28 das, la curva intelectual
de 33 das y la curva espiritual de 40 das.
FUNCIN SENO: es a aquella que asocia a cada ngulo el valor del seno
correspondiente. Su expresin analtica es la siguiente: y = sen x.

JDATECHOOSER: es un selector de fechas para Java completamente


personalizable, configurable y gratuito.

ECUACIN DE LA LNEA RECTA: La ecuacin general de una lnea recta tiene la


forma: y = mx + b

Pendiente

Punto de corte

Tabla de Variables o constantes con sus caractersticas


Clase Laboratorio (Principal).
Nombre
F

Descripcin
Tipo
Objeto para llamar,
Frame
dar tamao y hacer
visible el Frame.
Clase Frame Adherir el Jpanel Form

Tamao

Nombre

Descripcin
Tipo
Tamao
Objeto para llamar y
Graficar
m
adherir el JPanel al
frame.
Clase Diasvivi Clase donde se calcula los das vividos

Nombre

d1

d2

dias

enmill

Descripcin
Variable que guarda y
retorna el valor a la
clase Graficar para
seguir con otros
clculos e imprimir
dicho dato
Variable que recibe el
valor representativo
de la fecha de
nacimiento capturada
y enviada de la clase
Graficar
Variable que recibe el
valor representativo
de la fecha a calcular
el Biorritmo
capturada y enviada
de la clase Graficar
Variable que guarda
los das vividos de la
persona obtenidos
dividiendo las horas
entre 24
Variable que guarda
los milisegundos

Tipo

Tamao

Long

64-bits

Long

64-bits

Long

64-bits

Long

64-bits

Long

64-bits

horas

segundos

Nombre
aux1

aux2

gru
i

pendix
peny

obtenidos a partir de
restar d2-d1
Variable que guarda
Long
las horas calculadas,
obtenidas en dividir
los segundos en
3600.
Variable que guarda
Long
los segundos
calculados en dividir
los milisegundos en
1000.
Clase Linea Primitiva de la Lnea
Descripcin
Recibe el valor de y1
cuando x1==x2 y
y1>y2
Recibe el valor de y2
cuando x1==x2 y
y1>y2
Recibe el color
enviado desde la
clase seno
Objeto que permite
utilizar las funciones
para pintar
Recibe el grosor
Variables utilizadas
en los tres for que
permite hacer las
veces de contador
Almacena la
pendiente hallada
respectivamente
Determina el punto
medio de x1 y x2
Determina el punto
medio de y1 y y2

64-bits

64-bits

Tipo
Int

Tamao
32-bits

Int

32-bits

Color

Graphics

Int

32-bits

Float

32-bits

Float

32-bits

Float

32-bits

Float

32-bits

x1

Punto inicial en x

Int

32-bits

x2

Puno final en x

Int

32-bits

Float

32-bits

y1

Punto calculado para


pintar la lnea
Punto inicial en y

Int

32-bits

y2

Puno final en y

Int

32-bits

Clase imgfondo Adhiere una imagen de fondo al panel


Nombre
tamanio

imagenFondo

Nombre
ACum
Acumplidos
audio
ao
aux1

aux2

Descripcin
Tipo
Captura la dimensin
Dimension
predefinida para
someter la imagen a
ese tamao y ponerla
en el panel
Captura la Ubicacin
ImageIcon
de la imagen de
fondo
Clase Graficar Interfaz Grfica
Descripcin
Mensaje Indica los
aos cumplidos
Muestra los aos
cumplidos
Captura la ubicacin
del audio
Es el ao donde se
calcula el Biorritmo
Variable que
almacena los
milisegundos de la
fecha de nacimiento
Variable que
almacena los
milisegundos de la
fecha a calcular el

Tipo
JLabel

Tamao

Tamao

JTextField
InputStream
Int

32-bits

Long

64-bits

Long

64-bits

calcu
CALCULAR

comLink

d1

d2

di

dia
Diaqnacio
DIAS

Diass
DN

Biorritmo
Guarda el color
definido para el
Biorritmo Intelectual
Obtiene la fecha a
calcular del Biorritmo
Boton que permite
iniciar los procesos
seleccionados del
programa
Muestra un mensaje
para que se informen
acerca de Biorritmo
Variable que guarda
la conversin de la
fecha de tipo
GregorianCalendar a
Calendar
Variable que guarda
la fecha de
nacimiento
Variable que guarda
la fecha a calcular el
Biorritmo
Captura y convierte
los das vividos a
String
Guarda el dia a
calcular del Biorritmor
Recibe el da de la
semana en que nacio
Objeto que permite el
manejo de la clase
Diasvivi es decir el
clculo de los das
vividos
Muestra los das
vividos
Mensaje Indica el
da de nacimiento

Color

DateChooserCombo
JButton

JLabel

Calendar

GregorianCalendar

GregorianCalendar

String

16-bits

Int

32-bits

String

16-bits

Diasvivi

JTextField
Jlabel

Dnacimiento
DV
DVP

FCal

fe

fecha

Fechacalcu

ff

fi

fm

grupoBotonesOpcion

Muestra el da de la
semana en que nacio
Mensaje Indica los
das vividos
Variable que recibe
los das vividos
enviados desde la
clase Diavivi
Mensaje indica la
fecha a calcular el
Biorritmo
Recibe el clculo de
la fase del Biorritmo
espiritual
Variable que recibe la
conversin de la
fecha a calcular el
Biorritmo de
GregorianCalendar a
Calendar
Variable que recibe y
agrupa de forma
String la fecha a
calcular el Biorritmo
Recibe el clculo de
la fase del Biorritmo
fsico
Recibe el clculo de
la fase del Biorritmo
Intelectual
Recibe el clculo de
la fase del Biorritmo
magntico
Objeto que permite
utilizar las funciones
para pintar
Es el grupo donde se
adhieren los
radioButton para ser
manejados de forma

JTextField
Jlabel
Long

64-bits

JLabel

Int

32-bits

Calendar

String

16-bits

Int

32-bits

Int

32-bits

Int

32-bits

Graphics

ButtonGroup

Link

mes

nacim
p

rbespi
rbfisico
rbintele
rbmag
rbtodo
S

SALIR
SELECCIN

sonido

TITULO

sencilla
Mensaje donde se da
JLabel
clic y abre una pgina
web donde se brinda
informacin sobre el
biorritmo
Captura el mes de la
Int
fecha del biorritmo a
calcular
Obtiene la fecha de
DateChooserCombo
nacimiento
Objeto que permite
Imgfondo
llamar el panel
imgfondo y dar
posicin
Seleccin del
JRadioButton
biorritmo Espiritual
Seleccin del
JRadioButton
biorritmo Fisico
Seleccin del
JRadioButton
biorritmo intelectual
Seleccin del
JRadioButton
biorritmo magntico
Seleccin del todos
JRadioButton
los biorritmo
Objeto que permite
Seno
llamar a los mtodos
de la clase Seno
Botn que permite
JButton
salir del Programa
Mensaje que indica
JLabel
seleccionar el
biorritmo
Permite el control del
Clip
audio de fondo en el
programa
Es el ttulo que lleva
JLabel
el programa
Biorritmo
Clase Graficar Interfaz Grfica

32-bits

Nombre
co

Descripcin
para dar un color
determinado a las
lneas horizontales y
verticales
caracter
Donde se almacena
el carcter que tendr
la lnea para
diferenciarlas entere
si.
l
Objeto que contiene
la funcin primitiva de
la lnea
FACTOR_de_ESCALA Valor que nos permite
determinar cuntos
puntos toma la
funcin seno para
hacer medio ciclo.
re
Se almacena la
diferencia que hay
entre el mximo de
puntos (40) y los
puntos a graficar para
borrar dicha
diferencia.
x
Posicin en x donde
se empezar a
graficar la funcin.
y
Posicin en y donde
se empezar a
graficar la funcin.
ax
Amplitud de la funcin
en el eje de las x
ay
Amplitud de la funcin
en el eje de las y
puntos
Cantidad de puntos
que se tomaran para
graficar un ciclo de la
funcin seno.
mod
Almacena el da en el

Tipo
Color

Tamao

String

16-bits

Lnea

Int

32-bits

Int

32-bits

Int

32-bits

Int

32-bits

Int

32-bits

Int

32-bits

Int

32-bits

int

32-bits

df

senos

ptos

aux

x1

x2

y1

y2

cual da el biorritmo.
Cambia el punto
donde inicia la
funcin para que
todos los biorritmos
den en 20 al
momento de
graficarlos todos.
Almacena el valor de
seno en cada uno de
los puntos.
Se almacena la
posicin en y con
respecto a cada
punto en x.
Contador para dar
nmero a cada una
de las lneas
Punto inicial en x para
graficar entre los
puntos de la funcin
seno.
Punto final en x para
graficar entre los
puntos de la funcin
seno.
Punto inicial en y para
graficar entre los
puntos de la funcin
seno.
Punto final en y para
graficar entre los
puntos de la funcin
seno.

Int

32-bits

double

64-bits

Int

32-bits

Int

32-bits

Int

32-bits

Int

32-bits

Int

32-bits

Int

32-bits

ANLISIS
CALCULO DE LOS DAS VIVIDOS: se capturan la fecha de nacimiento y fecha a
calcular el Biorritmo, estas fechas quedan capturadas como milisegundos, para
sacar la diferencia entre fechas restamos la fecha a calcular el Biorritmo a la de
Nacimiento con esta diferencia la dividimos entre 1000 para obtener los segundos
vividos de la persona, dividimos los segundos entre 3600 con esto obtenemos las
horas y a partir de estas horas las dividimos entre 24 para calcular los das vividos
del Usuario.
FACES DEL BIORRITMO: es el mdulo de los das vividos con respecto a la
cantidad de das que tiene cada biorritmo.
DESFASE: se busca que todas las biorritmos den en el mismo lugar en este caso
20 por ser la mitad para logar esto se ha cambiado el punto desde donde se inicia
a graficar la funcin seno esto teniendo en cuenta la distancia que tenga el
biorritmo con la mitad para as mismo moverla este trayecto.
PIXELES: cunado la lnea se pixela por que la pendiente es cercana a los 90
grados razn de esto es porque hay pocos pixeles entre estos dos puntos para lo
cual utilizaron puntos entre pixeles.

CONCLUSIONES

Para lograr el clculo del biorritmo debemos primero saber la fecha de nacimiento
y la fecha a calcular que debe ser mayor a la de nacimiento para poder hacer un
clculo correcto, se utiliza la funcin datechoosercombo que nos facilita es control
de estos datos, por medio de estos valores obtenemos los das vividos y
procedemos a calcular en qu posicin de la curva se encuentra cada uno de los
biorritmos con lo cual utilizamos la primitiva de la funcin lnea obtener las curvas
que representan a cada biorritmo.

ANEXOS
Requerimientos.
1. Generar primitiva para la lnea (no utilizar DrawOval).
Ecuacin de la Lnea recta (Dos puntos).
Clase y Objeto.
2. Funcin Seno.
Clase y Objeto.
3. Fecha de Nacimiento.
4. Fecha a calcular el Biorritmo.
5. Nmero de das entre fechas.
6. Da de la semana en que naci (lunes, martes, mircoles, etc.)
7. Aos cumplidos.
8. Se debe poder calcular el biorritmo Individual o todos a la vez.
9. Cada Biorritmo tenga su propio color y forma.
10. Marcar numricamente las divisiones de cada biorritmo (grafica).
11. Debe indicar el Da del biorritmo con la correspondiente fecha.

Pantallazo de la interfaz grafica

Cdigo Fuente.
package laboratorio;
import java.awt.Dimension;
public class Laboratorio {
public static void main(String[] args) {
// Crea un objeto para llamar y hacer visible el Frame
Frame f=new Frame();
f.setVisible(true);
f.setSize(new Dimension(1200, 700));}}
__________________________________________________________________
package laboratorio;
public class Frame extends javax.swing.JFrame {
public Frame() {
setTitle("Calcula Tu Biorritmo");//Titulo de la ventana
Graficar m=new Graficar();// objeto para
add(m);} // adherir al Frame el Jpanel Form.. es decir Graficar
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE) );
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE) );
pack(); }// </editor-fold>
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Le
vel.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Le
vel.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Le
vel.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Le
vel.SEVERE, null, ex); }
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Frame().setVisible(true); } });
}}
__________________________________________________________________
package laboratorio;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Desktop;
import java.awt.Graphics;
import java.io.InputStream;
import java.net.URI;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
public class Graficar extends javax.swing.JPanel {
Diasvivi DIAS=new Diasvivi();
Seno S=new Seno();
Color c = new Color(0,170,0);
ButtonGroup grupoBotonesOpcion;// es el grupo de radiobotones
String Fechacalcu=null;
public Graficar() {
initComponents();

//se adhieren los radiobotones a grupo de botones


grupoBotonesOpcion = new ButtonGroup();
grupoBotonesOpcion.add( rbfisico );
grupoBotonesOpcion.add( rbmag );
grupoBotonesOpcion.add( rbintele );
grupoBotonesOpcion.add( rbespi );
grupoBotonesOpcion.add(rbtodo);
// inicie por defecto seleccionado el radioboton -fisicorbfisico.setSelected(true);
InputStream audio;
audio =getClass().getResourceAsStream("/Sonidoimagen/MusicaRelajante.wav");
try {
Clip sonido = AudioSystem.getClip();
sonido.open(AudioSystem.getAudioInputStream(audio));
sonido.start(); }
catch(Exception fallo) {
System.out.println(fallo); }
imgfondo p = new imgfondo();
this.add( p , BorderLayout.CENTER);
p.repaint();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
nacim = new datechooser.beans.DateChooserCombo();
calcu = new datechooser.beans.DateChooserCombo();
FNAC = new javax.swing.JLabel();
FCal = new javax.swing.JLabel();
CALCULAR = new javax.swing.JButton();
Diass = new javax.swing.JTextField();
TITULO = new javax.swing.JLabel();
DV = new javax.swing.JLabel();
rbfisico = new javax.swing.JRadioButton();
rbmag = new javax.swing.JRadioButton();
rbintele = new javax.swing.JRadioButton();
rbespi = new javax.swing.JRadioButton();
SALIR = new javax.swing.JButton();
rbtodo = new javax.swing.JRadioButton();
DN = new javax.swing.JLabel();
Dnacimiento = new javax.swing.JTextField();
ACum = new javax.swing.JLabel();

Acumplidos = new javax.swing.JTextField();


Link = new javax.swing.JLabel();
comLink = new javax.swing.JLabel();
SELECCION = new javax.swing.JLabel();
setMaximumSize(new java.awt.Dimension(32790, 32790));
setPreferredSize(new java.awt.Dimension(1256, 800));
setRequestFocusEnabled(false);
FNAC.setText("Fecha de Nacimiento");
FCal.setText("Fecha a Calcular");
CALCULAR.setText("CALCULAR");
CALCULAR.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
CALCULARMousePressed(evt); } });
CALCULAR.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
CALCULARActionPerformed(evt); } });
Diass.setEditable(false);
TITULO.setFont(new java.awt.Font("Verdana", 0, 18)); // NOI18N
TITULO.setText("BIORRITMO");
DV.setText("Dias Vividos");
rbfisico.setForeground(new java.awt.Color(255, 0, 51));
rbfisico.setText("Fisico \"X\"");
rbfisico.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
rbfisicoMouseClicked(evt); } });
rbfisico.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
rbfisicoActionPerformed(evt); } });
rbmag.setText("Magnetico \"\"");
rbmag.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
rbmagMouseClicked(evt); } });
rbintele.setForeground(new java.awt.Color(0, 204, 0));
rbintele.setText("Intelectual \"@\"");
rbintele.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
rbinteleMouseClicked(evt);
} });
rbintele.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
rbinteleActionPerformed(evt); } });

rbespi.setForeground(new java.awt.Color(0, 0, 153));


rbespi.setText("Espiritual \"\"");
rbespi.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
rbespiMouseClicked(evt); } });
SALIR.setText("SALIR");
SALIR.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SALIRActionPerformed(evt); } });
rbtodo.setText("Todos Los Biorritmos");
rbtodo.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
rbtodoMouseClicked(evt); } });
rbtodo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
rbtodoActionPerformed(evt); } });
DN.setText("Dia de Nacimiento");
Dnacimiento.setEditable(false);
Dnacimiento.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
DnacimientoActionPerformed(evt); } });
ACum.setText("Aos Cumplidos");
Acumplidos.setEditable(false);
Acumplidos.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
AcumplidosActionPerformed(evt);
} });
Link.setFont(new java.awt.Font("Tempus Sans ITC", 1, 24)); // NOI18N
Link.setForeground(new java.awt.Color(204, 204, 204));
Link.setText("Click");
Link.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
LinkMouseClicked(evt); } });
comLink.setFont(new java.awt.Font("Tempus Sans ITC", 1, 14)); // NOI18N
comLink.setForeground(new java.awt.Color(204, 204, 204));
comLink.setText(" Sabes que es un Biorritmo? ");
SELECCION.setText("SELECIONE EL TIPO DE BIORRITMO");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()

.addGap(444, 444, 444)


.addComponent(TITULO, javax.swing.GroupLayout.PREFERRED_SIZE,
137, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.
GroupLayout.Alignment.TRAILING) .addGroup(layout.createSequentialGroup()
.addContainerGap().addGroup(layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG) .addComponent(FNAC, javax.swing.GroupLayout.PREFERRED_SIZE, 131,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(nacim, javax.swing.GroupLayout.PREFERRED_SIZE, 155,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(20,
20,
Short.MAX_VALUE).addGroup(layout.createParallelGroup(javax.swing.GroupLayo
ut.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(FCal,
javax.swing.GroupLayout.PREFERRED_SIZE, 129,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(84, 84, 84)
.addComponent(DV,
javax.swing.GroupLayout.PREFERRED_SIZE, 96,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(36, 36, 36)
.addComponent(DN,
javax.swing.GroupLayout.PREFERRED_SIZE, 103,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(7, 7, 7)
.addComponent(calcu,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(Diass,
javax.swing.GroupLayout.PREFERRED_SIZE, 139,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(Dnacimiento))))
.addGroup(layout.createSequentialGroup()
.addGap(58, 58, 58)
.addComponent(comLink,
javax.swing.GroupLayout.PREFERRED_SIZE, 219,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(ACum)
.addGap(85, 85, 85))))
.addGroup(layout.createSequentialGroup()
.addGap(141, 141, 141)
.addComponent(Link,
javax.swing.GroupLayout.PREFERRED_SIZE, 76,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(235, 235, 235)
.addComponent(Acumplidos,
javax.swing.GroupLayout.PREFERRED_SIZE, 119,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
136, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(rbfisico,
javax.swing.GroupLayout.PREFERRED_SIZE, 86,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(rbmag)
.addGap(18, 18, 18)
.addComponent(rbintele))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(rbtodo)

.addGap(47, 47, 47))


.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(CALCULAR,
javax.swing.GroupLayout.PREFERRED_SIZE, 96,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(SALIR,
javax.swing.GroupLayout.PREFERRED_SIZE, 95,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(18, 18, 18)
.addComponent(rbespi)
.addGap(70, 70, 70))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(SELECCION)
.addGap(189, 189, 189)))) );
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI
NG)
.addGroup(layout.createSequentialGroup()
.addComponent(FCal)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(calcu,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(TITULO,
javax.swing.GroupLayout.PREFERRED_SIZE, 34,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(9, 9, 9)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(FNAC)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(nacim,
javax.swing.GroupLayout.PREFERRED_SIZE, 25,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASEL
INE)
.addComponent(DV)
.addComponent(DN,
javax.swing.GroupLayout.PREFERRED_SIZE, 23,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(SELECCION))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(Dnacimiento,
javax.swing.GroupLayout.PREFERRED_SIZE, 24,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASEL
INE)
.addComponent(Diass,
javax.swing.GroupLayout.PREFERRED_SIZE, 24,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(rbfisico)
.addComponent(rbmag)
.addComponent(rbintele)
.addComponent(rbespi)))))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(layout.createSequentialGroup()
.addComponent(rbtodo)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASEL
INE)
.addComponent(CALCULAR,
javax.swing.GroupLayout.PREFERRED_SIZE, 33,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(SALIR,
javax.swing.GroupLayout.PREFERRED_SIZE, 33,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup())
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(layout.createSequentialGroup()
.addGap(4, 4, 4)
.addComponent(comLink))
.addComponent(ACum,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 23,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(Acumplidos,
javax.swing.GroupLayout.PREFERRED_SIZE, 23,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Link,
javax.swing.GroupLayout.PREFERRED_SIZE, 27,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(616, Short.MAX_VALUE)) );
}// </editor-fold>
private void rbfisicoActionPerformed(java.awt.event.ActionEvent evt) {
}
private void SALIRActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void CALCULARActionPerformed(java.awt.event.ActionEvent evt) {
Graphics g=this.getGraphics();
GregorianCalendar d1=new GregorianCalendar();
GregorianCalendar d2=new GregorianCalendar();
//se captura la fecha desde el calendario
d1=(GregorianCalendar) nacim.getCurrent();
d2=(GregorianCalendar) calcu.getCurrent();
//captura las fechas y se almacenan en milisegundos
long aux1=d1.getTimeInMillis();
long aux2=d2.getTimeInMillis();

Calendar d=(Calendar)d1;// dia de la semana en que nacio


Calendar Fecha=(Calendar)d2;//dia a calcular el Biorritmo
int dia= Fecha.get(Calendar.DAY_OF_MONTH);//dia del Bio a calcular
int mes= (Fecha.get(Calendar.MONTH))+1;//mes del Bio a calcular
int ao= Fecha.get(Calendar.YEAR);//Ao del Bio a calcular
//captura toda la fecha del bio a calcular en String
Fechacalcu= ""+dia+"/"+mes+"/"+ao;
String Diaqnacio=null;//recibe el dia en que nacio
switch(d.get(Calendar.DAY_OF_WEEK)){
case 1: Diaqnacio="Domingo";
break;
case 2: Diaqnacio="Lunes";
break;
case 3: Diaqnacio= "Martes";
break;
case 4: Diaqnacio="Miercoles";
break;
case 5: Diaqnacio="Jueves";
break;
case 6: Diaqnacio="Viernes";
break;
case 7: Diaqnacio="Sabado";
break;
}
long DVP;//variable que recibe los dias vividos
int ff,fm,fi,fe;//fases
DIAS.capturar(aux1, aux2);
DVP=DIAS.DIA();
String di=""+DVP;
//calculo de las fases
ff=(int) (DVP%23);
fm=(int) (DVP%28);
fi=(int) (DVP%33);
fe=(int) (DVP%40);
if(DVP<=0){JOptionPane.showMessageDialog(null,"Error de
Fechas","",JOptionPane.ERROR_MESSAGE);}
else if(rbfisico.isSelected()){
Diass.setText(di+" Dias");
Acumplidos.setText(""+DVP/360+" Aos");
Dnacimiento.setText(""+Diaqnacio);
S.as(23, 17, 0, ff,"X");

S.pain(g, Color.red,Fechacalcu);
}
else if(rbmag.isSelected()){
Diass.setText(di+" Dias");
Acumplidos.setText(""+DVP/365+" Aos");
Dnacimiento.setText(""+Diaqnacio);
S.as(28, 12, 0, fm,"");
S.pain(g, Color.black,Fechacalcu);
}
else if(rbintele.isSelected()){
Diass.setText(di+" Dias");
Acumplidos.setText(""+DVP/365+" Aos");
Dnacimiento.setText(""+Diaqnacio);
S.as(33, 7, 0, fi,"@");
S.pain(g,c,Fechacalcu);
}
else if(rbespi.isSelected()){
Diass.setText(di+" Dias");
Acumplidos.setText(""+DVP/365+" Aos");
Dnacimiento.setText(""+Diaqnacio);
S.as(40, 0, 0, fe,"");
S.pain(g, Color.blue,Fechacalcu);
}
else if(rbtodo.isSelected()){
Diass.setText(di+" Dias");
Acumplidos.setText(""+DVP/365+" Aos");
Dnacimiento.setText(""+Diaqnacio);
S.as(23, 0, 20-ff, 20,"X");
S.pain(g, Color.red,Fechacalcu);
S.as(28, 0, 20-fm, 20,"");
S.pain(g, Color.black,Fechacalcu);
S.as(33, 0, 20-fi, 20,"@");
S.pain(g, c,Fechacalcu);
S.as(40, 0, 20-fe, 20,"");
S.pain(g, Color.blue,Fechacalcu);}
}
private void rbtodoActionPerformed(java.awt.event.ActionEvent evt) {
}
private void DnacimientoActionPerformed(java.awt.event.ActionEvent evt) {
}
private void AcumplidosActionPerformed(java.awt.event.ActionEvent evt) {

}
private void rbinteleActionPerformed(java.awt.event.ActionEvent evt) {
}
private void LinkMouseClicked(java.awt.event.MouseEvent evt) {
try {
if (Desktop.isDesktopSupported()) {
Desktop desktop = Desktop.getDesktop();
if (desktop.isSupported(Desktop.Action.BROWSE)) {
desktop.browse(new URI("http://www.tubiorritmo.com/biorhythm/whats/"));}
}} catch (Exception e) {e.printStackTrace();}
}
private void CALCULARMousePressed(java.awt.event.MouseEvent evt) {
repaint();
}
// Variables declaration - do not modify
private javax.swing.JLabel ACum;
private javax.swing.JTextField Acumplidos;
private javax.swing.JButton CALCULAR;
private javax.swing.JLabel DN;
private javax.swing.JLabel DV;
private javax.swing.JTextField Diass;
private javax.swing.JTextField Dnacimiento;
private javax.swing.JLabel FCal;
private javax.swing.JLabel FNAC;
private javax.swing.JLabel Link;
private javax.swing.JButton SALIR;
private javax.swing.JLabel SELECCION;
private javax.swing.JLabel TITULO;
private datechooser.beans.DateChooserCombo calcu;
private javax.swing.JLabel comLink;
private datechooser.beans.DateChooserCombo nacim;
private javax.swing.JRadioButton rbespi;
private javax.swing.JRadioButton rbfisico;
private javax.swing.JRadioButton rbintele;
private javax.swing.JRadioButton rbmag;
private javax.swing.JRadioButton rbtodo;
}
__________________________________________________________________
package laboratorio;
public class Diasvivi {
long dias,d;

public void capturar(long d1,long d2){


long enmill=d2-d1;// determina los milisegundos estre las fechas de nacimiento
y a calcular
long segundos=enmill/1000;// determina los segundos
long horas=segundos/3600;// calcula las horas
dias=horas/24; // horas vividas de la persona
}
public long DIA(){
d=dias; //retorna el valor de dias a la clase principal
return d;}
}
__________________________________________________________________
package laboratorio;
import java.awt.*;
public class Seno {
Color co = new Color(240,180,200);
String caracter;
Linea l =new Linea();
int FACTOR_de_ESCALA=0;
int ciclos=0;
int puntos=81,re=0,mod=0,df=0,y=0,x=0,ax=0,ay=0,x1,x2,y1,y2,aux;
double[] senos;
int[] ptos;
public void as(int a,int r,int d,int m,String carac){
caracter=carac;
df=d*2;
mod=m;
FACTOR_de_ESCALA=a;//periodo
re=r*2;//relacion
y=380;//posicion en y
x=20;//pocicion en y
ax=800;//amplitud
ay=250;//amplitu
senos = new double[puntos];
ptos = new int[puntos];
aux=0;
for(int i=0;i<puntos;i++){
double radianes =(Math.PI/FACTOR_de_ESCALA)*(i-df);
senos[i]=(Math.sin(radianes))*-1;
}}
public void pain(Graphics g,java.awt.Color col,String fecha){

//String a="red";
double hstep = (double)(ax)/(double)(puntos-1);
for(int i=0;i<puntos;i++) ptos[i]=(int)(senos[i]*ay*.5+y);
for(int i=1;i<puntos-re;i++){
x1=(int)((i-1)*(hstep))+x;
x2=(int)(i*(hstep))+x;
y1=ptos[(i-1)];
y2=ptos[i];
l.Dilinea(x1, y1, x2, y2,g,col, (int) 0.9);
}
for(int i=1;i<=puntos-re;i=i+2){
g.drawString(caracter, (int)((i-1)*(hstep))+x-2, ptos[(i-1)]+5);
}
//lineas horizontal
g.setColor(Color.RED);
l.Dilinea(x, y, x2, y,g,co, (int) 0.9);
//lineas verticales
for(int i=x;i<=(ax+x)-hstep*re;i=i+20){
l.Dilinea(i, y-(ay/2)-10, i, y+(ay/2)+10,g,co, (int) 0.9);
}
//numeracion
g.setColor(Color.BLACK);
for(int i=x;i<=(ax+x)-hstep*re;i=i+20){
g.drawString(""+aux, i-2, y-(ay/2)-15);
aux=aux+1;
}
//modulo
g.setColor(Color.BLACK);
l.Dilinea((x)+(mod*20), y-(ay/2)-10, (x)+(mod*20),
y+(ay/2)+10,g,Color.orange,2 );
//indica la fecha donde se esta calculando el biorritmo
g.drawString(fecha, (x)+(mod*20)-20,(y+(ay/2)+30));
}
}
__________________________________________________________________
package laboratorio;
import java.awt.Graphics;
public class Linea {
float pendix, peny,m,y;
public void Dilinea(int x1,int y1,int x2,int y2,Graphics g,java.awt.Color c,int gru){
g.setColor(c);//recibe el color deseado

pendix=(x2-x1);//determina el punto medio de x1 y x2


peny=(y2-y1); //determina el punto medio de y1 y y2
m=peny/pendix; //determina la pendiente entre las coordeadas
if(x1<x2){
for(float i=x1;i<=x2;i=(float) (i+0.1)){
y=(m)*(i-x1)+y1;//punto en Y calculado
g.drawOval((int) i, (int) y, (int) 0.9, (int) 0.9);
}}
else if(x1>x2){
for(float i=x1;i>=x2;i=(float) (i-0.1)){
y=(m)*(i-x1)+y1; //punto en Y calculado
g.drawOval((int) i, (int) y, (int) 0.9, (int) 0.9);
}}
else if(x1==x2){
int aux1=y1,aux2=y2;
if(y1>y2){
aux1=y2;aux2=y1; }
for(int i=aux1;i<=aux2;i++){
g.drawOval(x1, i, (int) gru, (int) gru);
}}
}
}
__________________________________________________________________
package laboratorio;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.ImageIcon;
public class imgfondo extends javax.swing.JPanel{
public imgfondo(){
this.setSize(1200, 700); }
@Override
public void paint(Graphics g){
Dimension tamanio = getSize();
ImageIcon imagenFondo = new
ImageIcon(getClass().getResource("/Sonidoimagen/Nature23.jpg"));
g.drawImage(imagenFondo.getImage(),0,0,tamanio.width, tamanio.height,
null);
setOpaque(false);//ponga la imagen de fondo
super.paintComponent(g); }
}