http://www.jpicedt.org

jpicedt.graphic.model
Class PicEllipse

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

public class PicEllipse
extends PicParallelogram

Ellipse or arc, based on parallelogram
The geometrical model of this ellipse (or its arc counterpart) is based on a parallelogram, yet is equivalent to an ellipse rotated around its center.

In the following code documentation, we will be using two coordinate-systems, namely :

Arc angles may be expressed in either system, and this is indicated in code documentation when applicable. Prefix skew refers to the parallelogram basis, whereas rotated denotes angles measured in the ellipse basis. Since ellipse axes are generally not parallel to parallelogram sides, except in the event this parallelogram is a rectangle, both sets of angle DO obviously differ.

In the parallelogram basis, arc is modelled by the following parametrized curve :
Center + cos(t)*U+sin(t)*V,
for t ranging from skewAngleStart to skewAngleEnd.

Rotated angles are computed so that the arc of ellipse is obtained simply by rotating by "rotationAngle" (CCW) the arc of ellipse whose parametrization is Center+greatAxis*cos(t)*I+smallAxis*sin(t)*J where I,J is the ellipse canonical basis, and t varies between "rotatedAngleStart" and "rotatedAngleEnd". Note that this means that when small axis is negative, this parametrization goes CW and not CCW.

[TODO] changes ALL internal angles to radian, and move conversion to setters/getters is user may want to enter degrees. [TODO] add a picture (in GIF or PNG format) to this documentation (as in AbstractCurve) to help end-users understand all these tricky things !

Since:
jPicEdt 1.4
Version:
$Id: PicEllipse.java,v 1.26.2.1 2007/09/02 11:56:26 reynal Exp $
Author:
Vincent Guirardel, Sylvain Reynal.

Field Summary
static int CHORD
          prefined closure type for arcs
protected  int closure
          closure type
protected  double greatAxis
          Lengths of the great axis of the ellipse.
static int LAST_PT
           
static int OPEN
          prefined closure type for arcs
static int P_ANGLE_END
          point marking end-of-arc
static int P_ANGLE_START
          point marking start-of-arc
static int PIE
          prefined closure type for arcs
protected  double rotatedAngleEnd
          Arc angles in degrees, as measured in the ellipse basis.
protected  double rotatedAngleStart
          Arc angles in degrees, as measured in the ellipse basis.
protected  double rotationAngle
          Angle in radians (CCW) between the great axis of the ellipse and the horizontal axis.
protected  double skewAngleEnd
           
protected  double skewAngleStart
          Arc start- and end- angles in degrees as measured with respect to parallolegram's basis (see toParalleloBasisCoordinates() for details on how this basis is defined).
protected  double smallAxis
          Length of the small axis of the ellipse.
 
Fields inherited from class jpicedt.graphic.model.PicParallelogram
b2tVec, CENTER_FIXED, DEFAULT, FIRST_PT, l2rVec, P_BL, P_BR, P_CENTER, P_SPEC_BL, P_SPEC_BR, P_SPEC_TR, P_TL, P_TR, SIDE_B, SIDE_L, SIDE_R, SIDE_T, SQUARE
 
Fields inherited from class jpicedt.graphic.model.DefaultLeafElement
nodeConnections, nodeName, pts
 
Fields inherited from class jpicedt.graphic.model.AbstractElement
attributeSet, parent, view
 
Fields inherited from interface jpicedt.graphic.model.PicObjectConstants
ARROW_GLOBAL_SCALE_LENGTH, ARROW_GLOBAL_SCALE_WIDTH, ARROW_INSET_SCALE, ARROW_LENGTH_SCALE, ARROW_WIDTH_LINEWIDTH_SCALE, ARROW_WIDTH_MINIMUM_MM, BRACKET_LENGTH_SCALE, CROSSHATCH, CROSSHATCH_FILLED, DASH_OPAQUE, DASH_TRANSPARENT, DASH1, DASH2, DASH3, DASHED, DIMEN, DOT_SEP, DOT_SEP1, DOT_SEP2, DOT_SEP3, DOTTED, DOUBLE_COLOR, DOUBLE_LINE, DOUBLE_SEP, FILL_COLOR, FILL_STYLE, HATCH_ANGLE, HATCH_COLOR, HATCH_SEP, HATCH_WIDTH, HLINES, HLINES_FILLED, INNER, LEFT_ARROW, LINE_COLOR, LINE_STYLE, LINE_WIDTH, MIDDLE, NONE, OUTER, OVER_STRIKE, OVER_STRIKE_COLOR, OVER_STRIKE_WIDTH, POLYDOTS_ANGLE, POLYDOTS_CIRCLE, POLYDOTS_DISK, POLYDOTS_PENTAGON, POLYDOTS_PENTAGON_FILLED, POLYDOTS_PLUS, POLYDOTS_SCALE_H, POLYDOTS_SCALE_V, POLYDOTS_SIZE_LINEWIDTH_SCALE, POLYDOTS_SIZE_MINIMUM_MM, POLYDOTS_SQUARE, POLYDOTS_SQUARE_FILLED, POLYDOTS_STYLE, POLYDOTS_SUPERIMPOSE, POLYDOTS_TRIANGLE, POLYDOTS_TRIANGLE_FILLED, PS_POINT, PST_CUSTOM, RBRACKET_LENGTH_SCALE, RIGHT_ARROW, SHADOW, SHADOW_ANGLE, SHADOW_COLOR, SHADOW_SIZE, SOLID, TBAR_WIDTH_LINEWIDTH_SCALE, TBAR_WIDTH_MINIMUM_MM, TEXT_BOX_CIRCLE, TEXT_BOX_NO_FRAME, TEXT_BOX_OVAL, TEXT_BOX_RECTANGLE, TEXT_FRAME, TEXT_HALIGN_CENTER, TEXT_HALIGN_LEFT, TEXT_HALIGN_RIGHT, TEXT_HOR_ALIGN, TEXT_ROTATION, TEXT_VALIGN_BASELINE, TEXT_VALIGN_BOTTOM, TEXT_VALIGN_CENTER, TEXT_VALIGN_TOP, TEXT_VERT_ALIGN, VLINES, VLINES_FILLED
 
Constructor Summary
PicEllipse()
          Create a new PicEllipse, centered at (0,0), with a null radius.
PicEllipse(int closure)
          Create a new PicEllipse, centered at (0,0), with a null radius, the given closure type.
PicEllipse(int closure, PicAttributeSet set)
          Create a new PicEllipse, centered at (0,0), with a null radius, the given closure type, and the given attribute set.
PicEllipse(PicAttributeSet set)
          Create a new PicEllipse, centered at (0,0), with a null radius, and the given attribute set.
PicEllipse(PicEllipse ellipse)
          "cloning" constructor (to be used by clone())
PicEllipse(PicPoint p1, PicPoint p2, PicPoint p3, int closure)
          Create a new PicEllipse object using the 3 given points as 3 consecutive points of the surrounding parallelogram, and a default attribute set.
PicEllipse(PicPoint p1, PicPoint p2, PicPoint p3, int closure, PicAttributeSet set)
          Create a new PicEllipse object using the 3 given points as 3 consecutive points of the surrounding parallelogram, and the given attribute set.
 
Method Summary
protected  void _updateAxis()
          Compute the axes of the ellipse (smallAxis, greatAxis), and the rotated angles in terms of the skew angles.
 java.lang.Object clone()
          Overload Object.clone() method
 PicMultiCurve convertToMultiCurve()
          Return a Bezier curve created from this ellipse
 AbstractCustomizer createCustomizer()
          Returns a customizer (Swing) component
 double getAngleEnd()
          Returns skewAngleEnd, ie angle end of the arc in degrees, measured in the frame defined by the parallelogram.
 double getAngleExtent()
          Returns the extent of the arc in degrees (CCW) as measured in the parallelogram basis.
 double getAngleStart()
          Returns skewAngleStart, ie the starting angle of the arc in degrees, measured in the frame defined by the parallelogram.
 int getArcType()
          Returns the closure type, ie one of CHORD, PIE or OPEN predefined constant fields.
 java.lang.String getArcTypeAsString()
          Returns the closure type as a String, ie one of "chord", "pie" or "open"
 double getGreatAxisLength()
          Return the length of the great-axis of this ellipse/arc.
 int getLastPointIndex()
          Return the index of the last point that can be retrieved by getPoint.
 java.lang.String getName()
          Return a localised string that represents this object's name
 PicPoint getPoint(int numPoint, PicPoint src)
          Return the user-controlled point having the given index.
 double getRotatedAngleEnd()
          Returns rotatedAngleEnd, ie the angle end of the arc in degrees as measured in the frame defined by the axes of the ellipse.
 double getRotatedAngleExtent()
          Returns the angle extent of the arc in degrees as measured in the frame defined by the axes of the ellipse.
 double getRotatedAngleStart()
          Return rotatedAngleStart, ie the angle start of the arc in degrees (CCW), as measured in the frame defined by the axes of the ellipse.
 double getRotationAngle()
          Return the rotation angle, ie the angle between the great axis of the ellipse and the horizontal axis.
 double getSmallAxisLength()
          Return the length of the small-axis of this ellipse/arc.
 PicPoint getTangentAtAngleEnd(PicVector pt)
          Utility for computing arrow direction.
 PicPoint getTangentAtAngleStart(PicVector pt)
          Utility for computing arrow direction.
 boolean isArc()
          Returns true if this PicEllipse is an arc, ie if angle extent does not equl 360
 boolean isCircle()
          Deprecated. use isCircular() instead
 boolean isCircular()
          Returns TRUE if this ellipse is circular, ie if smallAxis==greatAxis.
 boolean isClosed()
          Returns whether this arc or ellipse is closed or not.
 boolean isFlat()
          Return true if this ellipse is flat.
 boolean isPlain()
          Return true if this PicEllipse is a plain ellipse, ie if angle extent equals 360.
 boolean isRotated()
          Return true if this PicEllipse has a null rotation angle along the x-axis
 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)
          Scale this object by (sx,sy) using (ptOrgX,ptOrgY) as the origin.
 void setAngleEnd(double angleEnd)
          Set the angle end, then fire a changed-update.
 void setAngleExtent(double angleExtent)
          Sets the angle extent, keeping the angle start fixed, then fire a changed update.
 void setAngleStart(double angleStart)
          Set the angle start, as measured in the parallelogram basis, then fire a changed-update.
 void setArcType(int closure)
          Sets the closure type to one of CHORD, PIE or OPEN.
 void setPlain()
          Set angle parameters so that this ellipse is a plain ellipse.
 void setPoint(int numPoint, PicPoint pt, EditPointConstraint constraint)
          Set the coordinate of the point indexed by "numPoint" to the given value.
 void shear(PicPoint ptOrg, double shx, double shy)
          Shear this Element by the given params wrt to the given origin
 java.lang.String toString()
          Implementation of the Object.toString() method, used for debugging purpose
protected  void updateAxis()
          Compute the axes of the ellipse (smallAxis, greatAxis), and the rotated angles in terms of the skew angles.
protected  void updateRotatedAngles()
          Updates values of rotatedAngleStart and rotatedAngleEnd.
 
Methods inherited from class jpicedt.graphic.model.PicParallelogram
createActions, getBoundingBox, getCenter, getCenterX, getCenterY, getFirstPointIndex, getPointX, getPointY, isRectangle, toParalleloBasisCoordinates, updateParalleloBasis
 
Methods inherited from class jpicedt.graphic.model.DefaultLeafElement
addConnection, fireChangedUpdate, forwardChangedUpdate, getAllowsChildren, getNodeName, getNumberOfSpecificationPoints, getPoint, getSpecificationPoint, getSpecificationPoint, getSpecificationPointX, getSpecificationPointY, isNode, isNodeable, iterator, nodeConnectionOrigin, nodeReferencePoint, nodeReferencePointX, nodeReferencePointY, removeAllConnections, removeConnection, setNodeName, setPoint, setSpecificationPoint, translate
 
Methods inherited from class jpicedt.graphic.model.AbstractElement
anchorPointsIterator, getAttribute, getAttributeSet, getDrawing, getParent, getView, removeView, scale, setAttribute, setAttributeSet, setParent, setViewFromFactory
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

P_ANGLE_START

public static final int P_ANGLE_START
point marking start-of-arc

See Also:
Constant Field Values

P_ANGLE_END

public static final int P_ANGLE_END
point marking end-of-arc

See Also:
Constant Field Values

LAST_PT

public static final int LAST_PT
See Also:
Constant Field Values

CHORD

public static final int CHORD
prefined closure type for arcs

See Also:
Constant Field Values

OPEN

public static final int OPEN
prefined closure type for arcs

See Also:
Constant Field Values

PIE

public static final int PIE
prefined closure type for arcs

See Also:
Constant Field Values

skewAngleStart

protected double skewAngleStart
Arc start- and end- angles in degrees as measured with respect to parallolegram's basis (see toParalleloBasisCoordinates() for details on how this basis is defined).

To wind up shortly, let U and V denote unit-vectors defined by the sides of the parallelogram (these are actually given by "l2rVec" and "b2tVec" protected fields, yet immediately after computeParalleloBasis has been called), then the starting point of the arc is located at : Center+cos(skewAngleStart)*U+sin(skewAngleStart)*V.

This value is closer to the user than rotatedAngleStart. [SR:je ne comprend pas cette phrase !!!]

Moreover, arc is modelled by the following parametrized curve :
Center + cos(t)*U+sin(t)*V,
for t ranging from skewAngleStart to skewAngleEnd.

We set skewAngleStart in (-180,180], and skewAngleEnd in (skewAngleStart,skewAngleStart+360]. This means that if one makes a mirror symmetry of the parallelogram and keeps the values of these "skew" angles unchanged, then we get the mirror image of the arc.
We use degrees because user may enter a value. [SR:pending] On peut faire la conversion dans les setters correspondants (setAngleXXX). L'ideal est qd meme d'avoir la meme unite partout (en interne) pour ne pas s'emmeler les pedales.

See Also:
PicParallelogram.l2rVec, PicParallelogram.b2tVec

skewAngleEnd

protected double skewAngleEnd
See Also:
skewAngleStart

rotationAngle

protected double rotationAngle
Angle in radians (CCW) between the great axis of the ellipse and the horizontal axis.


smallAxis

protected double smallAxis
Length of the small axis of the ellipse. May be negative, as this gives a more coherent behaviour under negative scaling in one direction. The sign is determined by the orientation of the parallelogram.


greatAxis

protected double greatAxis
Lengths of the great axis of the ellipse.


rotatedAngleStart

protected double rotatedAngleStart
Arc angles in degrees, as measured in the ellipse basis. These are computed from their "skew" counterparts, through a call to updateRotatedAngles, and are obviously identical with them if surrounding parallelogram is a rectangle.

These angles may be used to build an appropriate Shape for this Element, by first creating an Arc2D from these angles, then rotating this shape by rotationAngle.

We restrict values of rotatedAngleStart to (-180,180], and those of rotatedAngleEnd to (rotatedAngleStart,rotatedAngleStart+360].


rotatedAngleEnd

protected double rotatedAngleEnd
Arc angles in degrees, as measured in the ellipse basis. These are computed from their "skew" counterparts, through a call to updateRotatedAngles, and are obviously identical with them if surrounding parallelogram is a rectangle.

These angles may be used to build an appropriate Shape for this Element, by first creating an Arc2D from these angles, then rotating this shape by rotationAngle.

We restrict values of rotatedAngleStart to (-180,180], and those of rotatedAngleEnd to (rotatedAngleStart,rotatedAngleStart+360].


closure

protected int closure
closure type

Constructor Detail

PicEllipse

public PicEllipse()
Create a new PicEllipse, centered at (0,0), with a null radius. CLOSED is the default closure


PicEllipse

public PicEllipse(PicAttributeSet set)
Create a new PicEllipse, centered at (0,0), with a null radius, and the given attribute set.


PicEllipse

public PicEllipse(int closure)
Create a new PicEllipse, centered at (0,0), with a null radius, the given closure type.

Parameters:
closure - one of CHORD, PIE or OPEN.

PicEllipse

public PicEllipse(int closure,
                  PicAttributeSet set)
Create a new PicEllipse, centered at (0,0), with a null radius, the given closure type, and the given attribute set.

Parameters:
closure - one of CHORD, PIE or OPEN.

PicEllipse

public PicEllipse(PicPoint p1,
                  PicPoint p2,
                  PicPoint p3,
                  int closure,
                  PicAttributeSet set)
Create a new PicEllipse object using the 3 given points as 3 consecutive points of the surrounding parallelogram, and the given attribute set.

Parameters:
closure - one of CHORD, PIE or OPEN.

PicEllipse

public PicEllipse(PicPoint p1,
                  PicPoint p2,
                  PicPoint p3,
                  int closure)
Create a new PicEllipse object using the 3 given points as 3 consecutive points of the surrounding parallelogram, and a default attribute set.

Parameters:
closure - one of CHORD, PIE or OPEN.

PicEllipse

public PicEllipse(PicEllipse ellipse)
"cloning" constructor (to be used by clone())

Parameters:
The - PicEllipse object to clone
Method Detail

clone

public java.lang.Object clone()
Overload Object.clone() method

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

getName

public java.lang.String getName()
Return a localised string that represents this object's name

Specified by:
getName in interface Element
Overrides:
getName in class PicParallelogram
Returns:
a localised string that represents this object's name

setPoint

public void setPoint(int numPoint,
                     PicPoint pt,
                     EditPointConstraint constraint)
Set the coordinate of the point indexed by "numPoint" to the given value. If point controls the parallelogram, calls the paralleogram setPoint method, and updates axis.

Specified by:
setPoint in interface Element
Overrides:
setPoint in class PicParallelogram
Parameters:
numPoint - one of P_TL, P_TR, P_BL, P_BR, SIDE_T, SIDE_B, SIDE_L, SIDE_R or P_CENTER.
constraint - either null, DEFAULT, CENTER_FIXED or SQUARE

getPoint

public PicPoint getPoint(int numPoint,
                         PicPoint src)
Return the user-controlled point having the given index. The general contract in Element is to return an IMMUTABLE instance of PicPoint, so that the only way to alter the geometry of this element is by calling the setPoint method.

Specified by:
getPoint in interface Element
Overrides:
getPoint in class PicParallelogram
Parameters:
numPoint - the point index, should be greater or equal to the value returned by getFirstPointIndex, and lower or equal to getLastPointIndex.
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.

scale

public void scale(double ptOrgX,
                  double ptOrgY,
                  double sx,
                  double sy)
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 DefaultLeafElement

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 PicParallelogram
Parameters:
angle - rotation angle in radians

shear

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

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

convertToMultiCurve

public PicMultiCurve convertToMultiCurve()
Return a Bezier curve created from this ellipse

Specified by:
convertToMultiCurve in interface PicMultiCurveConvertable
Overrides:
convertToMultiCurve in class PicParallelogram
Since:
jpicedt 1.4

getRotationAngle

public double getRotationAngle()
Return the rotation angle, ie the angle between the great axis of the ellipse and the horizontal axis.

Returns:
the rotation angle in radians (CCW)
See Also:
rotationAngle

getGreatAxisLength

public double getGreatAxisLength()
Return the length of the great-axis of this ellipse/arc.


getSmallAxisLength

public double getSmallAxisLength()
Return the length of the small-axis of this ellipse/arc.


setAngleStart

public void setAngleStart(double angleStart)
Set the angle start, as measured in the parallelogram basis, then fire a changed-update. Arc always extends CCW from angle-start to angle-end, ie angle-extent is always positive.

Parameters:
The - starting angle of the arc, in degrees, counted COUNTERCLOCKWISE (aka trigonometric), and measured in the parallelogram basis, ie skewAngleStart.

getAngleStart

public double getAngleStart()
Returns skewAngleStart, ie the starting angle of the arc in degrees, measured in the frame defined by the parallelogram.


setAngleEnd

public void setAngleEnd(double angleEnd)
Set the angle end, then fire a changed-update. Arc always extends CCW from angle-start to angle-end, ie angle-extent is always positive.

Parameters:
The - angle end of the arc, in degrees, measured in the frame defined by the parallelogram, ie skewAngleEnd.

getAngleEnd

public double getAngleEnd()
Returns skewAngleEnd, ie angle end of the arc in degrees, measured in the frame defined by the parallelogram. (value of skewAngleStart)


setAngleExtent

public void setAngleExtent(double angleExtent)
Sets the angle extent, keeping the angle start fixed, then fire a changed update. If not positive, 360 is added to it.

Parameters:
Angular - extent of the arc, in degrees, counted COUNTERCLOCKWISE as measured in parallelogram basis.

getAngleExtent

public double getAngleExtent()
Returns the extent of the arc in degrees (CCW) as measured in the parallelogram basis. Note that this method returns 360 for a plain ellipse, not 0.

Returns:
an angle in (0,360]

getRotatedAngleStart

public double getRotatedAngleStart()
Return rotatedAngleStart, ie the angle start of the arc in degrees (CCW), as measured in the frame defined by the axes of the ellipse.


getRotatedAngleEnd

public double getRotatedAngleEnd()
Returns rotatedAngleEnd, ie the angle end of the arc in degrees as measured in the frame defined by the axes of the ellipse.


getRotatedAngleExtent

public double getRotatedAngleExtent()
Returns the angle extent of the arc in degrees as measured in the frame defined by the axes of the ellipse.


getArcType

public int getArcType()
Returns the closure type, ie one of CHORD, PIE or OPEN predefined constant fields.


getArcTypeAsString

public java.lang.String getArcTypeAsString()
Returns the closure type as a String, ie one of "chord", "pie" or "open"


setArcType

public void setArcType(int closure)
Sets the closure type to one of CHORD, PIE or OPEN.


getLastPointIndex

public int getLastPointIndex()
Return the index of the last point that can be retrieved by getPoint.

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

isFlat

public boolean isFlat()
Return true if this ellipse is flat.


isCircular

public boolean isCircular()
Returns TRUE if this ellipse is circular, ie if smallAxis==greatAxis.

See Also:
getSmallAxisLength(), #getGreateAxisLength.

isCircle

public boolean isCircle()
Deprecated. use isCircular() instead


isPlain

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


isArc

public boolean isArc()
Returns true if this PicEllipse is an arc, ie if angle extent does not equl 360


isRotated

public boolean isRotated()
Return true if this PicEllipse has a null rotation angle along the x-axis


setPlain

public void setPlain()
Set angle parameters so that this ellipse is a plain ellipse.


isClosed

public boolean isClosed()
Returns whether this arc or ellipse is closed or not. This depends on the closure type, and this PicEllipse being plain or not.


_updateAxis

protected void _updateAxis()
Compute the axes of the ellipse (smallAxis, greatAxis), and the rotated angles in terms of the skew angles.


updateAxis

protected void updateAxis()
Compute the axes of the ellipse (smallAxis, greatAxis), and the rotated angles in terms of the skew angles.


updateRotatedAngles

protected void updateRotatedAngles()
Updates values of rotatedAngleStart and rotatedAngleEnd. Axes must be updated beforehands for this computation to be valid. if greatAxis==0 (implies smallAxis==0), we keep the old values [case of ellipse reduced to a point]. Flat case is handled by fromSkewToRotated.


getTangentAtAngleStart

public PicPoint getTangentAtAngleStart(PicVector pt)
Utility for computing arrow direction.

Parameters:
pt - a preallocated PicPoint that get filled with the result ; a new one is allocated if pt==null
Returns:
a unit-1 vector tangent to the arc, at phi = start angle, pointing "outwardly"

getTangentAtAngleEnd

public PicPoint getTangentAtAngleEnd(PicVector pt)
Utility for computing arrow direction.

Parameters:
pt - a preallocated PicPoint that get filled with the result ; a new one is allocated if pt==null
Returns:
a unit-1 vector tangent to the arc, at phi = end angle, pointing "outwardly"

toString

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

Overrides:
toString in class PicParallelogram
Since:
PicEdt 1.1.4

createCustomizer

public AbstractCustomizer createCustomizer()
Description copied from interface: CustomizerFactory
Returns a customizer (Swing) component

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

http://www.jpicedt.org

Submit a bug : syd@jpicedt.org