mil.navy.nps.rra
Class Surface

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

public class Surface
extends java.lang.Object

Simulates the acoustical reflection and absorption characteristics of the ocean's surface. Surface is simulated as a pressure-release surface with no roughness

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 reflections, 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 also to reflect any Rays that have penetrated. Since the surface is being approximated (to a good degree of accuracy) as a perfect pressure release surface, any wave striking it will have a 180 degree phase shift and a reflection coefficient of one. No effects due to wind or waves are yet included.

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/Surface.java
http://devo.stl.nps.navy.mil/~brutzman/vrtp/mil/navy/nps/rra/Surface.java

Hierarchy Diagram     Coordinate Systems

History:
8 Nov 97 Timothy M. Holliday New
18 Mar 98 Timothy M. Holliday Added HTML comment convention
16 Oct 98 Don Brutzman Javadoc updates for jdk1.2b4
25 April 99 Don Brutzman Javadoc updates for jdk1.2.1

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:
Bottom

Constructor Summary
Surface(java.lang.String surfaceType)
          The surfaceType argument currently has one choice: "smooth" indicating a perfect pressure-release surface.
 
Method Summary
static boolean getAppendLineFeed()
          This is a static method that returns the current line appendage.
 java.lang.String getVRMLSurface()
          This method returns a VRML string representing the Surface of the ocean.
 boolean hasIntersected(Vec3d Pos)
          This procedure checks to see if the ray path has crossed the surface 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 at the surface of the ocean.
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.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Surface

public Surface(java.lang.String surfaceType)
The surfaceType argument currently has one choice: "smooth" indicating a perfect pressure-release surface.
Method Detail

hasIntersected

public boolean hasIntersected(Vec3d Pos)
This procedure checks to see if the ray path has crossed the surface 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 at the surface of the ocean.

getVRMLSurface

public java.lang.String getVRMLSurface()
This method returns a VRML string representing the Surface of the ocean.

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.