mil.navy.nps.rra
Class Targets

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

public class Targets
extends java.lang.Object

This class provides methods for random target generation, tracking updates to the dead-reckoned positions of targets, and detecting whether a sonar ping has collided with any of the Targets.

As acoustic waves traverse the ocean environment, they can impinge on objects. The bottom and suface are boundary constraints on the extent of the water column, and as such they are handled in special classes by themselves. All other objects in the water column can be considered detection targets. When sonar hits an underwater target, energy is scattered back from the target in a mainly isotropic manner. This scattered energy is what returns to the sending sonar, revealing the presence and location of the target.

In this simulation, the distance between targets and sonar is determined by means of a vector algebra calculation. Specifically, the plane containing the front of the wave front is compared to the distance of the target away from the plane. When this easily computed distance changes sign, there is a possibility that the sonar pulse has intersected the object. Higher-resolution checks are then performed to verify whether or not a detection event has occurred. This two-step process keeps the calculations computationally tractable. Detection results are made available to the calling method as the return value.

This class also provides a method for randomly generating sample targets. It is the logical place to add code to receive position information from external sources, for example using the network via the Distributed Interactive Simulation (DIS) protocol.

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

Hierarchy Diagram     Coordinate Systems

History:
30 Jan 98 Timothy M. Holliday New
17 Mar 98 Timothy M. Holliday Added HTML comment convention
13 May 98 Timothy M. Holliday Added constructor for placing a minefield and a new statistic method.
9 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, Surface

Constructor Summary
Targets(Surface s, Bottom b, double maximumX, double minimumX, double maximumZ, double minimumZ, int numberMines)
          Constructor for the tartgets class.
Targets(Surface s, Bottom b, int numberMines, int numberSubs)
          The first two arguments determine the Surface and Bottom types, while the last two arguments indicate how many mines and submarines are added to the target data base.
 
Method Summary
 double getCollisionArea()
          This method returns the cross sectional area of the object that was detected.
 java.lang.String getVRMLTargets()
          This method returns a VRML string representing the targets in the ocean.
 boolean isCollision(Ray ray1, Ray ray2, Ray ray3, Ray ray4)
          This method returns a boolean indicating whether or not a detection as occurred.
 void printMineStatistics()
          This method prints the mine number, position, estimated position and number of detects on each mine in the data base.
 void resetTargets()
          This method resets the parameters that speed up target collision detection.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Targets

public Targets(Surface s,
               Bottom b,
               int numberMines,
               int numberSubs)
The first two arguments determine the Surface and Bottom types, while the last two arguments indicate how many mines and submarines are added to the target data base. The total number of mines and submarines is currently limited to 100, and all are randomly placed.

Targets

public Targets(Surface s,
               Bottom b,
               double maximumX,
               double minimumX,
               double maximumZ,
               double minimumZ,
               int numberMines)
Constructor for the tartgets class. The first two arguments are the bottom and surface objects. The next two are the max and min x-direction boundaries for a minefield and the next two are for the z-direction. The last is the number of mines. The maximum number of mines is 100 and they are randomly placed.
Method Detail

resetTargets

public void resetTargets()
This method resets the parameters that speed up target collision detection. It is used whenever a new beam is calculated.

getVRMLTargets

public java.lang.String getVRMLTargets()
This method returns a VRML string representing the targets in the ocean.

isCollision

public boolean isCollision(Ray ray1,
                           Ray ray2,
                           Ray ray3,
                           Ray ray4)
This method returns a boolean indicating whether or not a detection as occurred. True indicates a detection and false indicates no detection.

getCollisionArea

public double getCollisionArea()
This method returns the cross sectional area of the object that was detected.

printMineStatistics

public void printMineStatistics()
This method prints the mine number, position, estimated position and number of detects on each mine in the data base. The numbers are printed to the standard console.