Revision 9843 trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgArc.java
DwgArc.java | ||
---|---|---|
36 | 36 |
|
37 | 37 |
import java.awt.geom.Point2D; |
38 | 38 |
import java.util.ArrayList; |
39 |
import java.util.List; |
|
39 | 40 |
|
40 | 41 |
import com.iver.cit.gvsig.fmap.core.FPolyline2D; |
41 | 42 |
import com.iver.cit.gvsig.fmap.core.FShape; |
43 |
import com.iver.cit.jdwglib.dwg.DwgFile; |
|
42 | 44 |
import com.iver.cit.jdwglib.dwg.DwgObject; |
43 | 45 |
import com.iver.cit.jdwglib.dwg.DwgUtil; |
44 | 46 |
import com.iver.cit.jdwglib.dwg.IDwg2FMap; |
45 | 47 |
import com.iver.cit.jdwglib.dwg.IDwg3DTestable; |
48 |
import com.iver.cit.jdwglib.dwg.IDwgBlockMember; |
|
46 | 49 |
import com.iver.cit.jdwglib.dwg.IDwgExtrusionable; |
47 | 50 |
import com.iver.cit.jdwglib.util.AcadExtrusionCalculator; |
48 | 51 |
import com.iver.cit.jdwglib.util.FMapUtil; |
... | ... | |
54 | 57 |
* @author jmorell |
55 | 58 |
*/ |
56 | 59 |
public class DwgArc extends DwgObject |
57 |
implements IDwgExtrusionable, IDwg3DTestable, IDwg2FMap { |
|
60 |
implements IDwgExtrusionable, IDwg3DTestable, IDwg2FMap, IDwgBlockMember {
|
|
58 | 61 |
|
59 | 62 |
private double[] center; |
60 | 63 |
private double radius; |
... | ... | |
301 | 304 |
public double getZ() { |
302 | 305 |
return getCenter()[2]; |
303 | 306 |
} |
307 |
|
|
308 |
public void transform2Block(double[] bPoint, Point2D insPoint, double[] scale, double rot, List dwgObjectsWithoutBlocks, DwgFile callBack) { |
|
309 |
double[] center = getCenter(); |
|
310 |
Point2D pointAux = new Point2D.Double(center[0] - bPoint[0], |
|
311 |
center[1] - bPoint[1]); |
|
312 |
double laX = insPoint.getX() + |
|
313 |
((pointAux.getX()*scale[0])*Math.cos(rot) + |
|
314 |
(pointAux.getY()*scale[1])*(-1)*Math.sin(rot)); |
|
315 |
double laY = insPoint.getY() + |
|
316 |
((pointAux.getX()*scale[0])*Math.sin(rot) + |
|
317 |
(pointAux.getY()*scale[1])*Math.cos(rot)); |
|
318 |
double laZ = center[2] * scale[2]; |
|
319 |
double[] transformedCenter = new double[]{laX, laY, laZ}; |
|
320 |
|
|
321 |
double radius = getRadius(); |
|
322 |
double transformedRadius = radius * scale[0]; |
|
323 |
double initAngle = getInitAngle(); |
|
324 |
double endAngle = getEndAngle(); |
|
325 |
double transformedInitAngle = initAngle + rot; |
|
326 |
if (transformedInitAngle<0) { |
|
327 |
transformedInitAngle = transformedInitAngle + (2*Math.PI); |
|
328 |
} else if (transformedInitAngle>(2*Math.PI)) { |
|
329 |
transformedInitAngle = transformedInitAngle - (2*Math.PI); |
|
330 |
} |
|
331 |
double transformedEndAngle = endAngle + rot; |
|
332 |
if (transformedEndAngle<0) { |
|
333 |
transformedEndAngle = transformedEndAngle + (2*Math.PI); |
|
334 |
} else if (transformedEndAngle>(2*Math.PI)) { |
|
335 |
transformedEndAngle = transformedEndAngle - (2*Math.PI); |
|
336 |
} |
|
337 |
|
|
338 |
setCenter(transformedCenter); |
|
339 |
setRadius(transformedRadius); |
|
340 |
setInitAngle(transformedInitAngle); |
|
341 |
setEndAngle(transformedEndAngle); |
|
342 |
dwgObjectsWithoutBlocks.add(this); |
|
343 |
|
|
344 |
} |
|
304 | 345 |
} |
Also available in: Unified diff