I) Objetivo
Ver Guía de Computación Gráfica III) Prácticas package geometrias.rellenoareas; import java.util.ArrayList; import java.util.List; /** * * @author hernan */ public class Poligono { private List<Punto> vertices; private List<Punto> vectores; private List<Punto> productosVectoriales; private List<Punto> vectoresExtension; /* * */ public Poligono(List<Punto> vertices) { this.vertices = vertices; } /* * Hallar vectores de poligono */ public List<Punto> getVectoresExtension() { return vectoresExtension; } public List<Punto> hallarVectores() { // cálcular vectores del poligono vectores = new ArrayList<Punto>(); int nroVertices = vertices.size(); for (int i = 0; i < nroVertices - 1; i++) { Punto vector = diferenciaVector(vertices.get(i+1), vertices.get(i)); vectores.add(vector); } // calcular el últiimo vector Punto ultimoVector = diferenciaVector(vertices.get(0), vertices.get(nroVertices - 1)); vectores.add(ultimoVector); return vectores; } /* * Hallar vectores resultante del producto vectorial */ public List<Punto> hallarVectoresProductoVectorial() { List<Punto> temp= new ArrayList<Punto>(); List<Punto> temp1 = new ArrayList<Punto>(); int numeroVectores = this.vectores.size(); for (int i=0;i<numeroVectores-1;i++) { Punto producto = productoVectorial(vectores.get(i), vectores.get(i+1)); if (producto.getZ()<0) { temp1.add(vectores.get(i)); } temp.add(producto); } // ultimo punto Punto ultimoPunto = productoVectorial(vectores.get(numeroVectores-1), vectores.get(0)); temp.add(ultimoPunto); this.vectoresExtension = temp1; return temp; } /* * Hallar el vector */ public Punto diferenciaVector(Punto p1, Punto p2) { Punto p = new Punto(p1.getX() - p2.getX(), p1.getY() - p2.getY(), p1.getZ() - p2.getZ()); return p; } public Punto productoVectorial(Punto vector1, Punto vector2) { return new Punto( vector1.getY()*vector2.getZ() - vector1.getZ()*vector2.getY(), - (vector1.getX()*vector2.getZ() - vector1.getZ()*vector2.getX()), vector1.getX()*vector2.getY() - vector1.getY()*vector2.getX() ); } public static void main(String[] args) { List<Punto> vertices = new ArrayList<Punto>(); vertices.add(new Punto(0, 0, 0)); vertices.add(new Punto(1, 0, 0)); vertices.add(new Punto(2, 1, 0)); vertices.add(new Punto(3, 0, 0)); vertices.add(new Punto(3, 3, 0)); vertices.add(new Punto(0, 3, 0)); Poligono poligono = new Poligono(vertices); List<Punto> vectores = poligono.hallarVectores(); System.out.println("Vectores: " + vectores); List<Punto> productos = poligono.hallarVectoresProductoVectorial(); System.out.println("Productos: " + productos); System.out.println("Vector extension: " + poligono.vectoresExtension); } } IV) Tarea
|