Class SFRotation

java.lang.Object
org.web3d.x3d.jsail.fields.X3DConcreteField
org.web3d.x3d.jsail.fields.SFRotation
All Implemented Interfaces:
SFRotation, X3DField

public class SFRotation extends X3DConcreteField implements SFRotation
This utility class provides a concrete implementation corresponding to SFRotation X3D field type.

Warning: this is an abstract interface that cannot be instantiated as a concrete object. Java programmers typically only need to use concrete objects provided by the org.web3d.x3d.jsail classes.
Package hint: This specification class is defined by the X3D Java Language Binding Specification for the Scene Authoring Interface (SAI). SFRotation is an axis-angle 4-tuple, indicating X-Y-Z direction axis plus angle orientation about that axis. The first three values specify a normalized axis vector about which the rotation takes place, so the first three values shall be within the range [-1..+1] in order to represent a normalized unit vector. The fourth value specifies the amount of right-handed rotation about that axis in radians. Warning: comma characters within singleton values do not pass strict XML validation.

Related field object: MFRotation
See Also:
  • Field Details

  • Constructor Details

    • SFRotation

      public SFRotation()
      Constructor for SFRotation performs value initialization.
    • SFRotation

      public SFRotation(SFRotation newValue)
      Constructor to copy an SFRotation value as initial value for this new field object.
      Parameters:
      newValue - The newValue to apply
    • SFRotation

      public SFRotation(float[] newValue)
      Constructor for SFRotation using a corresponding Java primitive float[] array as new initial value.
      Parameters:
      newValue - is new value to assign Warning: newValue array length must correspond to tuple size for base type SFRotation tuple size of 4. setContainerFieldOverride(containerFieldName); // apply checksConcreteField#getTupleSize(String)
    • SFRotation

      public SFRotation(float x, float y, float z, float angleRadians)
      Constructor using individual float types as new initial axis-angle value. Warning: angle must be in radians, if necessary use degreesToRadians(float)
      Parameters:
      x - first component of axis
      y - second component of axis
      z - third component of axis
      angleRadians - fourth component of rotation around axis
    • SFRotation

      public SFRotation(double x, double y, double z, double angleRadians)
      Constructor using individual double types as new initial axis-angle value. Warning: angle must be in radians, if necessary use degreesToRadians(float)
      Parameters:
      x - first component of axis
      y - second component of axis
      z - third component of axis
      angleRadians - fourth component of rotation around axis
    • SFRotation

      public SFRotation(int x, int y, int z, float angleRadians)
      Constructor using individual integer types as new initial axis, along with float angle value. Warning: angle must be in radians, if necessary use degreesToRadians(float)
      Parameters:
      x - first component of axis
      y - second component of axis
      z - third component of axis
      angleRadians - fourth component of rotation around axis
    • SFRotation

      public SFRotation(double[] newValue)
      Utility constructor for SFRotation using an alternatively typed Java double[] array as new initial value.
      Parameters:
      newValue - is new value to assign
  • Method Details

    • isArray

      public static final boolean isArray()
      Whether or not this field type is an array (false)
      Returns:
      true if array type
    • initialize

      public final void initialize()
      Initialization for SFRotation applies default initial value. Static initializer also provided to verify that the regex pattern compiles and matches that default value.
      Specified by:
      initialize in class X3DConcreteField
      See Also:
    • equals

      public boolean equals(SFRotation comparisonSFRotation)
      Determine whether two objects contain equal values.
      Parameters:
      comparisonSFRotation - field type to compare
      Returns:
      true if equivalent, false otherwise
    • validate

      public final String validate()
      Validate current value via get/set comparison tests
      Returns:
      empty string if get/set testing passes, warning otherwise
      See Also:
    • validateRegex

      public final String validateRegex()
      Validate current value via regular expression (regex) check of current object's toString() value, reporting errors only if found.
      Returns:
      empty string if PATTERN matches, warning otherwise
      See Also:
    • matches

      public final boolean matches()
      Test PATTERN match via regular expression (regex) check of current object's toString() value.
      Returns:
      true if PATTERN matches, false otherwise
      See Also:
    • matches

      public static final boolean matches(String value)
      Test PATTERN match with regular expression (regex) of provided value.
      Parameters:
      value - String to check against regex pattern for successful match
      Returns:
      true if PATTERN matches, false otherwise
      See Also:
    • setValueByString

      public SFRotation setValueByString(String newValue) throws InvalidFieldValueException
      Utility accessor for SFRotation using String value (which must pass parsing validation checks).

      Warning: this method is not type safe at compile time! Best practice for X3DJSAIL programmers is to use strongly typed methods instead, in order to avoid potential for run-time errors.
      Parameters:
      newValue - is new value to assign, if empty then assign DEFAULT_VALUE
      Returns:
      MFMatrix4d - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same node object).
      Throws:
      InvalidFieldValueException
      See Also:
    • degreesToRadians

      public static float degreesToRadians(float angleDegrees)
      Utility method converting degrees to radians.
      Parameters:
      angleDegrees - value to convert
      Returns:
      angle value in radians
    • degreesToRadians

      public static float degreesToRadians(int angleDegrees)
      Utility method converting degrees to radians.
      Parameters:
      angleDegrees - value to convert
      Returns:
      angle value in radians
    • degreesToRadians

      public static float degreesToRadians(double angleDegrees)
      Utility method converting degrees to radians.
      Parameters:
      angleDegrees - value to convert
      Returns:
      angle value in radians
    • radiansToDegrees

      public static float radiansToDegrees(float angleRadians)
      Utility method converting radians to degrees.
      Parameters:
      angleRadians - value to convert
      Returns:
      angle value in degrees
    • radiansToDegrees

      public static float radiansToDegrees(double angleRadians)
      Utility method converting radians to degrees.
      Parameters:
      angleRadians - value to convert
      Returns:
      angle value in degrees
    • normalize

      public SFRotation normalize()
      Utility method to normalize this rotation value: unit length for axis-angle vector, angle in range [0-2pi] radians, rotation with zero-length axis is reset to DEFAULT_VALUE.
      Returns:
      SFRotation - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • setValue

      public SFRotation setValue(float x, float y, float z, float angleRadians)
      Assign a new value to this field. Warning: angle must be in radians, if necessary use degreesToRadians(float)
      Parameters:
      x - first component of axis
      y - second component of axis
      z - third component of axis
      angleRadians - fourth component of rotation around axis
      Returns:
      SFRotation - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • setValue

      public SFRotation setValue(double x, double y, double z, double angleRadians)
      Assign a new value to this field. Warning: angle must be in radians, if necessary use degreesToRadians(float)
      Parameters:
      x - first component of axis
      y - second component of axis
      z - third component of axis
      angleRadians - fourth component of rotation around axis
      Returns:
      SFRotation - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • setValue

      public SFRotation setValue(double[] newValue)
      Assign a new value to this field. Warning: newValue array length must correspond to tuple size for base type SFRotation tuple size of 4.
      Parameters:
      newValue - The replacement value to assign.
      Returns:
      SFRotation - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      See Also:
    • toString

      public static String toString(float[] value)
      Static utility method to provide String representation of a correctly typed input value.
      Parameters:
      value - The value to convert to a String
      Returns:
      String version of the provided value, with trailing zeroes and decimal points omitted.
      See Also:
    • getValue

      public void getValue(float[] valueDestination)
      Get the current value of this SFRotation by copying it into the valueDestination array, leaving the current object unchanged.
      Specified by:
      getValue in interface SFRotation
      Parameters:
      valueDestination - The array to be filled in with current field values.
    • getPrimitiveValue

      public float[] getPrimitiveValue()
      Provides current value of the field as a Java primitive type.
      Returns:
      current value
    • toString

      public String toString()
      Provides current value as a String.
      Overrides:
      toString in class Object
      Returns:
      String version of the provided value, with trailing zeroes and decimal points omitted.
      See Also:
    • setValue

      public void setValue(float[] newValue)
      Assign a new value to this field. Warning: newValue array length must correspond to tuple size for base type SFRotation tuple size of 4.
      Specified by:
      setValue in interface SFRotation
      Parameters:
      newValue - The replacement value to assign.
      See Also:
    • setValueArray

      public SFRotation setValueArray(float[] newValue)
      Assign a new array value to this field, pipelined. This is an alternate utility method since primary method returns void and cannot be overridden. Warning: newValue array length must correspond to tuple size for base type SFRotation tuple size of 4.
      Parameters:
      newValue - The replacement value to assign.
      Returns:
      SFRotation - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      See Also:
    • toFloatArray

      public float[] toFloatArray()
      Provide float array for this field type.
      Returns:
      Array of floats in this field array.
    • setValue

      public SFRotation setValue(SFRotation newValue)
      Apply an SFRotation value to this field.
      Parameters:
      newValue - The newValue to apply
      Returns:
      SFRotation - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
    • isDefaultValue

      public boolean isDefaultValue()
      Determine whether current value matches DEFAULT_VALUE
      Returns:
      whether current value matches DEFAULT_VALUE
      See Also: