Class Speed3d

java.lang.Object
org.opentrafficsim.core.math.Speed3d
All Implemented Interfaces:
Serializable

public class Speed3d extends Object implements Serializable
A 3D speed vector, decomposed in X, Y, and Z-speed with easy conversion from and to a spherical coordinate system.
Physicists and mathematicians do not agree on the meaning of theta and phi. In this class the convention in the physics domain is used:
  • theta is the angle from the z direction.
  • phi is the projected angle in the xy-plane from the x direction.
N.B. In the geography domain yet another convention is used.

Copyright (c) 2013-2023 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.

Author:
Alexander Verbraeck, Peter Knoppers
See Also:
  • Constructor Details

    • Speed3d

      public Speed3d(SpeedVector speed) throws ValueRuntimeException
      Construct a new Speed3d from vector of strongly typed Cartesian coordinates.
      Parameters:
      speed - SpeedVector; the speeds in 3D (YPR coded)
      Throws:
      ValueRuntimeException - in case the vector does not have exactly three elements
    • Speed3d

      public Speed3d(Speed x, Speed y, Speed z) throws ValueRuntimeException
      Construct a new Speed3d from three strongly typed Cartesian coordinates.
      Parameters:
      x - Speed; the speed in the x-direction
      y - Speed; the speed in the y-direction
      z - Speed; the speed in the z-direction
      Throws:
      ValueRuntimeException - in case the units are incorrect
    • Speed3d

      public Speed3d(double x, double y, double z, SpeedUnit unit) throws ValueRuntimeException
      Construct a new Speed3d from three double Cartesian coordinates and a speed unit.
      Parameters:
      x - double; the speed in the x-direction
      y - double; the speed in the y-direction
      z - double; the speed in the z-direction
      unit - SpeedUnit; the unit of the xyz parameters
      Throws:
      ValueRuntimeException - in case the units are incorrect
    • Speed3d

      public Speed3d(Speed speed, Direction theta, Direction phi) throws ValueRuntimeException
      Construct a new Speed3d from a strongly typed speed and polar coordinates.
      Parameters:
      speed - Speed; the speed in the direction of the angle along the vector
      theta - Direction; the angle from the z direction
      phi - Direction; the projected angle in the xy-plane from the x direction
      Throws:
      ValueRuntimeException - in case the vector does not have exactly three elements
  • Method Details

    • getX

      public final Speed getX()
      Retrieve the x-component of this Speed3d.
      Returns:
      the speed in the x-direction.
    • getY

      public final Speed getY()
      Retrieve the y-component of this Speed3d.
      Returns:
      the speed in the y-direction.
    • getZ

      public final Speed getZ()
      Retrieve the z-component of this Speed3d.
      Returns:
      the speed in the z-direction.
    • getTheta

      public final Direction getTheta()
      Retrieve the theta of this Speed3d.
      Returns:
      the angle of direction perpendicular to the xy-plane
    • getPhi

      public final Direction getPhi()
      Retrieve the phi of this Speed3d.
      Returns:
      the projected angle of direction in the xy-plane
    • getSpeed

      public final Speed getSpeed()
      Retrieve the norm of this Speed3d.
      Returns:
      the combined speed in the direction of the angle
    • toString

      public final String toString()
      Overrides:
      toString in class Object