Revision 9843 trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgEllipse.java
DwgEllipse.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.util.FMapUtil; |
47 | 50 |
import com.iver.cit.jdwglib.util.GisModelCurveCalculator; |
48 | 51 |
|
... | ... | |
52 | 55 |
* @author jmorell |
53 | 56 |
*/ |
54 | 57 |
public class DwgEllipse extends DwgObject |
55 |
implements IDwg3DTestable, IDwg2FMap{ |
|
58 |
implements IDwg3DTestable, IDwg2FMap, IDwgBlockMember{
|
|
56 | 59 |
public DwgEllipse(int index) { |
57 | 60 |
super(index); |
58 | 61 |
// TODO Auto-generated constructor stub |
... | ... | |
276 | 279 |
public String toString(){ |
277 | 280 |
return "Ellipse"; |
278 | 281 |
} |
282 |
public void transform2Block(double[] bPoint, Point2D insPoint, double[] scale, double rot, List dwgObjectsWithoutBlocks, DwgFile callBack) { |
|
283 |
double[] center = getCenter(); |
|
284 |
Point2D pointAux = new Point2D.Double(center[0] - bPoint[0], |
|
285 |
center[1] - bPoint[1]); |
|
286 |
double laX = insPoint.getX() + |
|
287 |
((pointAux.getX()*scale[0])*Math.cos(rot) + |
|
288 |
(pointAux.getY()*scale[1])*(-1)*Math.sin(rot)); |
|
289 |
double laY = insPoint.getY() + |
|
290 |
((pointAux.getX()*scale[0])*Math.sin(rot) + |
|
291 |
(pointAux.getY()*scale[1])*Math.cos(rot)); |
|
292 |
double laZ = center[2] * scale[2]; |
|
293 |
double[] transformedCenter = new double[]{laX, laY, laZ}; |
|
294 |
double[] majorAxisVector = getMajorAxisVector(); |
|
295 |
double[] transformedMajorAxisVector = new double[]{majorAxisVector[0] * scale[0], |
|
296 |
majorAxisVector[1] * scale[1], |
|
297 |
majorAxisVector[2] * scale[2]}; |
|
298 |
//TODO: Rotar un ?ngulo rot el vector majorAxisVector fijado en |
|
299 |
// center. |
|
300 |
double axisRatio = getAxisRatio(); |
|
301 |
double transformedAxisRatio = axisRatio; |
|
302 |
double initAngle = getInitAngle(); |
|
303 |
double endAngle = getEndAngle(); |
|
304 |
double transformedInitAngle = initAngle + rot; |
|
305 |
if (transformedInitAngle<0) { |
|
306 |
transformedInitAngle = transformedInitAngle + (2*Math.PI); |
|
307 |
} else if (transformedInitAngle>(2*Math.PI)) { |
|
308 |
transformedInitAngle = transformedInitAngle - (2*Math.PI); |
|
309 |
} |
|
310 |
double transformedEndAngle = endAngle + rot; |
|
311 |
if (transformedEndAngle<0) { |
|
312 |
transformedEndAngle = transformedEndAngle + (2*Math.PI); |
|
313 |
} else if (transformedEndAngle>(2*Math.PI)) { |
|
314 |
transformedEndAngle = transformedEndAngle - (2*Math.PI); |
|
315 |
} |
|
316 |
setCenter(transformedCenter); |
|
317 |
setMajorAxisVector(transformedMajorAxisVector); |
|
318 |
setAxisRatio(transformedAxisRatio); |
|
319 |
setInitAngle(transformedInitAngle); |
|
320 |
setEndAngle(transformedEndAngle); |
|
321 |
dwgObjectsWithoutBlocks.add(this); |
|
322 |
} |
|
279 | 323 |
} |
Also available in: Unified diff