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

📄 orientedshape3d.java

📁 JAVA3D矩陈的相关类
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * $RCSfile: OrientedShape3D.java,v $ * * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. * * Use is subject to license terms. * * $Revision: 1.6 $ * $Date: 2007/02/09 17:18:13 $ * $State: Exp $ */package javax.media.j3d;import javax.vecmath.*;/** * The OrientedShape3D leaf node is a Shape3D node that is oriented * along a specified axis or about a specified point.  It defines an * alignment mode and a rotation point or axis.  This will cause * the local +<i>z</i> axis of the object to point at the viewer's eye * position. This is done regardless of the transforms above this * OrientedShape3D node in the scene graph.  It optionally defines a * scale value along with a constant scale enable flag that causes * this node to be scale invariant, subject only to its scale. * * <p> * OrientedShape3D is similar in functionality to the Billboard * behavior, but OrientedShape3D nodes will orient themselves * correctly for each view, and they can be used within a SharedGroup. * * <p> * If the alignment mode is ROTATE_ABOUT_AXIS, then the rotation will be * around the specified axis.  If the alignment mode is * ROTATE_ABOUT_POINT, then the rotation will be about the specified * point, with an additional rotation to align the +<i>y</i> axis of the * TransformGroup with the +<i>y</i> axis in the View. * * <p> * If the constant scale enable flag is set, the object will be drawn * the same size in absolute screen coordinates (meters), regardless * of the following: any transforms above this OrientedShape3D node in * the scene graph, the view scale, the window scale, or the effects * of perspective correction.  This is done by scaling the geometry * about the local origin of this node, such that 1 unit in local * coordinates is equal to the number of meters specified by this * node's scale value.  If the constant scale enable flag is set to * false, then the scale is not used.  The default scale is 1.0 * meters. * * <p> * OrientedShape3D nodes are ideal for drawing screen-aligned text or * for drawing roughly-symmetrical objects.  A typical use might * consist of a quadrilateral that contains a texture of a tree. * * <p> * Note that in a multiple View system, picking and interestion test  * is done with the primary View only. * * @see Billboard * * @since Java 3D 1.2 */public class OrientedShape3D extends Shape3D {    /**     * Specifies that rotation should be about the specified axis.     * @see #setAlignmentMode     */    public static final int ROTATE_ABOUT_AXIS = 0;    /**     * Specifies that rotation should be about the specified point and     * that the children's Y-axis should match the view object's Y-axis.     * @see #setAlignmentMode     */    public static final int ROTATE_ABOUT_POINT = 1;    /**     * Specifies that no rotation is done.  The OrientedShape3D will     * not be aligned to the view.     * @see #setAlignmentMode     *     * @since Java 3D 1.3     */    public static final int ROTATE_NONE = 2;    /**     * Specifies that this OrientedShape3D node     * allows reading its alignment mode information.     */    public static final int ALLOW_MODE_READ =	CapabilityBits.ORIENTED_SHAPE3D_ALLOW_MODE_READ;    /**     * Specifies that this OrientedShape3D node     * allows writing its alignment mode information.     */    public static final int ALLOW_MODE_WRITE =	CapabilityBits.ORIENTED_SHAPE3D_ALLOW_MODE_WRITE;    /**     * Specifies that this OrientedShape3D node     * allows reading its alignment axis information.     */    public static final int ALLOW_AXIS_READ =	CapabilityBits.ORIENTED_SHAPE3D_ALLOW_AXIS_READ;    /**     * Specifies that this OrientedShape3D node     * allows writing its alignment axis information.     */    public static final int ALLOW_AXIS_WRITE =	CapabilityBits.ORIENTED_SHAPE3D_ALLOW_AXIS_WRITE;    /**     * Specifies that this OrientedShape3D node     * allows reading its rotation point information.     */    public static final int ALLOW_POINT_READ =	CapabilityBits.ORIENTED_SHAPE3D_ALLOW_POINT_READ;    /**     * Specifies that this OrientedShape3D node     * allows writing its rotation point information.     */    public static final int ALLOW_POINT_WRITE =	CapabilityBits.ORIENTED_SHAPE3D_ALLOW_POINT_WRITE;    /**     * Specifies that this OrientedShape3D node     * allows reading its scale and constant scale enable information.     *     * @since Java 3D 1.3     */    public static final int ALLOW_SCALE_READ =	CapabilityBits.ORIENTED_SHAPE3D_ALLOW_SCALE_READ;    /**     * Specifies that this OrientedShape3D node     * allows writing its scale and constant scale enable information.     *     * @since Java 3D 1.3     */    public static final int ALLOW_SCALE_WRITE =	CapabilityBits.ORIENTED_SHAPE3D_ALLOW_SCALE_WRITE;   // Array for setting default read capabilities    private static final int[] readCapabilities = {	ALLOW_MODE_READ,	ALLOW_AXIS_READ,	ALLOW_POINT_READ,	ALLOW_SCALE_READ    };    /**     * Constructs an OrientedShape3D node with default parameters.     * The default values are as follows:     * <ul>     * alignment mode : ROTATE_ABOUT_AXIS<br>     * alignment axis : Y-axis (0,1,0)<br>     * rotation point : (0,0,1)<br>     * constant scale enable : false<br>     * scale : 1.0<br>     *</ul>     */    public OrientedShape3D() {	super();        // set default read capabilities        setDefaultReadCapabilities(readCapabilities);    }    /**     * Constructs an OrientedShape3D node with the specified geometry     * component, appearance component, mode, and axis.     * The specified axis must not be parallel to the <i>Z</i>     * axis--(0,0,<i>z</i>) for any value of <i>z</i>.  It is not     * possible for the +<i>Z</i> axis to point at the viewer's eye     * position by rotating about itself.  The target transform will     * be set to the identity if the axis is (0,0,<i>z</i>).     *     * @param geometry the geometry component with which to initialize     * this shape node     * @param appearance the appearance component of the shape node     * @param mode alignment mode, one of: ROTATE_ABOUT_AXIS,     * ROTATE_ABOUT_POINT, or ROTATE_NONE     * @param axis the ray about which the OrientedShape3D rotates     */    public OrientedShape3D(Geometry geometry,			   Appearance appearance,			   int mode,			   Vector3f axis) {	super(geometry, appearance);        // set default read capabilities        setDefaultReadCapabilities(readCapabilities);        ((OrientedShape3DRetained)retained).initAlignmentMode(mode);        ((OrientedShape3DRetained)retained).initAlignmentAxis(axis);    }    /**     * Constructs an OrientedShape3D node with the specified geometry     * component, appearance component, mode, and rotation point.     *     * @param geometry the geometry component with which to initialize     * this shape node     * @param appearance the appearance component of the shape node     * @param mode alignment mode, one of: ROTATE_ABOUT_AXIS,     * ROTATE_ABOUT_POINT, or ROTATE_NONE     * @param point the position about which the OrientedShape3D rotates     */    public OrientedShape3D(Geometry geometry,			   Appearance appearance,			   int mode,			   Point3f point) {	super(geometry, appearance);        // set default read capabilities        setDefaultReadCapabilities(readCapabilities);        ((OrientedShape3DRetained)retained).initAlignmentMode(mode);        ((OrientedShape3DRetained)retained).initRotationPoint(point);    }    /**     * Constructs an OrientedShape3D node with the specified geometry     * component, appearance component, mode, axis, constant scale     * enable flag, and scale     * The specified axis must not be parallel to the <i>Z</i>     * axis--(0,0,<i>z</i>) for any value of <i>z</i>.  It is not     * possible for the +<i>Z</i> axis to point at the viewer's eye     * position by rotating about itself.  The target transform will     * be set to the identity if the axis is (0,0,<i>z</i>).     *     * @param geometry the geometry component with which to initialize     * this shape node     * @param appearance the appearance component of the shape node     * @param mode alignment mode, one of: ROTATE_ABOUT_AXIS,     * ROTATE_ABOUT_POINT, or ROTATE_NONE     * @param axis the ray about which the OrientedShape3D rotates     * @param constantScaleEnable a flag indicating whether to enable     * constant scale     * @param scale scale value used when constant scale is enabled     *     * @since Java 3D 1.3     */    public OrientedShape3D(Geometry geometry,			   Appearance appearance,			   int mode,			   Vector3f axis,			   boolean constantScaleEnable,			   double scale) {	super(geometry, appearance);        // set default read capabilities        setDefaultReadCapabilities(readCapabilities);        ((OrientedShape3DRetained)retained).initAlignmentMode(mode);        ((OrientedShape3DRetained)retained).initAlignmentAxis(axis);        ((OrientedShape3DRetained)retained).	    initConstantScaleEnable(constantScaleEnable);        ((OrientedShape3DRetained)retained).initScale(scale);    }    /**     * Constructs an OrientedShape3D node with the specified geometry     * component, appearance component, mode, and rotation point.     *     * @param geometry the geometry component with which to initialize     * this shape node     * @param appearance the appearance component of the shape node     * @param mode alignment mode, one of: ROTATE_ABOUT_AXIS,     * ROTATE_ABOUT_POINT, or ROTATE_NONE     * @param point the position about which the OrientedShape3D rotates     * @param constantScaleEnable a flag indicating whether to enable     * constant scale     * @param scale scale value used when constant scale is enabled     *     * @since Java 3D 1.3     */    public OrientedShape3D(Geometry geometry,			   Appearance appearance,			   int mode,			   Point3f point,			   boolean constantScaleEnable,			   double scale) {	super(geometry, appearance);        // set default read capabilities        setDefaultReadCapabilities(readCapabilities);        ((OrientedShape3DRetained)retained).initAlignmentMode(mode);        ((OrientedShape3DRetained)retained).initRotationPoint(point);        ((OrientedShape3DRetained)retained).	    initConstantScaleEnable(constantScaleEnable);        ((OrientedShape3DRetained)retained).initScale(scale);    }    /**     * Creates the retained mode OrientedShape3DRetained object that this     * OrientedShape3D object will point to.     */    void createRetained() {        retained = new OrientedShape3DRetained();        retained.setSource(this);    }    /**     * Sets the alignment mode.     *     * @param mode alignment mode, one of: ROTATE_ABOUT_AXIS,     * ROTATE_ABOUT_POINT, or ROTATE_NONE     *     * @exception CapabilityNotSetException if appropriate capability is      * not set and this object is part of live or compiled scene graph     */    public void setAlignmentMode(int mode) {        if (isLiveOrCompiled())            if (!this.getCapability(ALLOW_MODE_WRITE))                throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D0"));        if (isLive())            ((OrientedShape3DRetained)retained).setAlignmentMode(mode);	else            ((OrientedShape3DRetained)retained).initAlignmentMode(mode);

⌨️ 快捷键说明

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