Files
CS480-Personal-Navigation-S…/PA5/src/geography/PiecewiseLinearCurve.java
T

74 lines
1.5 KiB
Java

package geography;
import java.awt.Shape;
import java.awt.geom.Path2D;
/**
* A class representing a piecewise linear curve.
*/
public class PiecewiseLinearCurve extends AbstractGeographicShape
{
protected Path2D.Double shape;
/**
* @param id
* The id of the curve
*/
public PiecewiseLinearCurve(final String id)
{
super(id);
shape = new Path2D.Double();
}
/**
* @param id
* The id of the curve
* @param path
* The path of the curve
*/
public PiecewiseLinearCurve(final String id, final Path2D.Double path)
{
super(id);
this.shape = path;
}
@Override
public Shape getShape()
{
return shape;
}
/**
* @param point
* The point to add to the curve
*/
public void add(final double[] point)
{
if (shape.getCurrentPoint() == null)
{
shape.moveTo(point[0], point[1]);
}
else
{
shape.lineTo(point[0], point[1]);
}
}
/**
* @param addition
* The shape to add to the curve
* @param connect
* Whether to connect the current curve to the addition with a line segment (if true, the
* addition will be connected to the current curve with a line segment; if false, the
* addition will be added as a separate shape)
*/
public void append(final Shape addition, final boolean connect)
{
if (connect && shape.getCurrentPoint() != null)
{
shape.lineTo(addition.getBounds2D().getX(), addition.getBounds2D().getY());
}
shape.append(addition, false);
}
}