/**
*
*/
package cz.cuni.mff.peckam.java.origamist.model;
import javax.vecmath.Point2d;
import cz.cuni.mff.peckam.java.origamist.math.Line2d;
import cz.cuni.mff.peckam.java.origamist.math.Segment2d;
/**
* A line or segment in 2D space.
*
* @author Martin Pecka
*/
public class Line2D extends cz.cuni.mff.peckam.java.origamist.model.jaxb.Line2D implements Cloneable
{
public Line2D()
{
}
/**
* @param line The line to represent.
*/
public Line2D(Line2d line)
{
this.start = new Point2D(line.getPoint());
this.end = new Point2D(line.getPointForParameter(1));
}
/**
* @param segment The segment to represent.
*/
public Line2D(Segment2d segment)
{
this.start = new Point2D(segment.getP1());
this.end = new Point2D(segment.getP2());
}
/**
* @param start Start point.
* @param end End point.
*/
public Line2D(Point2d start, Point2d end)
{
this.start = new Point2D(start);
this.end = new Point2D(end);
}
/**
* @param start Start point.
* @param end End point.
*/
public Line2D(Point2D start, Point2D end)
{
this.start = start;
this.end = end;
}
/**
* @return A copy of this line as a {@link Line2d}.
*/
public Line2d toLine2d()
{
return new Line2d(start.toPoint2d(), end.toPoint2d());
}
/**
* @return A copy of this line as a {@link Segment2d}.
*/
public Segment2d toSegment2d()
{
return new Segment2d(start.toPoint2d(), end.toPoint2d());
}
@Override
public String toString()
{
return "Line2D [start=" + start + ", end=" + end + "]";
}
@Override
public Line2D clone()
{
return new Line2D(start, end);
}
}