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

📄 writergts.java

📁 基于java的3d开发库。对坐java3d的朋友有很大的帮助。
💻 JAVA
字号:
//===========================================================================//=-------------------------------------------------------------------------=//= Module history:                                                         =//= - October 26 2007 - Oscar Chavarro: Original base version               =//===========================================================================package vsdk.toolkit.io.geometry;// Java basic classesimport java.util.ArrayList;import java.io.OutputStream;// VSDK Classesimport vsdk.toolkit.common.Matrix4x4;import vsdk.toolkit.common.Triangle;import vsdk.toolkit.common.Vertex;import vsdk.toolkit.common.Vector3D;import vsdk.toolkit.environment.geometry.Geometry;import vsdk.toolkit.environment.geometry.TriangleMesh;import vsdk.toolkit.environment.geometry.TriangleMeshGroup;import vsdk.toolkit.environment.geometry.FunctionalExplicitSurface;import vsdk.toolkit.environment.scene.SimpleBody;import vsdk.toolkit.environment.scene.SimpleScene;import vsdk.toolkit.io.PersistenceElement;class _WriterGtsEdge extends PersistenceElement{    public int from;    public int to;}class _WriterGtsTriangle extends PersistenceElement{    public int p0;    public int p1;    public int p2;}public class WriterGts extends PersistenceElement {    private static int    addEdge(ArrayList<_WriterGtsEdge> edges, int from, int to)    {        _WriterGtsEdge e;        int i;        for ( i = 0; i < edges.size(); i++ ) {            e = edges.get(i);            if ( (e.from == from && e.to == to) ||                 (e.from == to && e.to == from) ) {                return i;            }        }        i = edges.size();        e = new _WriterGtsEdge();        e.from = from;        e.to = to;        edges.add(e);        return i;    }    private static long    exportMesh(OutputStream inOutputStream, TriangleMesh mesh, long offset)        throws Exception    {        Vertex v[] = mesh.getVertexes();        Triangle t[] = mesh.getTriangles();        ArrayList<_WriterGtsEdge> edges;        ArrayList<_WriterGtsTriangle> triangles;        edges = new ArrayList<_WriterGtsEdge>();        triangles = new ArrayList<_WriterGtsTriangle>();        _WriterGtsEdge e;        _WriterGtsTriangle tt;        int i;        for ( i = 0; i < t.length; i++ ) {            tt = new _WriterGtsTriangle();            tt.p0 = addEdge(edges, t[i].p0, t[i].p1);            tt.p1 = addEdge(edges, t[i].p1, t[i].p2);            tt.p2 = addEdge(edges, t[i].p2, t[i].p0);            triangles.add(tt);        }        writeAsciiLine(inOutputStream, "" + v.length + " " + edges.size() + " " + triangles.size() + " GtsSurface GtsFace GtsEdge GtsVertex");        for ( i = 0; i < v.length; i++ ) {            writeAsciiLine(inOutputStream, "" + v[i].position.x + " " +                v[i].position.y + " " + v[i].position.z);        }        for ( i = 0; i < edges.size(); i++ ) {            e = edges.get(i);            writeAsciiLine(inOutputStream, "" + (e.from+1) + " " + (e.to+1));        }        for ( i = 0; i < triangles.size(); i++ ) {            tt = triangles.get(i);            writeAsciiLine(inOutputStream, "" + (tt.p0+1) + " " + (tt.p1+1) + " " + (tt.p2+1));        }        return offset + v.length;    }    public static void    exportEnvironment(OutputStream inOutputStream, SimpleScene inScene)        throws Exception    {        //-----------------------------------------------------------------        ArrayList<SimpleBody> objs;        Geometry g;        TriangleMesh mesh;        objs = inScene.getSimpleBodies();        long baseVertexStart = 0;        int i;        for ( i = 0; i < objs.size(); i++ ) {            //-----------------------------------------------------------------            g = objs.get(i).getGeometry();            mesh = null;            if ( g instanceof FunctionalExplicitSurface ) {                mesh = ((FunctionalExplicitSurface)g).getInternalTriangleMesh();            }            else if ( g instanceof TriangleMesh ) {                mesh = (TriangleMesh)g;            }            //-----------------------------------------------------------------            if ( mesh != null ) {                baseVertexStart += exportMesh(inOutputStream, mesh, baseVertexStart);            }        }    }}//===========================================================================//= EOF                                                                     =//===========================================================================

⌨️ 快捷键说明

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