Para crear una surface podemos utilizar el método genérico create del manager. Para establecer los valores de las coordenadas podemos utilizar un objeto de tipo GeneralPathX. La forma de crear un polígono triangular de coordendas 0,0 0,5 y 5,5 es la siguiente:
Surface surface = (Surface)geometryManager.create(TYPES.SURFACE, SUBTYPES.GEOM2D);
GeneralPathX generalPathX = new GeneralPathX();
generalPathX.moveTo(0, 0);
generalPathX.lineTo(0, 5);
generalPathX.lineTo(5, 5);
surface.setGeneralPath(generalPathX);
Al igual que ocurre con la Curve, una Surface se tiene que poder crear a partir de los propios objetos del modelo que, en el caso de un polígono serán objetos de tipo Point. El siguiente código crear un polígono con las mismas coordenadas que el ejemplo anterior:
Point point1 = geometryManager.createPoint(0, 0, SUBTYPES.GEOM2D);
Point point2 = geometryManager.createPoint(0, 5, SUBTYPES.GEOM2D);
Point point3 = geometryManager.createPoint(5, 5, SUBTYPES.GEOM2D);
Surface surface = (Surface)geometryManager.create(TYPES.SURFACE, SUBTYPES.GEOM2D);
surface.addVertex(point1);
surface.addVertex(point2);
surface.addVertex(point3);
El método addVertex inserta un nuevo vértice en la última posición en un objeto de tipo Surface y suele ser utilizado en la creación de la geometría. Por otro lado, existen otros métodos que permiten la edición de las coordenadas de los vértices internos que forman el polígono. Por ejemplo, si queremos cambiar el punto final del polígono del ejemplo anterior:
Point endPoint = geometryManager.createPoint(0, 10, SUBTYPES.GEOM2D);
surface.setVertex(2, endPoint);
El método setVertex fija el valor de uno de los puntos internos que forman el polígono y lo reeplaza por el que había anteriormente. El primer argumento de método es la posición de punto interno que se tiene que modificar.
Por otro lado también podemos insertar un punto dentro del polígono. Por ejemplo para insertar el punto 0,7 en la tercera posición del polígono hay que ejecutar el siguiente código:
Point middlePoint = geometryManager.createPoint(0, 7, SUBTYPES.GEOM2D);
surface.insertVertex(2, middlePoint);
El primer argumento es la posición del punto que se quiere introducir. En este caso el polígono resultante tendrá las coordenadas 0,0 0,5 0,7 y 0 10 tal y como la hemos estado definiendo.