⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stripifierstats.java

📁 JAVA3D矩陈的相关类
💻 JAVA
字号:
/* * $RCSfile: StripifierStats.java,v $ * * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistribution of source code must retain the above copyright *   notice, this list of conditions and the following disclaimer. * * - Redistribution in binary form must reproduce the above copyright *   notice, this list of conditions and the following disclaimer in *   the documentation and/or other materials provided with the *   distribution. * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * This software is provided "AS IS," without a warranty of any * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that this software is not designed, licensed or * intended for use in the design, construction, operation or * maintenance of any nuclear facility. * * $Revision: 1.4 $ * $Date: 2007/02/09 17:20:20 $ * $State: Exp $ */// ----------------------------------------------------------------------//// The reference to Fast Industrial Strength Triangulation (FIST) code// in this release by Sun Microsystems is related to Sun's rewrite of// an early version of FIST. FIST was originally created by Martin// Held and Joseph Mitchell at Stony Brook University and is// incorporated by Sun under an agreement with The Research Foundation// of SUNY (RFSUNY). The current version of FIST is available for// commercial use under a license agreement with RFSUNY on behalf of// the authors and Stony Brook University.  Please contact the Office// of Technology Licensing at Stony Brook, phone 631-632-9009, for// licensing information.//// ----------------------------------------------------------------------package com.sun.j3d.utils.geometry;import java.util.ArrayList;/** * This class collects statistics on the Stripifier.  The statistics * are cumulative over all calls to stripify() until clearData() is called. * * @since Java 3D 1.2.1 */public class StripifierStats {    int numStrips = 0;    int numVerts = 0;    int minStripLen = 10000;    int maxStripLen = 0;    int totalTris = 0;    int numFaces = 0;    long time = 0;    int[] counts = new int[14];    boolean noData = true;    /**     * Returns the number of triangles in the original, un-stripified data.     * @since Java 3D 1.2.1     */    public int getNumOrigTris() {	return numFaces;    }    /**     * Returns the number of vertices in the original, un-stripified data     * @since Java 3D 1.2.1     */    public int getNumOrigVerts() {	return (numFaces * 3);    }    /**     * Returns the number of strips created by the stripifier.     * @since Java 3D 1.2.1     */    public int getNumStrips() {	return numStrips;    }    /**     * Returns the number of vertices in the stripified data.     * @since Java 3D 1.2.1     */    public int getNumVerts() {	return numVerts;    }    /**     * Returns the number of triangles in the stripified data.     * @since Java 3D 1.2.1     */    public int getTotalTris() {	return totalTris;    }    /**     * Returns the length in triangles of the shortest strip     * created by the stripifier.     * @since Java 3D 1.2.1     */    public int getMinStripLength() {	return minStripLen;    }    /**     * Returns the length in triangles of the longest strip     * created by the stripifier.     * @since Java 3D 1.2.1     */    public int getMaxStripLength() {	return maxStripLen;    }    /**     * Return the average length of the strips created by the stripifier     * @since Java 3D 1.2.1     */    public double getAvgStripLength() {	return ((double)totalTris/(double)numStrips);    }    /**     * Returns the average number of vertices per triangle in the stripified     * data     * @since Java 3D 1.2.1     */    public double getAvgNumVertsPerTri() {	return ((double)numVerts/(double)totalTris);    }    /**     * Returns the total time spent in the stripify() method     * @since Java 3D 1.2.1     */    public long getTotalTime() {	return time;    }    /**     * Returns an array of length 14 that contains the number of strips of     * a given length created by the stripifier.  Spots 0-8 of the array     * represent lengths 1-9, 9 is lengths 10-19, 10 is lengths 20-49,     * 11 is lengths 50-99, 12 is lengths 100-999 and 13 is lengths 1000     * or more.     * @since Java 3D 1.2.1     */    public int[] getStripLengthCounts() {	return counts;    }    /**     * Returns a formated String that can be used to print out     * the Stripifier stats.     * @since Java 3D 1.2.1     */    public String toString() {	StringBuffer str = new StringBuffer(					    "num orig tris:        " + numFaces + "\n" +					    "num orig vertices:    " + (numFaces*3) + "\n" +					    "number of strips:     " + numStrips + "\n" +					    "number of vertices:   " + numVerts + "\n" +					    "total tris:           " + totalTris + "\n" +					    "min strip length:     " + minStripLen + "\n" +					    "max strip length:     " + maxStripLen + "\n" +					    "avg strip length:     " + ((double)totalTris/									(double)numStrips) + "\n" +					    "avg num verts/tri:    " + ((double)numVerts/									(double)totalTris) + "\n" +					    "total time:           " + time + "\n" +					    "strip length distribution:\n");	for (int i = 0; i < 9; i++){	    str.append("  " + (i+1) + "=" + counts[i]);	}	str.append("  10-19=" + counts[9]);	str.append("  20-49=" + counts[10]);	str.append("  50-99=" + counts[11]);	str.append("  100-999=" + counts[12]);	str.append("  1000 or more=" + counts[13] + "\n");	return str.toString();    }    /**     * Clears the statistical data     */    public void clearData() {	noData = true; 	numStrips = 0; 	numVerts = 0; 	minStripLen = 10000; 	maxStripLen = 0; 	totalTris = 0; 	numFaces = 0; 	time = 0; 	counts = new int[14];    }    void updateInfo(long ntime, ArrayList strips,		    int nNumFaces) {	noData = false;	time += ntime;	numStrips += strips.size();	int nv = 0;	int mnsl = 10000;	int mxsl = 0;	int tt = 0;	for (int i = 0; i < strips.size(); i++) {	    Stripifier.Istream strm = (Stripifier.Istream)strips.get(i);	    int len = strm.length;	    int trilen = (len-2);	    nv += len;	    if (trilen < mnsl) mnsl = trilen;	    if (trilen > mxsl) mxsl = trilen;	    tt += trilen;	    // add to counts	    // how many strips are length 1-9	    if (trilen <= 9) counts[trilen-1] += 1;	    // how many strips are length 10-19	    else if (trilen < 20) counts[9] += 1;	    // how many strips are length 20-49	    else if (trilen < 50) counts[10] += 1;	    // how many strips are length 50-99	    else if (trilen < 100) counts[11] += 1;	    // how many strips are length 100-1000	    else if (trilen < 1000) counts[12] += 1;	    // how many strips are length > 1000	    else counts[13] += 1;	}	numVerts += nv;	if (mnsl < minStripLen) minStripLen = mnsl;	if (mxsl > maxStripLen) maxStripLen = mxsl;	totalTris += tt;	numFaces += nNumFaces;    }    void updateInfo(long ntime, int scLen, int sc[],		    int nNumFaces) {	noData = false;	time += ntime;	numStrips += scLen;	int nv = 0;	int mnsl = 10000;	int mxsl = 0;	int tt = 0;	for (int i = 0; i < scLen; i++) {	    int len = sc[i];	    int trilen = (len-2);	    numVerts += len;	    if (trilen < mnsl) mnsl = trilen;	    if (trilen > mxsl) mxsl = trilen;	    totalTris += trilen;	    // add to counts	    // how many strips are length 1-9	    if (trilen <= 9) counts[trilen-1] += 1;	    // how many strips are length 10-19	    else if (trilen < 20) counts[9] += 1;	    // how many strips are length 20-49	    else if (trilen < 50) counts[10] += 1;	    // how many strips are length 50-99	    else if (trilen < 100) counts[11] += 1;	    // how many strips are length 100-1000	    else if (trilen < 1000) counts[12] += 1;	    // how many strips are length > 1000	    else counts[13] += 1;	}	numVerts += nv;	if (mnsl < minStripLen) minStripLen = mnsl;	if (mxsl > maxStripLen) maxStripLen = mxsl;	totalTris += tt;	numFaces += nNumFaces;    }    //     void printInfo() {    // 	System.out.println("num orig tris:        " + numFaces);    // 	System.out.println("num orig vertices:    " + (numFaces*3));    // 	System.out.println("number of strips:     " + numStrips);    // 	System.out.println("number of vertices:   " + numVerts);    // 	System.out.println("total tris:           " + totalTris);    // 	System.out.println("min strip length:     " + minStripLen);    // 	System.out.println("max strip length:     " + maxStripLen);    // 	System.out.println("avg strip length:     " + ((double)totalTris/    // 						       (double)numStrips));    // 	System.out.println("avg num verts/tri:    " + ((double)numVerts/    // 						       (double)totalTris));    // 	System.out.println("total time:           " + time);    // 	System.out.println("strip length distribution:");    // 	for (int i = 0; i < 9; i++){    // 	    System.out.print("  " + (i+1) + "=" + counts[i]);    // 	}    // 	System.out.print("  10-19=" + counts[9]);    // 	System.out.print("  20-49=" + counts[10]);    // 	System.out.print("  50-99=" + counts[11]);    // 	System.out.print("  100-999=" + counts[12]);    // 	System.out.println("  1000 or more=" + counts[13]);    // 	// reset info after printing data    // 	numStrips = 0;    // 	numVerts = 0;    // 	minStripLen = 10000;    // 	maxStripLen = 0;    // 	totalTris = 0;    // 	numFaces = 0;    // 	time = 0;    // 	counts = new int[14];    //     }    StripifierStats() {    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -