//
// PointJ3D.java
//

/*
VisAD system for interactive analysis and visualization of numerical
data.  Copyright (C) 1996 - 2017 Bill Hibbard, Curtis Rueden, Tom
Rink, Dave Glowacki, Steve Emmerson, Tom Whittaker, Don Murray, and
Tommy Jasmin.

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA
*/

package visad.bom.annotations;

import visad.DisplayImpl;
import visad.java3d.DisplayImplJ3D;

/**
 *  Meant to encapsulate information representing a Point which is
 *  going to be rendered on a VisAD display without being
 *  subject to the usual VisAD transformations. Thus the label should
 *  stick in Screen Coordinates.
 */
public class PointJ3D implements ScreenAnnotation
{

  private int x1, y1;    // point in screen coordinates
  private float[] colour;
  private double zValue;
  private double thickness;      // for point size

  /**
   *  Simple constructor which makes a point at (0, 0)
   *  coloured white. More meaningful values can be set 
   *  after construction.
   */
  public PointJ3D()
  {
    this(0, 0, new float[] {1,1,1}, 0, 1.0);
  }

  /** 
   *  Constructs a PointJ3D from specified values in screen coordinates.
   *
   *  @param x1  x screen coordinate of the point.
   *  @param y1  y screen coordinate of the point.
   *  @param colour  red green blue triple; each value in [0.0, 1.0].
   *  @param zValue  Virtual world value; larger z is in front.
   *  @param thickness  used for the size of the point.
   */
  public PointJ3D(int x1, int y1,
    float[] colour, double zValue, double thickness)
  {
    this.x1 = x1;
    this.y1 = y1;
    this.colour = colour;
    this.zValue = zValue;
    this.thickness = thickness;
  }

  /**
   *  Constructs a PointJ3D from specified values in screen coordinates.
   *
   *  @param points  2 rows with each column containing a point
   *         in screen coordinates; requires 1 point (column).
   *  @param colour  red green blue triple; each value in [0.0, 1.0].
   *  @param zValue  Virtual world value; larger z is in front.
   *  @param thickness  used for the size of the point.
   */
  public PointJ3D(int[][] points,
    float[] colour, double zValue, double thickness)
  {
    this(points[0][0], points[1][0],
      colour, zValue, thickness);  
  }

  /**
   *  Set coordinates for the PointJ3D.
   *
   *  @param x1  x screen coordinate of the point.
   *  @param y1  y screen coordinate of the point.
   */
  public void setPointJ3Ds(int x1, int y1)
  {
    this.x1 = x1;
    this.y1 = y1;
  } 

  /**
   *  Set coordinates for the PointJ3D.
   *
   *  @param points  2 rows with each column containing a point
   *         in screen coordinates; requires 1 point (column).
   */
  public void setPointJ3Ds(int[][] points)
  {
    setPointJ3Ds(points[0][0], points[1][0]);
  }

  /**
   *  Set colour for the PointJ3D.
   *
   *  @param colour  red green blue triple; each value in [0.0, 1.0].
   */
  public void setColour(float[] colour)
  {
    this.colour = colour;
  }

  /**
   *  Set Z position for the PointJ3D.
   *
   *  @param zValue  Virtual world value; larger z is in front.
   */
  public void setZValue(double zValue)
  {
    this.zValue = zValue;
  }

  /**
   *  Make the PointJ3D into a {@link javax.media.j3d.Shape3D}.
   *
   *  @param display  the VisAD display for this Point.
   *
   *  @return the Triangle description as a Shape3D object.
   */
  public Object toDrawable(DisplayImpl display)
  {
    return ScreenAnnotatorUtils.makePointShape3D(
      (DisplayImplJ3D)display,
      x1, y1, colour, zValue, thickness);
  }
} // class PointJ3D

 

Ads help maintain this website.