class Graficar
extends javax.
swing.
JFrame { private int numVble;
private Vector<Color> cVector = new Vector<Color>(); //Vector de Color de la Variable
private Vector<String> nVector = new Vector<String>(); //Vector de Nombre de la Variable
private Vector<Graphics2D> gVector = new Vector<Graphics2D>();//Vector de Graphic de la Variable
private Vector
<Double []> xVector
= new Vector
<Double []>();//Vector de Arreglo de X de la Variable private Vector
<Double []> yVector
= new Vector
<Double []>();//Vector de Arreglo de Y de la Variable private Vector<Double> xMin = new Vector<Double>();//Vector de Valor Mínimo del Arreglo de X de la Variable
private Vector<Double> yMin = new Vector<Double>();//Vector de Valor Mínimo del Arreglo de Y de la Variable
private Vector<Double> xMax = new Vector<Double>();//Vector de Valor Máximo del Arreglo de X de la Variable
private Vector<Double> yMax = new Vector<Double>();//Vector de Valor Máximo del Arreglo de Y de la Variable
private Vector<Float> dVector = new Vector<Float>();//Vector de Espesor de la Variable
private int PosX, PosY, Largo, Ancho;
String VbleX, VbleY
; //Agragar Nombre de Variables X y Y String TitleV, TitleH
; //Agrega Título Vertical(Izquierda) y Título Horizontal(Debajo) String TitleM, TitleS
; //Título Principal y Título Secundario private double MaxX, MinX, MaxY, MinY; //Almacena Máximos y Mínimos de Coordenadas X y Y
Graficar(int xPos, int yPos, int xWidth, int yLarge){
numVble = 0;
setDimension(xWidth,yLarge);
setPosition(xPos,yPos);
Lienzo.
setBackground(Color.
LIGHT_GRAY); Lienzo.
setForeground(Color.
DARK_GRAY); }
void setPosition(int xPos, int yPos) {
//Asignar la posición del Lienzo
PosX = xPos;
PosY = yPos;
Lienzo.setLocation(PosX, PosY);
}
void getPosition(int xPos, int yPos) {
//Obtener la posición del Lienzo
xPos = PosX;
yPos = PosY;
}
void setDimension(int xWidth, int yLarge) {
//Asignar la Dimensión del Lienzo
Ancho = xWidth;
Largo = yLarge;
Lienzo.setSize(Ancho, Largo);
}
void getDimension(int xWidth, int yLarge) {
//Obtener la Dimensión del Lienzo
xWidth = Ancho;
yLarge = Largo;
}
double getMax(double[] data){
//Obtener el valor MAYOR del Arreglo
double Max = data[0];
for (int i=0;i<data.length;i++){
if (Max < data[i])
Max = data[i];
}
return Max;
}
double getMin(double[] data){
//Obtener el valor MENOR del Arreglo
double Min = data[0];
for (int i=0;i<data.length;i++){
if (Min > data[i])
Min = data[i];
}
return Min;
}
double getMax(Vector<Double> data){
//Obtener el valor MAYOR del Vector
double Max = data.elementAt(0);
for (int i=0;i<data.size();i++){
if (Max < data.elementAt(i))
Max = data.elementAt(i);
}
return Max;
}
double getMin(Vector<Double> data){
//Obtener el valor MENOR del Vector
double Min = data.elementAt(0);
for (int i=0;i<data.size();i++){
if (Min > data.elementAt(i))
Min = data.elementAt(i);
}
return Min;
}
Double [] double_Double
(double[] ddata
){ //Convierte los datos de double a Double para operar con Vectores
for (int i=0;i<ddata.length;i++){
Ddata[i] = ddata[i];
}
return Ddata;
}
double [] Double_double
(Double[] Ddata
){ //Restaura los datos de Double a double para operar con arreglos
double[] ddata = new double[Ddata.length];
for (int i=0;i<Ddata.length;i++){
ddata[i] = Ddata[i];
}
return ddata;
}
int addVble
(Graphics g,
String nVble,
double[] aX,
double[] aY,
Color VbleColor,
float zDepth
){ //Agrega una variable a Graficar, llamada nVble, de Color VbleColor y Grosor zDepth
if (nVector.
contains(nVble
)) throw new RuntimeException("La Variable ya existe"); if(aX.
length == 0||aY.
length == 0) throw new RuntimeException("Arreglos de datos vacíos"); Double[] vX
= double_Double
(aX
); //Convierte el Arreglo double vX a Vector Double vX Double[] vY
= double_Double
(aY
); //Convierte el Arreglo double vY a Vector Double vY xMin.add(getMin(aX)); //Agrega el Mínimo valor del Arreglo aX al Vector xMin
xMax.add(getMax(aX)); //Agrega el Máximo valor del Arreglo aX al Vector xMax
yMin.add(getMin(aY)); //Agrega el Mínimo valor del Arreglo aY al Vector yMin
yMax.add(getMax(aY)); //Agrega el Máximo valor del Arreglo aY al Vector yMin
nVector.add(nVble);
cVector.add(VbleColor);
dVector.add(zDepth);
gVector.add(g2);
xVector.add(vX);
yVector.add(vY);
MinX = getMin(xMin); //Halla el Mínimo Valor de X, del Vector xMin
MaxX = getMax(xMax); //Halla el Máximo Valor de X, del Vector xMax
MinY = getMin(yMin); //Halla el Mínimo Valor de Y, del Vector yMin
MaxY = getMax(yMax); //Halla el Máximo Valor de Y, del Vector yMax
System.
out.
print("addVble \n"); System.
out.
print(nVble
+" getMin(aX):"+getMin
(aX
)+" MinX :"+MinX
+"\n"); System.
out.
print(nVble
+" getMax(aX):"+getMax
(aX
)+" MaxX :"+MaxX
+"\n"); System.
out.
print(nVble
+" getMin(aY):"+getMin
(aY
)+" MinY :"+MinY
+"\n"); System.
out.
print(nVble
+" getMax(aY):"+getMax
(aY
)+" MaxY :"+MaxY
+"\n"); numVble += 1;
return numVble;
}
int numVble() {
//Retorna el número de variables que hay almacenadas
return numVble;
}
//Elimina una variable a Graficar llamada nVble
if (!nVector.
contains(nVble
)) throw new RuntimeException("La Variable no existe"); int Indice = nVector.indexOf(nVble);
xMin.remove(Indice); //Borra el Mínimo valor de X del Vector xMin
xMax.remove(Indice); //Borra el Máximo valor de X del Vector xMin
yMin.remove(Indice); //Borra el Mínimo valor de Y del Vector yMin
yMax.remove(Indice); //Borra el Máximo valor de Y del Vector yMin
nVector.remove(Indice);
cVector.remove(Indice);
dVector.remove(Indice);
gVector.remove(Indice);
xVector.remove(Indice);
yVector.remove(Indice);
MinX = getMin(xMin); //Halla el Mínimo Valor de X, del Vector xMin
MaxX = getMax(xMax); //Halla el Máximo Valor de X, del Vector xMax
MinY = getMin(yMin); //Halla el Mínimo Valor de Y, del Vector yMin
MaxY = getMax(yMax); //Halla el Máximo Valor de Y, del Vector yMax
System.
out.
print("delVble \n"); System.
out.
print(nVble
+" MinX :"+MinX
+"\n"); System.
out.
print(nVble
+" MaxX :"+MaxX
+"\n"); System.
out.
print(nVble
+" MinY :"+MinY
+"\n"); System.
out.
print(nVble
+" MaxY :"+MaxY
+"\n"); numVble -= 1;
return numVble;
}
//Verifica si existe una Variable llamada nVble
return nVector.contains(nVble);
}
void ViewAll(){
//Muestra todas las graficas almacenadas en los vectores
for (int Indice = 0; Indice<nVector.size();Indice++){
grafica(Indice, "View");
}
}
void HideAll(){
//Oculta todas las graficas almacenadas en los vectores
for (int Indice = 0; Indice<nVector.size();Indice++){
grafica(Indice, "Hide");
}
}
//Muestra la grafica de la Variable llamada nVble
if (!nVector.
contains(nVble
)) throw new RuntimeException("La Variable no existe"); int Indice = nVector.indexOf(nVble);
grafica(Indice, "View");
}
//Oculta la grafica de la Variable llamada nVble
if (!nVector.
contains(nVble
)) throw new RuntimeException("La Variable no existe"); int Indice = nVector.indexOf(nVble);
grafica(Indice, "Hide");
}
void grafica
(int Indice,
String Oper
){ //Recarga una gráfica para mostrarla u ocultarla
float zDepth = dVector.elementAt(Indice);
Color color
= cVector.
elementAt(Indice
); double[] aX = Double_double(xVector.elementAt(Indice));
double[] aY = Double_double(yVector.elementAt(Indice));
g2.setColor(color);
if (Oper.equals("Hide")){
g2.setXORMode(getBackground());
}
if (Oper.equals("View")){
g2.setPaintMode();
}
if (aX.length == 1){
g2.drawLine ((int)aX[0], (int)aX[0], (int)aY[0], (int)aY[0]);
} else {
for (int j = 0;j<aY.length-1;j++){
//g2.draw( new Line2D.Double((int)vX[i], (int)vX[i+1], (int)vY[i], (int)vY[i+1]));
g2.drawLine ((int)aX[j], (int)aY[j], (int)aX[j+1], (int)aY[j+1]);
}
}
repaint();
}
//Retorna un vector con los nombres de las variables almacenadas
for (int i = 0; i<nVector.size();i++){
Vbles[i] = nVector.elementAt(i);
}
return Vbles;
}
}