package business;

import java.awt.Graphics;
import java.awt.Point;
import java.math.BigDecimal;

public class Arista {

	private int id;
	private Vertice verticeOrigen;
	private Vertice verticeDestino;
	private boolean seleccionada;
	private boolean solucionadora;

	public Arista(Vertice origen, Vertice destino, int i, boolean sel) {
		verticeOrigen = origen;
		verticeDestino = destino;
		id = i;
		seleccionada = sel;
		solucionadora = false;
	}

	public BigDecimal obtenerDistanciaAPunto(Point p) {
		Integer origenX = verticeOrigen.getPunto().x;
		Integer origenY = verticeOrigen.getPunto().y;
		Integer destinoX = verticeDestino.getPunto().x;
		Integer destinoY = verticeDestino.getPunto().y;

		Integer A = destinoY - origenY;
		Integer B = origenX - destinoX;
		Integer C = - (A * origenX + B * origenY);

		return BigDecimal.valueOf(Math.abs(A * p.x + B * p.y + C) / Math.sqrt(Math.pow(A, 2) + Math.pow(B, 2)));
	}

	public void dibujarArista(Graphics g) {
		if(solucionadora)
			g.setColor(Configuracion.getColorAristaSolucion());
		else if(seleccionada)
			g.setColor(Configuracion.getColorAristaSeleccionada());
		else
			g.setColor(Configuracion.getColorArista());
		g.drawLine(verticeOrigen.getPunto().x, verticeOrigen.getPunto().y, verticeDestino.getPunto().x, verticeDestino.getPunto().y);
	}

	public Vertice getVerticeOrigen() {
		return verticeOrigen;
	}

	public Vertice getVerticeDestino() {
		return verticeDestino;
	}

	public int getId() {
		return id;
	}

	public boolean isSeleccionada() {
		return seleccionada;
	}

	public void setSeleccionada(boolean seleccionada) {
		this.seleccionada = seleccionada;
	}

	public void setSolucionadora(boolean solucionadora) {
		this.solucionadora = solucionadora;
	}
}