Aqui una imagen:
El problema es que no tengo lineas verticales y horizontales sino que una de ellas es perpendicular.
¿Como podria calcular el punto donde estas dos lienas se cruzan?
El codigo que utilizo es el siguiente :
Main.java
import java.awt.Color;
import javax.swing.JFrame;
class Main{
public static void main(String[] args){
Listas_Hor objListasHor = new Listas_Hor();
objListasHor.GenerarLineasHor();
Listas_Ver objListasVer = new Listas_Ver();
objListasVer.GenerarLineasVer();
Panel objPanel = new Panel(objListasHor.getObjLineasHor(), objListasVer.getObjLineasVer());
JFrame objFrame = new JFrame();
objFrame.getContentPane().add(objPanel);
objFrame.setTitle("LIRAP");
objFrame.setBackground(Color.BLACK);
objFrame.setSize(545, 518);
objFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
objFrame.setLocationRelativeTo(null);
objFrame.setVisible(true);
}
}
Panel.java
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class Panel extends JPanel {
private static final long serialVersionUID = 1L;
Lineas_Horizontales[] objLineasHor = new Lineas_Horizontales[3];
Lineas_Verticales[] objLineasVer = new Lineas_Verticales[1];
public Panel(Lineas_Horizontales[] objLineasHor, Lineas_Verticales[] objLineasVer) {
this.objLineasHor = objLineasHor;
this.objLineasVer = objLineasVer;
}
public void paintComponent(Graphics objGraphics){
//ImageIcon Img = new ImageIcon(getClass().getResource("/Img/Graf.png"));
//objGraphics.drawImage(Img.getImage(), 0, 0, Img.getIconWidth(), Img.getIconHeight(), null);
//Lineas Horizontales
objGraphics.setColor(Color.red);
for(int i=0;i<objLineasHor.length;i++){
objGraphics.drawLine(objLineasHor[i].getiX1(), objLineasHor[i].getiY1(), objLineasHor[i].getiX2(), objLineasHor[i].getiY2());
}
//Lineas Verticales
objGraphics.setColor(Color.blue);
for(int i=0;i<objLineasVer.length;i++){
objGraphics.drawLine(objLineasVer[i].getiX1(), objLineasVer[i].getiY1(), objLineasVer[i].getiX2(), objLineasVer[i].getiY2());
}
}
}
Lineas_Horinzotales.java
public class Lineas_Horizontales {
private int iX1;
private int iY1;
private int iX2;
private int iY2;
private double iValor;
public Lineas_Horizontales(int iX1, int iY1, int iX2, int iY2, double iValor) {
this.iX1 = iX1;
this.iY1 = iY1;
this.iX2 = iX2;
this.iY2 = iY2;
this.iValor = iValor;
}
public int getiX2() {
return iX2;
}
public int getiY2() {
return iY2;
}
public int getiX1() {
return iX1;
}
public int getiY1() {
return iY1;
}
public double getiValor() {
return iValor;
}
}
Listas_Hor.java
public class Listas_Hor {
private Lineas_Horizontales[] objLineasHor = new Lineas_Horizontales[3];
public void GenerarLineasHor(){
objLineasHor[0] = new Lineas_Horizontales(71, 438, 458, 443, 4000);
objLineasHor[1] = new Lineas_Horizontales(72, 384, 463, 390, 4500);
objLineasHor[2] = new Lineas_Horizontales(73, 330, 463, 335, 5000);
//objLineasHor[3] = new Lineas_Horizontales(73, 280, 463, 290, 5500);
}
public Lineas_Horizontales[] getObjLineasHor() {
return objLineasHor;
}
}
Lineas_Verticales.java
public class Lineas_Verticales {
private int iX1;
private int iY1;
private int iX2;
private int iY2;
private double iValor;
public Lineas_Verticales(int iX1, int iY1, int iX2, int iY2, double iValor) {
this.iX1 = iX1;
this.iY1 = iY1;
this.iX2 = iX2;
this.iY2 = iY2;
this.iValor = iValor;
}
public int getiX2() {
return iX2;
}
public int getiY2() {
return iY2;
}
public int getiX1() {
return iX1;
}
public int getiY1() {
return iY1;
}
public double getiValor() {
return iValor;
}
}
Listas_Ver.java
public class Listas_Ver {
private Lineas_Verticales[] objLineasVer = new Lineas_Verticales[1];
public void GenerarLineasVer(){
objLineasVer[0] = new Lineas_Verticales(71, 285, 458, 393, 3600);
}
public Lineas_Verticales[] getObjLineasVer() {
return objLineasVer;
}
}
El valor de las lineas estan dados en el atributo "Valor" de las clases Lineas_Verticales y Lineas_Horizontales, en este ejemplo solo genero 3 lienas horizontales (4500, 5000, 5500) y una perpendicular (3600). Querria calcular el valor de X y Y del cruze entre el eje 5500 y 3600.Gracias de antemano.
Saludos