Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_geometries / src / org / gvsig / fmap / geom / primitive / impl / EllipticArc2D.java @ 29972

History | View | Annotate | Download (17.2 KB)

1
/*
2
 * Created on 09-feb-2005
3
 *
4
 * gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
5
 *
6
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
7
 *
8
 * This program is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU General Public License
10
 * as published by the Free Software Foundation; either version 2
11
 * of the License, or (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License
19
 * along with this program; if not, write to the Free Software
20
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
21
   USA.
22
 *
23
 * For more information, contact:
24
 *
25
 *  Generalitat Valenciana
26
 *   Conselleria d'Infraestructures i Transport
27
 *   Av. Blasco Ib��ez, 50
28
 *   46010 VALENCIA
29
 *   SPAIN
30
 *
31
 *      +34 963862235
32
 *   gvsig@gva.es
33
 *      www.gvsig.gva.es
34
 *
35
 *    or
36
 *
37
 *   IVER T.I. S.A
38
 *   Salamanca 50
39
 *   46005 Valencia
40
 *   Spain
41
 *
42
 *   +34 963163400
43
 *   dac@iver.es
44
 */
45
package org.gvsig.fmap.geom.primitive.impl;
46

    
47
import java.awt.geom.AffineTransform;
48
import java.awt.geom.Arc2D;
49
import java.awt.geom.Point2D;
50
import java.awt.geom.Rectangle2D;
51
import java.util.ArrayList;
52

    
53
import org.cresques.cts.IProjection;
54
import org.gvsig.fmap.geom.Geometry;
55
import org.gvsig.fmap.geom.handler.AbstractHandler;
56
import org.gvsig.fmap.geom.handler.CuadrantHandler;
57
import org.gvsig.fmap.geom.handler.Handler;
58
import org.gvsig.fmap.geom.primitive.EllipticArc;
59
import org.gvsig.fmap.geom.primitive.GeneralPathX;
60
import org.gvsig.fmap.geom.primitive.Point;
61
import org.gvsig.fmap.geom.primitive.SurfaceAppearance;
62
import org.gvsig.fmap.geom.type.GeometryType;
63
import org.gvsig.fmap.geom.util.UtilFunctions;
64

    
65

    
66

    
67
/**
68
 * DOCUMENT ME!
69
 *
70
 * @author Vicente Caballero Navarro
71
 */
72
public class EllipticArc2D extends Curve2D implements EllipticArc {
73
        private static final long serialVersionUID = 2988037614443119814L;
74

    
75
        private Point2D axis1Start;
76
        private Point2D axis1End;
77
        private double semiAxis2Length;
78
        private double angSt;
79
        private double angExt;
80

    
81
        /**
82
         * The constructor with the GeometryType like and argument 
83
         * is used by the {@link GeometryType}{@link #create()}
84
         * to create the geometry
85
         * @param type
86
         * The geometry type
87
         */
88
        public EllipticArc2D(GeometryType geometryType) {
89
                super(geometryType);                
90
        }
91
        
92
        /**
93
         * Constructor used in the {@link Geometry#cloneGeometry()} method
94
         * @param id
95
         * @param projection
96
         * @param gpx
97
         * @param axis1Start
98
         * @param axis1End
99
         * @param semiAxis2Length
100
         * @param angSt
101
         * @param angExt
102
         */
103
        EllipticArc2D(GeometryType geometryType, String id, IProjection projection, GeneralPathX gpx, Point2D axis1Start,Point2D axis1End, double semiAxis2Length, double angSt, double angExt) {
104
                super(geometryType, id, projection, gpx);
105
                this.axis1Start = axis1Start;
106
                this.axis1End = axis1End;
107
                this.semiAxis2Length = semiAxis2Length;
108
                this.angSt = angSt;
109
                this.angExt = angExt;
110
        }
111
        
112
        /*
113
         * (non-Javadoc)
114
         * @see org.gvsig.fmap.geom.primitive.EllipticArc#getAxis1Start()
115
         */
116
        public Point getAxis1Start(){
117
                try {
118
                        return new org.gvsig.fmap.geom.primitive.impl.Point2D(axis1Start);
119
                } catch (Exception e){
120
                        return null;
121
                }
122
        }
123
        
124
        /*
125
         * (non-Javadoc)
126
         * @see org.gvsig.fmap.geom.primitive.EllipticArc#getAxis1End()
127
         */
128
        public Point getAxis1End(){
129
                try {
130
                        return new org.gvsig.fmap.geom.primitive.impl.Point2D(axis1End);
131
                } catch (Exception e){
132
                        return null;
133
                }
134
        }
135
        
136
        /*
137
         * (non-Javadoc)
138
         * @see org.gvsig.fmap.geom.primitive.EllipticArc#getAxis2Dist()
139
         */
140
        public double getAxis2Dist(){
141
                return this.semiAxis2Length;
142
        }
143
        
144
        /*
145
         * (non-Javadoc)
146
         * @see org.gvsig.fmap.geom.primitive.EllipticArc#getAngSt()
147
         */
148
        public double getAngSt(){
149
                return this.angSt;
150
        }
151
        
152
        /*
153
         * (non-Javadoc)
154
         * @see org.gvsig.fmap.geom.primitive.EllipticArc#getAngExt()
155
         */
156
        public double getAngExt(){
157
                return this.angExt;
158
        }
159

    
160
        /*
161
         * (non-Javadoc)
162
         * @see org.gvsig.fmap.geom.primitive.impl.OrientablePrimitive2D#transform(java.awt.geom.AffineTransform)
163
         */
164
        public void transform(AffineTransform at) {
165
                Point2D center = new Point2D.Double((axis1Start.getX() + axis1End.getX()) / 2,
166
                                (axis1Start.getY() + axis1End.getY()) / 2);
167
                Point2D pdist = UtilFunctions.getPerpendicularPoint(axis1Start, axis1End, center,
168
                                semiAxis2Length);
169
                Point2D aux1 = new Point2D.Double();
170
                at.transform(axis1Start, aux1);
171
                axis1Start = aux1;
172
                Point2D aux2 = new Point2D.Double();
173
                at.transform(axis1End, aux2);
174
                axis1End = aux2;
175

    
176
                center = new Point2D.Double((axis1Start.getX() + axis1End.getX()) / 2, (axis1Start
177
                                .getY() + axis1End.getY()) / 2);
178

    
179
                Point2D aux3 = new Point2D.Double();
180
                at.transform(pdist, aux3);
181
                semiAxis2Length = center.distance(aux3);
182
                gp.transform(at);
183
        }
184
        
185
        /*
186
         * (non-Javadoc)
187
         * @see org.gvsig.fmap.geom.primitive.impl.Curve2D#getShapeType()
188
         */
189
        public int getShapeType() {
190
                return TYPES.ELLIPTICARC;
191
        }
192
        
193
        /*
194
         * (non-Javadoc)
195
         * @see org.gvsig.fmap.geom.primitive.impl.OrientablePrimitive2D#getStretchingHandlers()
196
         */
197
        public Handler[] getStretchingHandlers() {
198
                ArrayList handlers = new ArrayList();
199
                Rectangle2D rect = this.getBounds2D();
200
                handlers.add(new CenterHandler(0, rect.getCenterX(), rect.getCenterY()));
201
                return (Handler[]) handlers.toArray(new Handler[0]);
202
        }
203

    
204
        /*
205
         * (non-Javadoc)
206
         * @see org.gvsig.fmap.geom.primitive.impl.OrientablePrimitive2D#getSelectHandlers()
207
         */
208
        public Handler[] getSelectHandlers() {
209
                //TODO: Faltaria tener en cuenta handlers para los angulos angSt y angExt
210
                ArrayList handlers = new ArrayList();
211
                Rectangle2D rect = this.getBounds2D();
212
                handlers.add(new CenterSelHandler(0, rect.getCenterX(), rect.getCenterY()));
213
                handlers.add(new Axis1StSelHandler(1, axis1Start.getX(), axis1Start.getY()));
214
                handlers.add(new Axis1EndSelHandler(2, axis1End.getX(), axis1End.getY()));
215
                Point2D mediop = new Point2D.Double((axis1End.getX() + axis1Start.getX()) / 2,
216
                                (axis1End.getY() + axis1Start.getY()) / 2);
217
                Point2D[] p = UtilFunctions.getPerpendicular(axis1Start, axis1End, mediop);
218
                Point2D u = UtilFunctions.getPoint(mediop, p[1], semiAxis2Length);
219
                Point2D d = UtilFunctions.getPoint(mediop, p[1], -semiAxis2Length);
220

    
221
                handlers.add(new RadioSelYHandler(3, u.getX(), u.getY()));
222
                handlers.add(new RadioSelYHandler(4, d.getX(), d.getY()));
223

    
224
                return (Handler[]) handlers.toArray(new Handler[0]);
225
        }
226

    
227
        /**
228
         * DOCUMENT ME!
229
         *
230
         * @author Vicente Caballero Navarro
231
         */
232
        class CenterHandler extends AbstractHandler implements Handler {
233
                /**
234
                 * Crea un nuevo PointHandler.
235
                 *
236
                 * @param i
237
                 *            DOCUMENT ME!
238
                 * @param x
239
                 *            DOCUMENT ME!
240
                 * @param y
241
                 *            DOCUMENT ME!
242
                 */
243
                public CenterHandler(int i, double x, double y) {
244
                        point = new Point2D.Double(x, y);
245
                        index = i;
246
                }
247

    
248
                /**
249
                 * DOCUMENT ME!
250
                 *
251
                 * @param x
252
                 *            DOCUMENT ME!
253
                 * @param y
254
                 *            DOCUMENT ME!
255
                 *
256
                 * @return DOCUMENT ME!
257
                 */
258
                public void move(double x, double y) {
259
                        for (int i = 0; i < gp.getNumCoords() / 2; i++) {
260
                                gp.getPointCoords()[i * 2] += x;
261
                                gp.getPointCoords()[i * 2 + 1] += y;
262
                        }
263
                        axis1Start = new Point2D.Double(axis1Start.getX() + x, axis1Start.getY() + y);
264
                        axis1End = new Point2D.Double(axis1End.getX() + x, axis1End.getY() + y);
265
                }
266

    
267
                /**
268
                 * @see org.gvsig.fmap.geom.handler.Handler#set(double, double)
269
                 */
270
                public void set(double x, double y) {
271
                }
272
        }
273

    
274
        /**
275
         * DOCUMENT ME!
276
         *
277
         * @author Vicente Caballero Navarro
278
         */
279
        class CenterSelHandler extends AbstractHandler implements Handler {
280
                /**
281
                 * Crea un nuevo PointHandler.
282
                 *
283
                 * @param i
284
                 *            DOCUMENT ME!
285
                 * @param x
286
                 *            DOCUMENT ME!
287
                 * @param y
288
                 *            DOCUMENT ME!
289
                 */
290
                public CenterSelHandler(int i, double x, double y) {
291
                        point = new Point2D.Double(x, y);
292
                        index = i;
293
                }
294

    
295
                /**
296
                 * DOCUMENT ME!
297
                 *
298
                 * @param x
299
                 *            DOCUMENT ME!
300
                 * @param y
301
                 *            DOCUMENT ME!
302
                 *
303
                 * @return DOCUMENT ME!
304
                 */
305
                public void move(double x, double y) {
306
                        for (int i = 0; i < gp.getNumCoords() / 2; i++) {
307
                                gp.getPointCoords()[i * 2] += x;
308
                                gp.getPointCoords()[i * 2 + 1] += y;
309
                        }
310
                }
311

    
312
                /**
313
                 * @see org.gvsig.fmap.geom.handler.Handler#set(double, double)
314
                 */
315
                public void set(double x, double y) {
316
                        Point2D center = new Point2D.Double((axis1Start.getX() + axis1End.getX()) / 2,
317
                                        (axis1Start.getY() + axis1End.getY()) / 2);
318
                        double dx = x - center.getX();
319
                        double dy = y - center.getY();
320
                        for (int i = 0; i < gp.getNumCoords() / 2; i++) {
321
                                gp.getPointCoords()[i * 2] += dx;
322
                                gp.getPointCoords()[i * 2 + 1] += dy;
323
                        }
324
                        axis1Start = new Point2D.Double(axis1Start.getX() + dx, axis1Start.getY() + dy);
325
                        axis1End = new Point2D.Double(axis1End.getX() + dx, axis1End.getY() + dy);
326
                }
327
        }
328

    
329
        /**
330
         * DOCUMENT ME!
331
         *
332
         * @author Vicente Caballero Navarro
333
         */
334
        class Axis1StSelHandler extends AbstractHandler implements CuadrantHandler {
335
                /**
336
                 * Crea un nuevo PointHandler.
337
                 *
338
                 * @param i
339
                 *            DOCUMENT ME!
340
                 * @param x
341
                 *            DOCUMENT ME!
342
                 * @param y
343
                 *            DOCUMENT ME!
344
                 */
345
                public Axis1StSelHandler(int i, double x, double y) {
346
                        point = new Point2D.Double(x, y);
347
                        index = i;
348
                }
349

    
350
                /**
351
                 * DOCUMENT ME!
352
                 *
353
                 * @param x
354
                 *            DOCUMENT ME!
355
                 * @param y
356
                 *            DOCUMENT ME!
357
                 *
358
                 * @return DOCUMENT ME!
359
                 */
360
                public void move(double x, double y) {
361

    
362
                }
363

    
364
                /**
365
                 * @see org.gvsig.fmap.geom.handler.Handler#set(double, double)
366
                 */
367
                public void set(double x, double y) {
368
                        // TODO comentado para quitar warning: double dx=x-init.getX();
369
                        // TODO comentado para quitar warning: double dy=y-init.getY();
370
                        Point2D center = new Point2D.Double((axis1Start.getX() + axis1End.getX()) / 2,
371
                                        (axis1Start.getY() + axis1End.getY()) / 2);
372
                        // Point2D[]
373
                        // p1=TrigonometricalFunctions.getPerpendicular(init,end,center);
374
                        // Point2D[]
375
                        // p2=TrigonometricalFunctions.getPerpendicular(p1[0],p1[1],new
376
                        // Point2D.Double(x,y));
377

    
378
                        // Point2D
379
                        // pl=TrigonometricalFunctions.getIntersection(p2[0],p2[1],p1[0],p1[1]);
380
                        // double xdist=2*pl.distance(x,y);
381
                        double xdist = 2 * center.distance(x, y);
382
                        // init=new Point2D.Double(init.getX()+dx,init.getY()+dy);
383
                        axis1Start = UtilFunctions.getPoint(center, axis1Start, center.distance(x, y));
384
                        axis1End = UtilFunctions.getPoint(axis1Start, center, xdist);
385
                        Arc2D.Double arc = new Arc2D.Double(axis1Start.getX(), axis1Start.getY()
386
                                        - semiAxis2Length, xdist, 2 * semiAxis2Length, Math.toDegrees(angSt), Math.toDegrees(angExt), Arc2D.OPEN);
387
                        // TODO comentado para quitar warning: Point2D rotationPoint = new
388
                        // Point2D.Double(init.getX() + xdist /2, init.getY());
389

    
390
                        double angle = UtilFunctions.getAngle(axis1Start, axis1End);
391
                        AffineTransform mT = AffineTransform.getRotateInstance(angle, axis1Start
392
                                        .getX(), axis1Start.getY());
393
                        gp = new GeneralPathX(arc.getPathIterator(null));
394
                        gp.transform(mT);
395

    
396
                }
397
        }
398

    
399
        /**
400
         * DOCUMENT ME!
401
         *
402
         * @author Vicente Caballero Navarro
403
         */
404
        class Axis1EndSelHandler extends AbstractHandler implements CuadrantHandler {
405
                /**
406
                 * Crea un nuevo PointHandler.
407
                 *
408
                 * @param i
409
                 *            DOCUMENT ME!
410
                 * @param x
411
                 *            DOCUMENT ME!
412
                 * @param y
413
                 *            DOCUMENT ME!
414
                 */
415
                public Axis1EndSelHandler(int i, double x, double y) {
416
                        point = new Point2D.Double(x, y);
417
                        index = i;
418
                }
419

    
420
                /**
421
                 * DOCUMENT ME!
422
                 *
423
                 * @param x
424
                 *            DOCUMENT ME!
425
                 * @param y
426
                 *            DOCUMENT ME!
427
                 *
428
                 * @return DOCUMENT ME!
429
                 */
430
                public void move(double x, double y) {
431

    
432
                }
433

    
434
                /**
435
                 * @see org.gvsig.fmap.geom.handler.Handler#set(double, double)
436
                 */
437
                public void set(double x, double y) {
438
                        // double dx=x-getPoint().getX();
439
                        // double dy=y-getPoint().getY();
440
                        Point2D center = new Point2D.Double((axis1Start.getX() + axis1End.getX()) / 2,
441
                                        (axis1Start.getY() + axis1End.getY()) / 2);
442
                        // Point2D[]
443
                        // p1=TrigonometricalFunctions.getPerpendicular(init,end,center);
444
                        // Point2D[]
445
                        // p2=TrigonometricalFunctions.getPerpendicular(p1[0],p1[1],new
446
                        // Point2D.Double(x,y));
447

    
448
                        // Point2D
449
                        // pl=TrigonometricalFunctions.getIntersection(p2[0],p2[1],p1[0],p1[1]);
450
                        // double xdist=2*pl.distance(x,y);
451
                        double xdist = 2 * center.distance(x, y);
452
                        axis1End = UtilFunctions.getPoint(center, axis1End, center.distance(x, y));
453
                        // end=new Point2D.Double(end.getX()+dx,end.getY()+dy);
454
                        axis1Start = UtilFunctions.getPoint(axis1End, center, xdist);
455
                        Arc2D.Double arc = new Arc2D.Double(axis1Start.getX(), axis1Start.getY()
456
                                        - semiAxis2Length, xdist, 2 * semiAxis2Length, Math.toDegrees(angSt), Math.toDegrees(angExt), Arc2D.OPEN);
457
                        // Point2D rotationPoint = new Point2D.Double(init.getX() + xdist
458
                        // /2, init.getY());
459

    
460
                        double angle = UtilFunctions.getAngle(axis1Start, axis1End);
461
                        AffineTransform mT = AffineTransform.getRotateInstance(angle, axis1Start
462
                                        .getX(), axis1Start.getY());
463
                        gp = new GeneralPathX(arc.getPathIterator(null));
464
                        gp.transform(mT);
465

    
466
                }
467
        }
468

    
469
        /**
470
         * DOCUMENT ME!
471
         *
472
         * @author Vicente Caballero Navarro
473
         */
474
        class RadioSelYHandler extends AbstractHandler implements CuadrantHandler {
475
                /**
476
                 * Crea un nuevo PointHandler.
477
                 *
478
                 * @param i
479
                 *            DOCUMENT ME!
480
                 * @param x
481
                 *            DOCUMENT ME!
482
                 * @param y
483
                 *            DOCUMENT ME!
484
                 */
485
                public RadioSelYHandler(int i, double x, double y) {
486
                        point = new Point2D.Double(x, y);
487
                        index = i;
488
                }
489

    
490
                /**
491
                 * DOCUMENT ME!
492
                 *
493
                 * @param x
494
                 *            DOCUMENT ME!
495
                 * @param y
496
                 *            DOCUMENT ME!
497
                 *
498
                 * @return DOCUMENT ME!
499
                 */
500
                public void move(double x, double y) {
501

    
502
                }
503

    
504
                /**
505
                 * @see org.gvsig.fmap.geom.handler.Handler#set(double, double)
506
                 */
507
                public void set(double x, double y) {
508
                        semiAxis2Length = new Point2D.Double((axis1Start.getX() + axis1End.getX()) / 2, (axis1Start
509
                                        .getY() + axis1End.getY()) / 2).distance(x, y);
510
                        // ydist=getSelectHandlers()[1].getPoint().distance(x,y);
511
                        // Point2D center=new Point2D.Double((init.getX() + end.getX()) / 2,
512
                        // (init.getY() + end.getY()) / 2);
513
                        // Point2D[]
514
                        // p=TrigonometricalFunctions.getPerpendicular(init,end,new
515
                        // Point2D.Double(x,y));
516
                        // Point2D
517
                        // pl=TrigonometricalFunctions.getIntersection(p[0],p[1],init,end);
518
                        // double xdist=2*pl.distance(x,y);
519
                        double xdist = axis1Start.distance(axis1End);
520
                        Arc2D.Double arc = new Arc2D.Double(axis1Start.getX(), axis1Start.getY()
521
                                        - semiAxis2Length, xdist, 2 * semiAxis2Length, Math.toDegrees(angSt), Math.toDegrees(angExt), Arc2D.OPEN);
522
                        // Point2D rotationPoint = new Point2D.Double(init.getX() + xdist
523
                        // /2, init.getY());
524

    
525
                        double angle = UtilFunctions.getAngle(axis1Start, axis1End);
526
                        AffineTransform mT = AffineTransform.getRotateInstance(angle, axis1Start
527
                                        .getX(), axis1Start.getY());
528
                        gp = new GeneralPathX(arc.getPathIterator(null));
529
                        gp.transform(mT);
530
                }
531
        }
532

    
533
//TODO: Faltan Handlers para los angulos inicial y de extension (o final)
534

    
535

    
536

    
537
        /* (non-Javadoc)
538
         * @see com.iver.cit.gvsig.fmap.core.FPolyline2D#intersects(java.awt.geom.Rectangle2D)
539
         */
540
        public boolean intersects(Rectangle2D r) {
541
                return gp.intersects(r);
542
        }
543

    
544
        /* (non-Javadoc)
545
         * @see org.gvsig.fmap.geom.primitive.EllipticArc#setPoints(org.gvsig.fmap.geom.primitive.Point, java.awt.geom.Point2D, double, double, double)
546
         */
547
        public void setPoints(Point axis1Start, Point axis1End,
548
                        double semiAxis2Length, double angSt, double angExt) {
549
                Point2D _axis1Start = new java.awt.geom.Point2D.Double(axis1Start.getCoordinateAt(0), axis1Start.getCoordinateAt(1));
550
                Point2D _axis1End = new java.awt.geom.Point2D.Double(axis1End.getCoordinateAt(0), axis1End.getCoordinateAt(1));
551
                setPoints(_axis1Start, _axis1End, semiAxis2Length, angSt, angExt);
552
        }
553

    
554
        /* (non-Javadoc)
555
         * @see org.gvsig.fmap.geom.primitive.EllipticArc#setPoints(java.awt.geom.Point2D, java.awt.geom.Point2D, double, double, double)
556
         */
557
        private void setPoints(Point2D axis1Start, Point2D axis1End,
558
                        double semiAxis2Length, double angSt, double angExt) {
559
                double axis1Lenght = axis1Start.distance(axis1End);
560
                Point2D center = new Point2D.Double((axis1Start.getX()+axis1End.getX())/2, (axis1Start.getY()+axis1End.getY())/2);
561
                double x = center.getX()-axis1Lenght/2;
562
                double y = center.getY()-semiAxis2Length;
563

    
564
                double angle = UtilFunctions.getAngle(center, axis1Start);
565

    
566
                Arc2D.Double arc = new Arc2D.Double(
567
                                x,
568
                                y,
569
                                axis1Lenght,
570
                                2 * semiAxis2Length,
571
                                Math.toDegrees(angSt),
572
                                Math.toDegrees(angExt),
573
                                Arc2D.OPEN);
574
                AffineTransform mT = AffineTransform.getRotateInstance(angle,
575
                                center.getX(), center.getY());
576
                GeneralPathX gp = new GeneralPathX(arc.getPathIterator(null));
577
                gp.transform(mT);
578

    
579
                this.gp = gp;
580
                this.axis1Start = axis1Start;
581
                this.axis1End = axis1End;
582
                this.semiAxis2Length = semiAxis2Length;
583
                this.angSt = angSt;
584
                this.angExt = angExt;                
585
        }
586
        
587
        /*
588
         * (non-Javadoc)
589
         * @see org.gvsig.fmap.geom.primitive.Curve2D#setGeneralPath(org.gvsig.fmap.geom.primitive.GeneralPathX)
590
         */
591
        public void setGeneralPath(GeneralPathX generalPathX) {
592
                throw new UnsupportedOperationException("Use setPoints(Point center, Point radious)");
593
        }
594

    
595
        public SurfaceAppearance getSurfaceAppearance() {
596
                // TODO Auto-generated method stub
597
                return null;
598
        }
599

    
600
        public void setSurfaceAppearance(SurfaceAppearance app) {
601
                // TODO Auto-generated method stub
602
                
603
        }
604
}