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

📄 j3daxis.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: J3DAxis.java * Written by Gilda Garreton, Sun Microsystems. * * Copyright (c) 2005 Sun Microsystems and Static Free Software * * Electric(tm) is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Electric(tm) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Electric(tm); see the file COPYING.  If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, Mass 02111-1307, USA. */package com.sun.electric.plugins.j3d.utils;import com.sun.j3d.utils.geometry.Cone;import com.sun.j3d.utils.geometry.Primitive;import com.sun.j3d.utils.geometry.Cylinder;import java.awt.*;import javax.media.j3d.*;import javax.vecmath.*;/** * Utility class to create 3D axes * @author  Gilda Garreton * @version 0.1 */public class J3DAxis extends Group{    /** Font for 3D axis labels */ private static Font3D font3D;    public static final Vector3d axisX = new Vector3d(1,0,0);    public static final Vector3d axisY = new Vector3d(0,1,0);    public static final Vector3d axisZ = new Vector3d(0,0,1);    /**     * Method to create axis composed of a cylinder + a cone     * @param factor     */    private void createAxis(double factor, Vector3d dir, Appearance app, String text)    {        Transform3D t = new Transform3D();        float length = 0.1f;        float diameter = (float)length*.08f;        Primitive axis = new Cylinder(diameter, (float)length, app);        Transform3D cylinderTrans = new Transform3D();        Transform3D coneTrans = new Transform3D();        if (dir == axisX)            t.rotZ(-Math.PI/2);        else if (dir == axisZ)            t.rotX(Math.PI/2);        t.setScale(factor);  // Axes are scaled according to sphere radius of the scene graph        TransformGroup axisTG = new TransformGroup(t); // Identity transform        Vector3d cylinderLocation = new Vector3d(0, length/2, 0);        cylinderTrans.setTranslation(cylinderLocation);        TransformGroup cylinderG = new TransformGroup(cylinderTrans);        cylinderG.addChild(axis);        axisTG.addChild(cylinderG);        Primitive arrow = new Cone(1.5f * diameter, (float)length/3, app);        Vector3d coneLocation = new Vector3d(0, length, 0);        coneTrans.setTranslation(coneLocation);        TransformGroup coneG = new TransformGroup(coneTrans);        coneG.addChild(arrow);        axisTG.addChild(coneG);                // Adding the text	    Text3D axisText = new Text3D(font3D, text);	    Shape3D axisLabel = new Shape3D(axisText, app);	    Transform3D textScale = new Transform3D();	    textScale.set(0.015);	    textScale.setTranslation(new Vector3d(0, 0.11, 0.0));	    TransformGroup axisLabelG = new TransformGroup(textScale);	    axisLabelG.addChild(axisLabel);	    axisTG.addChild(axisLabelG);        // Adding finally to the group        addChild(axisTG);    }	public J3DAxis(double factor, Appearance xApp, Appearance yApp, Appearance zApp,                   String defaultFont)    {        if (font3D == null)            font3D = new Font3D(new Font(defaultFont, Font.PLAIN, 2),                     new FontExtrusion());        createAxis(factor, axisX, xApp, "+X");        createAxis(factor, axisY, yApp, "+Y");        createAxis(factor, axisZ, zApp, "+Z");	}}

⌨️ 快捷键说明

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