http://www.jpicedt.org

jpicedt.graphic.model
Class PicCircleFrom3Points

java.lang.Object
  extended by jpicedt.graphic.model.AbstractElement
      extended by jpicedt.graphic.model.PicParallelogram
          extended by jpicedt.graphic.model.PicEllipse
              extended by jpicedt.graphic.model.PicCircleFrom3Points
All Implemented Interfaces:
Element, PicMultiCurveConvertable, ActionFactory, CustomizerFactory

public class PicCircleFrom3Points
extends PicEllipse
implements CustomizerFactory

A class implementing either a circle or an arc, whose geometry is specified by a PicEllipse, yet is further controllable by three additional points: this may either be a plain circle going through these three points, or an arc going from P_1 to P_3 through P_2, in which case a pie or a chord may be added as well.
Superclass control-points are still available here, yet geometry is constrained to a circle by invoking e.g. super.setCtrlPt using a SQUARE EditConstraint.

Since:
jPicEdt 1.4
Version:
$Id: PicCircleFrom3Points.java,v 1.36 2013/03/27 07:02:04 vincentb1 Exp $
Author:
Vincent Guirardel

Field Summary
protected  PicPoint circlePt1
          The first point (out of three) this circle goes through, aka circle's specification point.
protected  PicPoint circlePt2
          second spec-point, same as circlePt1
protected  PicPoint circlePt3
          second spec-point, same as circlePt1
static int LAST_PT
           
static int P_1
          index of first ctrl-point
static int P_2
          index of intermediate ctrl-point
static int P_3
          index of last ctrl-point
 
Fields inherited from class jpicedt.graphic.model.PicEllipse
CHORD, closure, greatAxis, OPEN, P_ANGLE_END, P_ANGLE_START, PIE, rotatedAngleEnd, rotatedAngleStart, rotationAngle, skewAngleEnd, skewAngleStart, smallAxis
 
Fields inherited from class jpicedt.graphic.model.PicParallelogram
b2tVec, CTRL_PT_SIDE_BITMAP, FIRST_PT, IN_SIDE_B, IN_SIDE_L, IN_SIDE_R, IN_SIDE_T, l2rVec, P_BL, P_BR, P_CENTER, P_TL, P_TR, ptBL, ptBR, ptTR, SIDE_0, SIDE_B, SIDE_L, SIDE_R, SIDE_T
 
Fields inherited from class jpicedt.graphic.model.AbstractElement
attributeSet, name, parent, view
 
Constructor Summary
PicCircleFrom3Points()
          Creates a new circle reduced to a single point located at (0,0).
PicCircleFrom3Points(boolean plain, int closure)
          Creates a new arc or circle reduced to a single point located at (0,0), with a default attribute set and the given closure type.
PicCircleFrom3Points(boolean plain, int closure, PicAttributeSet set)
          Creates a new arc or circle reduced to a single point located at (0,0), with the given closure and attribute set.
PicCircleFrom3Points(PicAttributeSet set)
          Creates a new (full) circle reduced to a single point located at (0,0), with the given attribute set.
PicCircleFrom3Points(PicCircleFrom3Points circle)
          "cloning" constructor (to be used by clone())
PicCircleFrom3Points(PicPoint pt1, PicPoint pt2, PicPoint pt3, boolean plain, int closure, PicAttributeSet set)
          Create a new arc or circle whose geometry is specified by the 3 given points, and with the given attribute set.
PicCircleFrom3Points(PicPoint pt1, PicPoint pt2, PicPoint pt3, PicAttributeSet set)
          Create a new circle whose geometry is specificed by the the 3 given points, and with the given attribute set.
 
Method Summary
 PicCircleFrom3Points clone()
          Overrides Object.clone() method
 PicEllipse convertToEllipse()
          Convert this circle to a new PicEllipse object.
 ArrayList<PEAction> createActions(ActionDispatcher actionDispatcher, ActionLocalizer localizer, HitInfo hi)
          Create an array of Action's related to this object
 AbstractCustomizer createCustomizer()
          Return a Customizer for geometry editing
 PicPoint getCtrlPt(int numPoint, PicPoint src)
          Get the coordinate of the control point indexed by "numPoint".
 CtrlPtSubset getCtrlPtSubset(ConvexZoneGroup csg, BitSet czExtension)
          Renvoie un la partie des points de contrôle qui satisfont à l'un des deux critères suivants: ceux compris dans l'ensemble de zones convexes csg, et ceux en relation avec les points de contrôle satisfaisant au première critère selon une relation définies par czExtension
 String getDefaultName()
          Return a localised string that represents this object's name
 int getFirstPointIndex()
          Returns the index of the first user-controlled point that can be retrieved by getCtrlPt().
 int getLastPointIndex()
          Returns the index of the last user-controlled point that can be retrieved by getCtrlPt().
 boolean isPlain()
          Return true if this PicEllipse is a plain ellipse, ie if angle extent equals 360.
 void mirror(PicPoint ptOrg, PicVector normalVector)
          Effectue une réflexion sur this relativement à l'axe défini par ptOrg et normalVector.
 void rotate(PicPoint ptOrg, double angle)
          Rotate this Element by the given angle along the given point
 void scale(double ptOrgX, double ptOrgY, double sx, double sy, UserConfirmationCache ucc)
          Scale this object by (sx,sy) using (ptOrgX,ptOrgY) as the origin.
 void setCtrlPt(int numPoint, PicPoint pt, EditPointConstraint c)
          Set the coordinate of the point indexed by "numPoint" to the given value.
 void setPlain(boolean b)
           
 void shear(PicPoint ptOrg, double shx, double shy, UserConfirmationCache ucc)
          Shear this Element by the given params wrt to the given origin
 String toString()
          Implementation of the Object.toString() method, used for debugging purpose
 void translate(double dx, double dy)
          Translate this circle by (dx,dy)
protected  void updateControlPoints(int numPoint)
          Update the values of the three control-points from the geometry of the superclass.
protected  void updateEllipse()
          This method update the geometry of the superclass, i.e. specification points P_BL, P_BR and P_TL, from the current value of the three control points P_1, P_2, P_3.
 
Methods inherited from class jpicedt.graphic.model.PicEllipse
_updateAxis, convertToMultiCurve, createShape, getAngleEnd, getAngleExtent, getAngleStart, getArcType, getArcTypeAsString, getBoundingBox, getCorrectedAngleEnd, getCorrectedAngleStart, getGreatAxisLength, getRotatedAngleEnd, getRotatedAngleExtent, getRotatedAngleStart, getRotationAngle, getSmallAxisLength, getTangentAtAngleEnd, getTangentAtAngleStart, isArc, isCircular, isClosed, isFlat, isRotated, setAngleEnd, setAngleExtent, setAngleStart, setArcType, setGeometry, setGeometry, setPlain, syncArrowGeometry, updateAxis, updateRotatedAngles
 
Methods inherited from class jpicedt.graphic.model.PicParallelogram
getB2TVec, getCenter, getL2RtoXAxisAngle, getL2RVec, isRectangle, isXYorYXRectangle, isXYRectangle, makeRectangle, makeXYRectangle, setCtrlPt, setGeometry, setGeometry, toParalleloBasisCoordinates, updateParalleloBasis
 
Methods inherited from class jpicedt.graphic.model.AbstractElement
anchorPointsIterator, fireChangedUpdate, getAttribute, getAttributeSet, getDrawing, getName, getParent, getView, pullOutOfGroup, removeView, replaceBy, scale, scale, scale, setAttribute, setAttributeSet, setName, setParent, setViewFromFactory, shear
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface jpicedt.graphic.model.Element
anchorPointsIterator, createShape, getAttribute, getAttributeSet, getBoundingBox, getDrawing, getName, getParent, getView, removeView, replaceBy, scale, scale, scale, setAttribute, setAttributeSet, setCtrlPt, setParent, setViewFromFactory, shear, syncArrowGeometry
 

Field Detail

P_1

public static final int P_1
index of first ctrl-point

See Also:
Constant Field Values

P_2

public static final int P_2
index of intermediate ctrl-point

See Also:
Constant Field Values

P_3

public static final int P_3
index of last ctrl-point

See Also:
Constant Field Values

LAST_PT

public static final int LAST_PT
See Also:
Constant Field Values

circlePt1

protected PicPoint circlePt1
The first point (out of three) this circle goes through, aka circle's specification point. It is controlled by the setCtrlPt method, and is used to update superclass's geometry when updateEllipse is invoked.


circlePt2

protected PicPoint circlePt2
second spec-point, same as circlePt1


circlePt3

protected PicPoint circlePt3
second spec-point, same as circlePt1

Constructor Detail

PicCircleFrom3Points

public PicCircleFrom3Points()
Creates a new circle reduced to a single point located at (0,0).


PicCircleFrom3Points

public PicCircleFrom3Points(boolean plain,
                            int closure)
Creates a new arc or circle reduced to a single point located at (0,0), with a default attribute set and the given closure type.

Parameters:
plain - if true, we draw a plain circle and ignore the closure parameter.
closure - closure type as defined in java.awt.geom.Arc2D

PicCircleFrom3Points

public PicCircleFrom3Points(PicAttributeSet set)
Creates a new (full) circle reduced to a single point located at (0,0), with the given attribute set.


PicCircleFrom3Points

public PicCircleFrom3Points(boolean plain,
                            int closure,
                            PicAttributeSet set)
Creates a new arc or circle reduced to a single point located at (0,0), with the given closure and attribute set.

Parameters:
plain - if true, we draw a plain circle and ignore the closure parameter.
closure - closure type as defined in java.awt.geom.Arc2D

PicCircleFrom3Points

public PicCircleFrom3Points(PicPoint pt1,
                            PicPoint pt2,
                            PicPoint pt3,
                            PicAttributeSet set)
Create a new circle whose geometry is specificed by the the 3 given points, and with the given attribute set.


PicCircleFrom3Points

public PicCircleFrom3Points(PicPoint pt1,
                            PicPoint pt2,
                            PicPoint pt3,
                            boolean plain,
                            int closure,
                            PicAttributeSet set)
Create a new arc or circle whose geometry is specified by the 3 given points, and with the given attribute set.

Parameters:
plain - whether to draw a plain circle or an arc
closure - closure type as defined in java.awt.geom.Arc2D

PicCircleFrom3Points

public PicCircleFrom3Points(PicCircleFrom3Points circle)
"cloning" constructor (to be used by clone())

Method Detail

clone

public PicCircleFrom3Points clone()
Overrides Object.clone() method

Specified by:
clone in interface Element
Overrides:
clone in class PicEllipse

getFirstPointIndex

public int getFirstPointIndex()
Returns the index of the first user-controlled point that can be retrieved by getCtrlPt().

Specified by:
getFirstPointIndex in interface Element
Overrides:
getFirstPointIndex in class PicParallelogram

getLastPointIndex

public int getLastPointIndex()
Returns the index of the last user-controlled point that can be retrieved by getCtrlPt().

Specified by:
getLastPointIndex in interface Element
Overrides:
getLastPointIndex in class PicEllipse

getDefaultName

public String getDefaultName()
Description copied from class: PicEllipse
Return a localised string that represents this object's name

Overrides:
getDefaultName in class PicEllipse
Returns:
A string that represents this object's name ; should be a key-entry to i18n files.
Since:
jpicedt 1.3.3

convertToEllipse

public PicEllipse convertToEllipse()
Convert this circle to a new PicEllipse object.


updateEllipse

protected void updateEllipse()
This method update the geometry of the superclass, i.e. specification points P_BL, P_BR and P_TL, from the current value of the three control points P_1, P_2, P_3.
Subclasser may want to adapt updating scheme to their own need here.

Overrides:
updateEllipse in class PicEllipse

updateControlPoints

protected void updateControlPoints(int numPoint)
Update the values of the three control-points from the geometry of the superclass. This is aka updateEllipse(), yet the other way around.

Parameters:
numPoint - index of the PicParallelogram's control-point that was moved

setCtrlPt

public void setCtrlPt(int numPoint,
                      PicPoint pt,
                      EditPointConstraint c)
Set the coordinate of the point indexed by "numPoint" to the given value.

Specified by:
setCtrlPt in interface Element
Overrides:
setCtrlPt in class PicEllipse
Parameters:
numPoint - one of P_TL, P_TR, P_BL, P_BR, SIDE_T, SIDE_B, SIDE_L, SIDE_R or P_CENTER.
c - either null or one of PicParallelogram.EditConstraint

getCtrlPt

public PicPoint getCtrlPt(int numPoint,
                          PicPoint src)
Get the coordinate of the control point indexed by "numPoint".

Specified by:
getCtrlPt in interface Element
Overrides:
getCtrlPt in class PicEllipse
Parameters:
numPoint - one of P_1, P_2 or P_3.
src - a PicPoint to update and create if necessary
Returns:
the point indexed by numPoint ; if src is null, allocates a new PicPoint and return it, otherwise directly modifies src and returns it as well for convenience.

translate

public void translate(double dx,
                      double dy)
Translate this circle by (dx,dy)

Specified by:
translate in interface Element
Overrides:
translate in class PicParallelogram
Parameters:
dx - The X coordinate of translation vector
dy - The Y coordinate of translation vector

scale

public void scale(double ptOrgX,
                  double ptOrgY,
                  double sx,
                  double sy,
                  UserConfirmationCache ucc)
Scale this object by (sx,sy) using (ptOrgX,ptOrgY) as the origin. This implementation simply apply a scaling transform to all specification-points. Note that sx and sy may be negative. This method eventually fires a changed-update event.

Specified by:
scale in interface Element
Overrides:
scale in class PicEllipse
ucc - une valeur UserConfirmationCache permettant de demander à l'utilisateur confirmation, de se souvenir de la dernière confirmation qu'il a donné, ou de ses préférences.

rotate

public void rotate(PicPoint ptOrg,
                   double angle)
Rotate this Element by the given angle along the given point

Specified by:
rotate in interface Element
Overrides:
rotate in class PicEllipse
Parameters:
angle - rotation angle in radians

mirror

public void mirror(PicPoint ptOrg,
                   PicVector normalVector)
Effectue une réflexion sur this relativement à l'axe défini par ptOrg et normalVector.

Specified by:
mirror in interface Element
Overrides:
mirror in class PicEllipse
Parameters:
ptOrg - le PicPoint par lequel passe l'axe de réflexion.
normalVector - le PicVector normal à l'axe de réflexion.

shear

public void shear(PicPoint ptOrg,
                  double shx,
                  double shy,
                  UserConfirmationCache ucc)
Shear this Element by the given params wrt to the given origin

Specified by:
shear in interface Element
Overrides:
shear in class PicEllipse
ucc - une valeur UserConfirmationCache permettant de demander à l'utilisateur confirmation, de se souvenir de la dernière confirmation qu'il a donné, ou de ses préférences.

getCtrlPtSubset

public CtrlPtSubset getCtrlPtSubset(ConvexZoneGroup csg,
                                    BitSet czExtension)
Description copied from interface: Element
Renvoie un la partie des points de contrôle qui satisfont à l'un des deux critères suivants:
  1. ceux compris dans l'ensemble de zones convexes csg, et
  2. ceux en relation avec les points de contrôle satisfaisant au première critère selon une relation définies par czExtension

Specified by:
getCtrlPtSubset in interface Element
Overrides:
getCtrlPtSubset in class PicParallelogram
Parameters:
csg - l'ensemble de zones convexes ConvexZoneGroup auquel l'appartenance on teste les points de contrôle.
czExtension - cet argument est ignoré
Returns:
a CtrlPtSubset value
Since:
jPicEdt 1.6
See Also:
jpicedt.graphic.model

isPlain

public boolean isPlain()
Description copied from class: PicEllipse
Return true if this PicEllipse is a plain ellipse, ie if angle extent equals 360.

Overrides:
isPlain in class PicEllipse

setPlain

public void setPlain(boolean b)

toString

public String toString()
Implementation of the Object.toString() method, used for debugging purpose

Overrides:
toString in class PicEllipse
Since:
PicEdt 1.1.4

createActions

public ArrayList<PEAction> createActions(ActionDispatcher actionDispatcher,
                                         ActionLocalizer localizer,
                                         HitInfo hi)
Create an array of Action's related to this object

Specified by:
createActions in interface ActionFactory
Overrides:
createActions in class PicParallelogram
Parameters:
actionDispatcher - dispatches events to the proper PECanvas
localizer - i18n localizer for PEAction's
hi - une HitInfo contenant les informations relatives à l'évènement-souris qui a déclencher le menu contextuel.

createCustomizer

public AbstractCustomizer createCustomizer()
Return a Customizer for geometry editing

Specified by:
createCustomizer in interface CustomizerFactory
Overrides:
createCustomizer in class PicEllipse
Returns:
a Customizer for geometry editing
Since:
jpicedt 1.3.3

http://www.jpicedt.org

Submit a bug : syd@jpicedt.org