mil.navy.nps.rra
Class Bottom

java.lang.Object
  |
  +--mil.navy.nps.rra.Bottom

public class Bottom
extends java.lang.Object

Simulates the acoustic characteristics of reflection, absorption and geometry for the ocean bottom. Currently only a rigid bottom is modeled.

Since a ray is the normal vector to a plane wave, rays interact with surfaces the same way that plane waves do. Rays obey Snell's law and the equations of reflection and transmission of wave energy. This model uses vector algebra to determine when the end of a ray has passed through the bottom and to reflect any rays that have penetrated.

Beams of energy can be considered to consist of bundles of sound rays. The energy in a bundle can be shown not to diverge from the bundle. Thus the energy in a bundle is constant, and subsequently the product of the intensity versus the area of the bundle perpendicular to direction of propagation is a constant as well. Therefore a beam is a fundamental building block for constructing a multiple-beam Lobe of a sonar pattern.

Version:
1.0

Author:
LT Timothy M. Holliday USN

Contact: Don Brutzman (web.nps.navy.mil/~brutzman) brutzman@nps.navy.mil

Source Code:
~/vrtp/mil/navy/nps/rra/Bottom.java
http://devo.stl.nps.navy.mil/~brutzman/vrtp/mil/navy/nps/rra/Bottom.java

Hierarchy Diagram     Coordinate Systems

History:
8 November 97 Timothy M. Holliday New
18 March 98 Timothy M. Holliday Added HTML comment convention
16 October 98 Don Brutzman Javadoc updates for jdk1.2b4
25 April 99 Don Brutzman Javadoc updates for jdk1.2.1, revised some method names to match get/set naming convention.

Reference:
Holliday, Timothy, Real-Time 3D Sonar Modeling and Visualization, Master's Thesis, Naval Postgraduate School, Monterey California, June 1998. Available at vrtp/rra/HollidayRRAthesis.pdf. and devo.stl.nps.navy.mil/~brutzman/vrtp/rra/HollidayRRAthesis.pdf. Slideset available in Powerpoint and Acrobat .pdf formats.

See Also:
Surface

Constructor Summary
Bottom(java.lang.String bottomType, double depth)
          Constructor for the bottom class has two choices for the bottom type: "noslope" and "slope" (depth only applies to "noslope" case).
 
Method Summary
 double depth(double x, double z)
          This method returns the bottom depth at the given (x,z) coordinate (expressed in the Ziomek Coordinate System).
static boolean getAppendLineFeed()
          This is a static method that returns the current line appendage.
 java.lang.String getVRMLBottom()
          This method returns the VRML string representing the bottom of the ocean.
 boolean hasIntersected(Vec3d Pos)
          This procedure checks to see if the ray path has crossed the bottom during the current time step and returns true if it did.
 double reflect(Vec3d Pos, Vec3d normal)
          This method causes a Snell's Law reflection to occur.
static void setAppendLineFeed(boolean pAppendLineFeed)
          This is a static method used to indicate whether a line feed is desired at the end of every line.
 java.lang.String VRMLScales()
          This method applies scales to the VRML bottom for the x, y and z directions.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Bottom

public Bottom(java.lang.String bottomType,
              double depth)
Constructor for the bottom class has two choices for the bottom type: "noslope" and "slope" (depth only applies to "noslope" case). The first choice is a flat horizontal bottom and the second is a flat horizontal bottom with a steeply rising shelf and a gentle slope to shore. The second argument applies only to the "noslope" case and is the depth of the bottom.
Method Detail

hasIntersected

public boolean hasIntersected(Vec3d Pos)
This procedure checks to see if the ray path has crossed the bottom during the current time step and returns true if it did.

reflect

public double reflect(Vec3d Pos,
                      Vec3d normal)
This method causes a Snell's Law reflection to occur.

depth

public double depth(double x,
                    double z)
This method returns the bottom depth at the given (x,z) coordinate (expressed in the Ziomek Coordinate System).

getVRMLBottom

public java.lang.String getVRMLBottom()
This method returns the VRML string representing the bottom of the ocean.

VRMLScales

public java.lang.String VRMLScales()
This method applies scales to the VRML bottom for the x, y and z directions.

setAppendLineFeed

public static void setAppendLineFeed(boolean pAppendLineFeed)
This is a static method used to indicate whether a line feed is desired at the end of every line. 'true' indicates a linefeed is desired and 'false' indicates that a space is desired"

getAppendLineFeed

public static boolean getAppendLineFeed()
This is a static method that returns the current line appendage.