File tree Expand file tree Collapse file tree 2 files changed +41
-0
lines changed
main/java/org/geoscript/js/geom
test/resources/org/geoscript/js/tests/geoscript Expand file tree Collapse file tree 2 files changed +41
-0
lines changed Original file line number Diff line number Diff line change 1111import org .geotools .geometry .jts .GeometryCoordinateSequenceTransformer ;
1212import org .geotools .geometry .jts .ReferencedEnvelope ;
1313import org .geotools .referencing .CRS ;
14+ import org .locationtech .jts .triangulate .ConformingDelaunayTriangulationBuilder ;
15+ import org .locationtech .jts .triangulate .DelaunayTriangulationBuilder ;
1416import org .mozilla .javascript .Context ;
1517import org .mozilla .javascript .FunctionObject ;
1618import org .mozilla .javascript .NativeArray ;
@@ -312,6 +314,24 @@ public ScriptableObject randomPoints(int number) {
312314 return points ;
313315 }
314316
317+ @ JSFunction
318+ public ScriptableObject createDelaunayTriangles (boolean isConforming ) {
319+ org .locationtech .jts .geom .Geometry geom ;
320+ if (isConforming ) {
321+ ConformingDelaunayTriangulationBuilder builder = new ConformingDelaunayTriangulationBuilder ();
322+ builder .setSites (geometry );
323+ geom = builder .getTriangles (factory );
324+ }
325+ else {
326+ DelaunayTriangulationBuilder builder = new DelaunayTriangulationBuilder ();
327+ builder .setSites (geometry );
328+ geom = builder .getTriangles (factory );
329+ }
330+ ScriptableObject triangles = GeometryWrapper .wrap (getParentScope (), geom );
331+ ((Geometry ) triangles ).projection = projection ;
332+ return triangles ;
333+ }
334+
315335 @ JSFunction
316336 public String getGeometryType () {
317337 return geometry .getGeometryType ();
Original file line number Diff line number Diff line change @@ -163,6 +163,27 @@ exports["test: create random points"] = function() {
163163 var points = geom . randomPoints ( 10 )
164164 ASSERT . ok ( points instanceof GEOM . MultiPoint )
165165 ASSERT . strictEqual ( points . components . length , 10 , "geometry has 10 components" ) ;
166+
167+ }
168+
169+ exports [ "test: create conforming delaunay triangles" ] = function ( ) {
170+
171+ var geom = GEOM . Point ( [ 1 , 1 ] ) . buffer ( 50 )
172+ var points = geom . randomPoints ( 20 )
173+ var triangles = points . createDelaunayTriangles ( true )
174+ ASSERT . ok ( triangles instanceof GEOM . GeometryCollection )
175+ ASSERT . ok ( triangles . components . length > 0 , "there should be more than 0 triangles" ) ;
176+
177+ }
178+
179+ exports [ "test: create non-conforming delaunay triangles" ] = function ( ) {
180+
181+ var geom = GEOM . Point ( [ 1 , 1 ] ) . buffer ( 50 )
182+ var points = geom . randomPoints ( 20 )
183+ var triangles = points . createDelaunayTriangles ( false )
184+ ASSERT . ok ( triangles instanceof GEOM . GeometryCollection )
185+ ASSERT . ok ( triangles . components . length > 0 , "there should be more than 0 triangles" ) ;
186+
166187}
167188
168189
You can’t perform that action at this time.
0 commit comments