📄 orientedshape3d.java
字号:
} /** * Retrieves the alignment mode. * * @return 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 int getAlignmentMode() { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_MODE_READ)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D1")); return((OrientedShape3DRetained)retained).getAlignmentMode(); } /** * Sets the new alignment axis. This is the ray about which this * OrientedShape3D rotates when the mode is ROTATE_ABOUT_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 axis the new alignment axis * * @exception CapabilityNotSetException if appropriate capability is * not set and this object is part of live or compiled scene graph */ public void setAlignmentAxis(Vector3f axis) { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_AXIS_WRITE)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D2")); if (isLive()) ((OrientedShape3DRetained)retained).setAlignmentAxis(axis); else ((OrientedShape3DRetained)retained).initAlignmentAxis(axis); } /** * Sets the new alignment axis. This is the ray about which this * OrientedShape3D rotates when the mode is ROTATE_ABOUT_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 x the x component of the alignment axis * @param y the y component of the alignment axis * @param z the z component of the alignment axis * * @exception CapabilityNotSetException if appropriate capability is * not set and this object is part of live or compiled scene graph */ public void setAlignmentAxis(float x, float y, float z) { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_AXIS_WRITE)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D2")); if (isLive()) ((OrientedShape3DRetained)retained).setAlignmentAxis(x,y,z); else ((OrientedShape3DRetained)retained).initAlignmentAxis(x,y,z); } /** * Retrieves the alignment axis of this OrientedShape3D node, * and copies it into the specified vector. * * @param axis the vector that will contain the alignment axis * * @exception CapabilityNotSetException if appropriate capability is * not set and this object is part of live or compiled scene graph */ public void getAlignmentAxis(Vector3f axis) { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_AXIS_READ)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D3")); ((OrientedShape3DRetained)retained).getAlignmentAxis(axis); } /** * Sets the new rotation point. This is the point about which the * OrientedShape3D rotates when the mode is ROTATE_ABOUT_POINT. * * @param point the new rotation point * * @exception CapabilityNotSetException if appropriate capability is * not set and this object is part of live or compiled scene graph */ public void setRotationPoint(Point3f point) { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_POINT_WRITE)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D4")); if (isLive()) ((OrientedShape3DRetained)retained).setRotationPoint(point); else ((OrientedShape3DRetained)retained).initRotationPoint(point); } /** * Sets the new rotation point. This is the point about which the * OrientedShape3D rotates when the mode is ROTATE_ABOUT_POINT. * * @param x the x component of the rotation point * @param y the y component of the rotation point * @param z the z component of the rotation point * * @exception CapabilityNotSetException if appropriate capability is * not set and this object is part of live or compiled scene graph */ public void setRotationPoint(float x, float y, float z) { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_POINT_WRITE)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D4")); if (isLive()) ((OrientedShape3DRetained)retained).setRotationPoint(x,y,z); else ((OrientedShape3DRetained)retained).initRotationPoint(x,y,z); } /** * Retrieves the rotation point of this OrientedShape3D node, * and copies it into the specified vector. * * @param point the point that will contain the rotation point * * @exception CapabilityNotSetException if appropriate capability is * not set and this object is part of live or compiled scene graph */ public void getRotationPoint(Point3f point) { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_POINT_READ)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D5")); ((OrientedShape3DRetained)retained).getRotationPoint(point); } /** * Sets the constant scale enable flag. * * @param constantScaleEnable a flag indicating whether to enable * constant scale * * @exception CapabilityNotSetException if appropriate capability is * not set and this object is part of live or compiled scene graph * * @since Java 3D 1.3 */ public void setConstantScaleEnable(boolean constantScaleEnable) { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_SCALE_WRITE)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D6")); if (isLive()) ((OrientedShape3DRetained)retained). setConstantScaleEnable(constantScaleEnable); else ((OrientedShape3DRetained)retained). initConstantScaleEnable(constantScaleEnable); } /** * Retrieves the constant scale enable flag. * * @return the current constant scale enable flag * * @exception CapabilityNotSetException if appropriate capability is * not set and this object is part of live or compiled scene graph * * @since Java 3D 1.3 */ public boolean getConstantScaleEnable() { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_SCALE_READ)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D7")); return ((OrientedShape3DRetained)retained).getConstantScaleEnable(); } /** * Sets the scale for this OrientedShape3D. This scale is used when * the constant scale enable flag is set to true. * * @param scale the scale value * * @exception CapabilityNotSetException if appropriate capability is * not set and this object is part of live or compiled scene graph * * @since Java 3D 1.3 */ public void setScale(double scale) { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_SCALE_WRITE)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D8")); if (isLive()) ((OrientedShape3DRetained)retained).setScale(scale); else ((OrientedShape3DRetained)retained).initScale(scale); } /** * Retrieves the scale value for this OrientedShape3D. * * @return the current scale value * * @exception CapabilityNotSetException if appropriate capability is * not set and this object is part of live or compiled scene graph * * @since Java 3D 1.3 */ public double getScale() { if (isLiveOrCompiled()) if (!this.getCapability(ALLOW_SCALE_READ)) throw new CapabilityNotSetException(J3dI18N.getString("OrientedShape3D9")); return ((OrientedShape3DRetained)retained).getScale(); } /** * Used to create a new instance of the node. This routine is called * by <code>cloneTree</code> to duplicate the current node. * <code>cloneNode</code> should be overridden by any user subclassed * objects. All subclasses must have their <code>cloneNode</code> * method consist of the following lines: * <P><blockquote><pre> * public Node cloneNode(boolean forceDuplicate) { * UserSubClass usc = new UserSubClass(); * usc.duplicateNode(this, forceDuplicate); * return usc; * } * </pre></blockquote> * @param forceDuplicate when set to <code>true</code>, causes the * <code>duplicateOnCloneTree</code> flag to be ignored. When * <code>false</code>, the value of each node's * <code>duplicateOnCloneTree</code> variable determines whether * NodeComponent data is duplicated or copied. * * @see Node#cloneTree * @see Node#duplicateNode * @see NodeComponent#setDuplicateOnCloneTree */ public Node cloneNode(boolean forceDuplicate) { OrientedShape3D s = new OrientedShape3D(); s.duplicateNode(this, forceDuplicate); return s; } /** * Copies all node information from <code>originalNode</code> into * the current node. This method is called from the * <code>cloneNode</code> method which is, in turn, called by the * <code>cloneTree</code> method. * <P> * For any <code>NodeComponent</code> objects * contained by the object being duplicated, each <code>NodeComponent</code> * object's <code>duplicateOnCloneTree</code> value is used to determine * whether the <code>NodeComponent</code> should be duplicated in the new node * or if just a reference to the current node should be placed in the * new node. This flag can be overridden by setting the * <code>forceDuplicate</code> parameter in the <code>cloneTree</code> * method to <code>true</code>. * <br> * NOTE: Applications should <i>not</i> call this method directly. * It should only be called by the cloneNode method. * * @param originalNode the original node to duplicate. * @param forceDuplicate when set to <code>true</code>, causes the * <code>duplicateOnCloneTree</code> flag to be ignored. When * <code>false</code>, the value of each node's * <code>duplicateOnCloneTree</code> variable determines whether * NodeComponent data is duplicated or copied. * @exception ClassCastException if originalNode is not an instance of * <code>Shape3D</code> * * @see Node#cloneTree * @see Node#cloneNode * @see NodeComponent#setDuplicateOnCloneTree */ public void duplicateNode(Node originalNode, boolean forceDuplicate) { checkDuplicateNode(originalNode, forceDuplicate); } /** * Copies all Shape3D information from * <code>originalNode</code> into * the current node. This method is called from the * <code>cloneNode</code> method which is, in turn, called by the * <code>cloneTree</code> method.<P> * * @param originalNode the original node to duplicate. * @param forceDuplicate when set to <code>true</code>, causes the * <code>duplicateOnCloneTree</code> flag to be ignored. When * <code>false</code>, the value of each node's * <code>duplicateOnCloneTree</code> variable determines whether * NodeComponent data is duplicated or copied. * * @exception RestrictedAccessException if this object is part of a live * or compiled scenegraph. * * @see Node#duplicateNode * @see Node#cloneTree * @see NodeComponent#setDuplicateOnCloneTree */ void duplicateAttributes(Node originalNode, boolean forceDuplicate) { super.duplicateAttributes(originalNode, forceDuplicate); OrientedShape3DRetained attr = (OrientedShape3DRetained) originalNode.retained; OrientedShape3DRetained rt = (OrientedShape3DRetained) retained; rt.setAlignmentMode(attr.getAlignmentMode()); Vector3f axis = new Vector3f(); attr.getAlignmentAxis(axis); rt.setAlignmentAxis(axis); Point3f point = new Point3f(); attr.getRotationPoint(point); rt.setRotationPoint(point); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -