Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.amcgala.framework.shape.util;
  
  /*
   * Copyright 2011 Cologne University of Applied Sciences Licensed under the
   * Educational Community License, Version 2.0 (the "License"); you may not use
   * this file except in compliance with the License. You may obtain a copy of the
   * License at
   *
   * http://www.osedu.org/licenses/ECL-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  * License for the specific language governing permissions and limitations under
  * the License.
  */
 
 
 import java.util.List;
Statischer PLY File Parser zum laden von Polygonen. Export von komplexen Objekten aus Blender moeglich (siehe exsample Paket)

Author(s):
Steffen Tröster
 
 public class PLYPolygonParser {
 
 	private static final Logger log = LoggerFactory
Parst .ply File und gibt Polygone zurueck

Parameters:
filePath Pfad zur .ply Datei
scale Skalierung des Objektes (zB 100)
Returns:
ArrayList von allen Polygonen
Throws:
java.io.IOException
 
 	public static List<PolygonparseAsPolygonList(String filePathdouble scale)
 			throws Exception {
 		// Stream öffnen (Exception!)
 		InputStream inputStream = new FileInputStream(filePath);
 		return parseAsPolygonList(inputStreamscale);
 	}

Parst .ply File und gibt Polygone zurueck

Parameters:
inputStream to File
scale Skalierung des Objektes (zB 100)
Returns:
ArrayList von allen Polygonen
Throws:
java.io.IOException
 
 	public static List<PolygonparseAsPolygonList(InputStream inputStream,
 			double scalethrows Exception {
 		// resultierende Polygone
 		ArrayList<Polygonpolygons = new ArrayList<Polygon>();
 		// resultierende Normalen
 		ArrayList<Vector3dnormals = new ArrayList<Vector3d>();
 		// Koordinaten Anzahl
 		int vertexCount = 0;
 		// Polygone Anzahl
 		int faceCount = 0;
 		// Koordinaten
 		ArrayList<Vector3dvertices = new ArrayList<Vector3d>();
 		// Stream in Scanner legen
 		final Scanner scanner = new Scanner(inputStream).useLocale(.);
 
 		// Durchlauf des Dateiheaders
 		while (scanner.hasNext() && scanner.hasNextLine()) {
 			String currentLine = scanner.nextLine();
 			// Lade Anzahl von Koordinaten
 			if (currentLine.matches("element vertex [0-9]{1,5}")) {
 				vertexCount = Integer
 						.parseInt(currentLine.substring(15).trim());
 			}
 			// Lade Anzahl von Polygonen
 			if (currentLine.matches("element face [0-9]{1,5}")) {
 				faceCount = Integer.parseInt(currentLine.substring(12).trim());
 			}
 			// Next step wenn Dateiheader gelesen
			if (currentLine.matches("end_header")) {
				break;
			}
		}
		// Lade alle Koordinaten
		for (int i = 0; i < vertexCounti++) {
			vertices.add(new Vector3d(scanner.nextDouble() * scalescanner
					.nextDouble() * scalescanner.nextDouble() * scale));
			normals.add(new Vector3d(scanner.nextDouble() * scalescanner
					.nextDouble() * scalescanner.nextDouble() * scale));
			scanner.nextLine();
		}
		// Lade alle Polygone und setze Normalen
		for (int i = 0; i < faceCounti++) {
			int currentFace = scanner.nextInt();
			if (currentFace == 4) {
				int index = scanner.nextInt();
				polygons.add(new Polygon(vertices.get(index), vertices
						.get(scanner.nextInt()),
						vertices.get(scanner.nextInt()), vertices.get(scanner
								.nextInt()), normals.get(index)));
else if (currentFace == 3) {
				int index = scanner.nextInt();
				polygons.add(new Polygon(vertices.get(index), vertices
						.get(scanner.nextInt()),
						vertices.get(scanner.nextInt()), normals.get(index)));
else {
				throw new IOException();
			}
		}
		.info("loaded " + vertexCount + " vertexes and " + faceCount
" faces");
		return polygons;
	}
New to GrepCode? Check out our FAQ X