Class Map3D

java.lang.Object
All Implemented Interfaces:
InterfaceObject, NamedObject, TreeObject, CleanableObject, XMLObject

public class Map3D
extends Map
Class to provide an interface for mapping a 3D viewing platform. Basic implementation generates Transform3D nodes for a Java3D scene graph, based upon a center-of-rotation (), zoom level, viewing angle (), and pan location () The viewing platform is rotated about the , and this rotation is determined by . Zoom level is the magnitude of , described by . Any translation of the viewing platform is then applied by means of . Notes: 1. The above is now implemented using Camera3D, which uses a lineOfSight vector (same as ), a centerOfRotation, a targetPoint (specifying camera pannning), and an upVector (specifying the camera's up position)... uses Transform3D's lookAt function to obtain the camera transform. Map3D simply calls the camera's getCameraTransform method to set the target transform. 2. It is good to know that the default ViewPosition is located at 0, 0, 0 and the default viewingVector is (0, 0, 1); i.e., the initial viewingVector is the pos Z-axis. All transformations generated here are with respect to this default orientation. 3. The viewing platform is essentially a fixed-size 3D planar quadrangle, one side of which is the viewport to the 3D model. You can position this viewport however you like. In the present object, the intent is to provide a line-of-sight from some specific 3D point (the center-of-rotation offset by the translation vector) to the viewer's eye, and to specify a "zoom" about this point, which is essentially a translation along the viewing vector (or, equivalently, a scaling of the platform if you relax the fixed-size requirement). Thus, zoom is expressed as a radius (a distance from the target point).
Author:
Andrew Reid
  • Field Details

    • camera

      protected Camera3D camera
    • targetTransform

      protected org.jogamp.java3d.TransformGroup targetTransform
    • thisView

      protected org.jogamp.java3d.View thisView
    • thisBounds

      protected Sphere3D thisBounds
    • centerPt

      protected org.jogamp.vecmath.Point3f centerPt
    • zoomClip

      protected double zoomClip
    • update_clip_bounds

      protected boolean update_clip_bounds
  • Constructor Details

    • Map3D

      public Map3D()
  • Method Details

    • setViewPlatformTransform

      @Deprecated public void setViewPlatformTransform​(org.jogamp.java3d.Transform3D thisTransform)
      Deprecated.
    • setUpdateClipBounds

      public void setUpdateClipBounds​(boolean b)
      Indicates whether this map should update the view clip bounds if its bounds are updated
      Parameters:
      b -
    • getCamera

      public Camera3D getCamera()
    • setCamera

      public void setCamera​(Camera3D camera)
    • updateViewPlatformTransform

      public void updateViewPlatformTransform​(org.jogamp.java3d.Transform3D thisTransform)
    • getViewPlatformTransform

      public org.jogamp.java3d.Transform3D getViewPlatformTransform()
    • updateTargetTransform

      public void updateTargetTransform()
    • setTargetTransform

      public void setTargetTransform​(org.jogamp.java3d.TransformGroup thisTarget)
    • setView

      public void setView​(org.jogamp.java3d.View v)
    • setBounds

      public void setBounds​(Sphere3D bounds)
    • setCenter

      public void setCenter​(org.jogamp.vecmath.Point3f c)
    • updateClipBounds

      public void updateClipBounds()
    • getType

      public int getType()
      Overrides:
      getType in class Map
    • getZoom

      public double getZoom()
      Overrides:
      getZoom in class Map
    • setZoom

      public void setZoom​(double z)
      Overrides:
      setZoom in class Map
    • addLightSource

      public void addLightSource​(org.jogamp.java3d.DirectionalLight light)
    • addLightSource

      public void addLightSource​(org.jogamp.java3d.DirectionalLight light, org.jogamp.vecmath.Vector2d offset)
    • removeLightSource

      public void removeLightSource​(org.jogamp.java3d.DirectionalLight light)
    • setTreeNode

      public void setTreeNode​(InterfaceTreeNode treeNode)
      Description copied from interface: TreeObject
      Sets the children for this node's InterfaceTreeNode.
      Specified by:
      setTreeNode in interface TreeObject
      Overrides:
      setTreeNode in class AbstractInterfaceObject
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.lang.Object
    • getDTD

      public java.lang.String getDTD()
      Description copied from interface: XMLObject
      Returns the Data Type Declaration (DTD) for this object's XML representation

      See http://en.wikipedia.org/wiki/Document_Type_Definition for a description.

      Returns:
    • getXMLSchema

      public java.lang.String getXMLSchema()
      Description copied from interface: XMLObject
      Returns the XML schema for this object's XML representation

      See http://en.wikipedia.org/wiki/XML_schema.

      Returns:
    • getXML

      public java.lang.String getXML()
      Description copied from interface: XMLObject
      Returns this object's XML representation as a single string. NOTE: this is not feasible for larger objects and containers, thus may not be implemented for these objects. Use the XMLObject.writeXML(int,java.io.Writer,mgui.io.standard.xml.XMLOutputOptions,mgui.interfaces.ProgressUpdater) functions to write larger objects to file.
      Returns:
    • getXML

      public java.lang.String getXML​(int tab)
      Description copied from interface: XMLObject
      Returns this object's XML representation as a single string. NOTE: this is not feasible for larger objects and containers, thus may not be implemented for these objects. Use the XMLObject.writeXML(int,java.io.Writer,mgui.io.standard.xml.XMLOutputOptions,mgui.interfaces.ProgressUpdater) functions to write larger objects to file.
      Parameters:
      tab - The number of tabs to place before the opening XML wrapper
      Returns:
    • handleXMLElementStart

      public void handleXMLElementStart​(java.lang.String localName, org.xml.sax.Attributes attributes, XMLObject.XMLType type) throws org.xml.sax.SAXException
      Description copied from interface: XMLObject
      Handles the start of an XML element.
      Parameters:
      localName - Local name of the element
      attributes - Set of element attributes
      type - The XMLType of this element
      Throws:
      org.xml.sax.SAXException
    • handleXMLElementEnd

      public void handleXMLElementEnd​(java.lang.String localName) throws org.xml.sax.SAXException
      Description copied from interface: XMLObject
      Handles the end of an XML element.
      Parameters:
      localName - Local name of the element
      Throws:
      org.xml.sax.SAXException
    • handleXMLString

      public void handleXMLString​(java.lang.String s) throws org.xml.sax.SAXException
      Description copied from interface: XMLObject
      Handles a string within an XML element.
      Parameters:
      s - String to handle
      Throws:
      org.xml.sax.SAXException
    • getLocalName

      public java.lang.String getLocalName()
      Description copied from interface: XMLObject
      Returns the local name associated with this XML object.
      Returns:
    • writeXML

      public void writeXML​(int tab, java.io.Writer writer, XMLOutputOptions options, ProgressUpdater progress_bar) throws java.io.IOException
      Description copied from interface: XMLObject
      Writes the XML representation of this object to file. The basic contract for this method is that it should not write a newline character at its start or end. The default format of XMLFormat.Ascii will be used.
      Parameters:
      tab - The number of tabs to place before the XML text
      writer - The writer
      options - XMLOutputOptions defining the write parameters
      progress_bar - Optional progress updater (may be null)
      Throws:
      java.io.IOException
    • writeXML

      public void writeXML​(int tab, java.io.Writer writer, ProgressUpdater progress_bar) throws java.io.IOException
      Description copied from interface: XMLObject
      Writes the XML representation of this object to file, as XMLType.Normal. The default format of XMLFormat.Ascii will be used. The basic contract for this method is that it should not write a newline character at its start or end.
      Parameters:
      tab - The number of tabs to place before the XML text
      writer - The writer
      progress_bar - Optional progress updater (may be null)
      Throws:
      java.io.IOException
    • writeXML

      public void writeXML​(int tab, java.io.Writer writer) throws java.io.IOException
      Description copied from interface: XMLObject
      Writes the XML representation of this object to file. The basic contract for this method is that it should not write a newline character at its start or end. The default format of XMLFormat.Ascii will be used.
      Parameters:
      tab - The number of tabs to place before the XML text
      writer - The writer
      Throws:
      java.io.IOException
    • getShortXML

      public java.lang.String getShortXML​(int tab)
      Description copied from interface: XMLObject
      Returns a short XML representation of this object.
      Returns: