| | |
| | | super(raw); |
| | | } |
| | | |
| | | public double getStartAngle() |
| | | { |
| | | int angle = (raw[18] << 16 & 0xffff0000); |
| | | |
| | | angle += raw[19] & 0x0000ffff; |
| | | |
| | | return Utility.ConverIntToRotation(angle); |
| | | } |
| | | |
| | | public void setStartAngle(double value) |
| | | { |
| | | int angle = Utility.ConverRotatioToInt(value); |
| | | |
| | | raw[18] = (short) (angle >>> 16 & 0x0000ffff); |
| | | raw[19] = (short) (angle & 0x0000ffff); |
| | | } |
| | | |
| | | public double getSweepAngle() |
| | | { |
| | | int angle = (raw[20] << 16 & 0xffff0000); |
| | | |
| | | angle += raw[21] & 0x0000ffff; |
| | | |
| | | return Utility.ConverIntToRotation(angle); |
| | | } |
| | | |
| | | public void setSweepAngle(double value) |
| | | { |
| | | int angle = Utility.ConverRotatioToInt(value); |
| | | |
| | | raw[20] = (short) (angle >> 16 & 0x0000ffff); |
| | | raw[21] = (short) (angle & 0x0000ffff); |
| | | } |
| | | |
| | | public double getPrimary() |
| | | { |
| | | short[] primary = new short[4]; |
| | |
| | | System.arraycopy(secondary, 0, raw, 26, 4); |
| | | } |
| | | |
| | | public double getRotationAngle() |
| | | { |
| | | int rotation = (raw[30] << 16 & 0xffff0000); |
| | | |
| | | rotation += raw[31] & 0x0000ffff; |
| | | |
| | | return Utility.ConverIntToRotation(rotation); |
| | | } |
| | | |
| | | public void setRotationAngle(double value) |
| | | { |
| | | int angle = Utility.ConverRotatioToInt(value); |
| | | |
| | | raw[30] = (short) (angle >> 16 & 0x0000ffff); |
| | | raw[31] = (short) (angle & 0x0000ffff); |
| | | } |
| | | |
| | | public Coordinate getOrigin() |
| | | { |
| | | short[] x = new short[4]; |
| | |
| | | System.arraycopy(y, 0, raw, 36, 4); |
| | | } |
| | | |
| | | public double getStartAngle() |
| | | { |
| | | int angle = (int) (raw[18] << 16 & 0xffff0000); |
| | | |
| | | angle += raw[19] & 0x0000ffff; |
| | | |
| | | return Utility.ConverIntToRotation(angle); |
| | | } |
| | | |
| | | public void setStartAngle(double value) |
| | | { |
| | | int angle = Utility.ConverRotatioToInt(value); |
| | | |
| | | raw[18] = (short) (angle >>> 16 & 0x0000ffff); |
| | | raw[19] = (short) (angle & 0x0000ffff); |
| | | } |
| | | |
| | | public double getSweepAngle() |
| | | { |
| | | int angle = (int) (raw[20] << 16 & 0xffff0000); |
| | | |
| | | angle += raw[21] & 0x0000ffff; |
| | | |
| | | return Utility.ConverIntToRotation(angle); |
| | | } |
| | | |
| | | public void setSweepAngle(double value) |
| | | { |
| | | int angle = Utility.ConverRotatioToInt(value); |
| | | |
| | | raw[20] = (short) (angle >> 16 & 0x0000ffff); |
| | | raw[21] = (short) (angle & 0x0000ffff); |
| | | } |
| | | |
| | | public double getRotationAngle() |
| | | { |
| | | int rotation = (int) (raw[30] << 16 & 0xffff0000); |
| | | |
| | | rotation += raw[31] & 0x0000ffff; |
| | | |
| | | return Utility.ConverIntToRotation(rotation); |
| | | } |
| | | |
| | | public void setRotationAngle(double value) |
| | | { |
| | | int angle = Utility.ConverRotatioToInt(value); |
| | | |
| | | raw[30] = (short) (angle >> 16 & 0x0000ffff); |
| | | raw[31] = (short) (angle & 0x0000ffff); |
| | | } |
| | | |
| | | public Geometry toGeometry(GeometryFactory factory) |
| | | { |
| | | return null; // To change body of implemented methods use File | Settings | File Templates. |
| | | double temp = Math.abs(getStartAngle() - getSweepAngle()); |
| | | temp /= 4; |
| | | int pts = (temp < 3) ? 3 : (int) temp; |
| | | return factory.createLineString(convertToLineString(pts)); |
| | | } |
| | | |
| | | private Coordinate[] convertToLineString(int pts) |
| | | { |
| | | Coordinate[] result = new Coordinate[pts]; |
| | | double beta = -getRotationAngle() / 180 * Math.PI; |
| | | double sinbeta = Math.sin(beta); |
| | | double cosbeta = Math.cos(beta); |
| | | double startAngle = getStartAngle(); |
| | | double endAngle = getSweepAngle(); |
| | | double steps = Math.abs(startAngle - endAngle) / pts; |
| | | int i = 0; |
| | | for (double current = startAngle; current < endAngle; current += steps) |
| | | { |
| | | if (i < pts) |
| | | { |
| | | Coordinate pt = new Coordinate(); |
| | | double alpha = current / 180 * Math.PI; |
| | | double sinalpha = Math.sin(alpha); |
| | | double cosalpha = Math.cos(alpha); |
| | | pt.x = getOrigin().x + (getPrimary() * cosalpha * cosbeta - |
| | | getSecondary() * sinalpha * sinbeta); |
| | | pt.y = getOrigin().y + (getPrimary() * cosalpha * sinbeta + |
| | | getSecondary() * sinalpha * cosbeta); |
| | | result[i] = pt; |
| | | i++; |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | public static class ElementHandler extends Element.ElementHandler |