@Override public CircularArc getArcN(int arcIndex) { int baseIdx = arcIndex * 4; double[] arcControlPoints = new double[6]; System.arraycopy(controlPoints, baseIdx, arcControlPoints, 0, 6); CircularArc arc = new CircularArc(arcControlPoints); return arc; }
public ArcScan() { if (controlPoints.length == 3) { // single arc case CircularArc arc = new CircularArc(controlPoints); visitArc(arc); } else { // go over each 3-points set and linearize it double[] arcControlPoints = new double[6]; CircularArc arc = new CircularArc(arcControlPoints); for (int i = 0; i <= controlPoints.length - 6; i += 4) { // have the arc work off the new control points System.arraycopy(controlPoints, i, arcControlPoints, 0, 6); arc.reset(); visitArc(arc); } } }
public CircularArc getCircularArc(double startAngle, double midAngle, double endAngle) { double[] controlPoints = samplePoints(startAngle, midAngle, endAngle); return new CircularArc(controlPoints); }
/** * Builds a circular arc out of the specified coordinate sequence * * @param cs * @param startCoordinate * @return */ public static CircularArc getArc(CoordinateSequence cs, int startCoordinate) { if (cs.size() < (startCoordinate + 3)) { throw new IllegalArgumentException( "The coordinate sequence has " + cs.size() + " points, cannot extract a circular arc starting from coordinate " + startCoordinate); } else if (startCoordinate < 0) { throw new IllegalArgumentException( "Start coordinate must be 0 or positive, not: " + startCoordinate); } return new CircularArc( cs.getOrdinate(0, 0), cs.getOrdinate(0, 1), // cs.getOrdinate(1, 0), cs.getOrdinate(1, 1), // cs.getOrdinate(2, 0), cs.getOrdinate(2, 1)); }
@Test public void testCollinear() { CircularArc arc = new CircularArc(0, 0, 0, 10, 0, 20); assertEquals(CircularArc.COLLINEARS, arc.getRadius(), 0d); assertCoordinateEquals(null, arc.getCenter()); double[] linearized = arc.linearize(0); assertArrayEquals(new double[] {0, 0, 0, 10, 0, 20}, linearized, 0d); assertEquals(envelopeFrom(arc), arc.getEnvelope()); }
CircularArc arc = new CircularArc(cp[0], cp[1], cp[2], cp[3], cp[4], cp[5]); ring = CurvedGeometries.toCircle(arc, gf, gf.getTolerance()); } else {
@Test public void testSamePoints() { CircularArc arc = new CircularArc(0, 0, 0, 0, 0, 0); assertEquals(0, arc.getRadius(), 0d); assertCoordinateEquals(ORIGIN, arc.getCenter()); double[] linearized = arc.linearize(0); assertArrayEquals(new double[] {0, 0, 0, 0, 0, 0}, linearized, 0d); assertEquals(envelopeFrom(arc), arc.getEnvelope()); assertEquals(0, arc.getEnvelope().getArea(), 0d); }