Java 创建对象三角形网格时出错

Java 创建对象三角形网格时出错,java,javafx,geometry,javafx-8,javafx-3d,Java,Javafx,Geometry,Javafx 8,Javafx 3d,我想创建一个字母T形式的图形 当我用这些点创建对象时,异常会消失 有人见过这个吗? 我使用FXyz3D final List<Point3D> points = new ArrayList<>(//I am trying to create an array of points (x, y, 0) Arrays.asList( new Point3D(0,150,0), new Point3D(0, 90,0), new Point3D(10,90,0), new Poi

我想创建一个字母T形式的图形
当我用这些点创建对象时,异常会消失
有人见过这个吗?

我使用FXyz3D

final List<Point3D> points = new ArrayList<>(//I am trying to create an array of points (x, y, 0)
Arrays.asList(
new Point3D(0,150,0),
new Point3D(0, 90,0),
new Point3D(10,90,0),
new Point3D(30,90,0),
new Point3D(40,90,0),
new Point3D(10,0,0),
new Point3D(30,0,0),
new Point3D(40,150,0))
            );
TriangulatedMesh customShape = new 
TriangulatedMesh(points,20);//Exception falls on this place
final List points=new ArrayList(//我正在尝试创建一个点数组(x,y,0)
Arrays.asList(
新的Point3D(0150,0),
新的Point3D(0,90,0),
新的Point3D(10,90,0),
新的Point3D(30,90,0),
新的Point3D(40,90,0),
新的Point3D(10,0,0),
新的Point3D(30,0,0),
新Point3D(40150,0))
);
三角形网格自定义形状=新建
三角形网格(点,20)//这个地方例外

这是我运行程序时的控制台输出

我不明白是什么问题。

应用程序启动方法中出现异常 java.lang.reflect.InvocationTargetException 位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 位于java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.base/java.lang.reflect.Method.invoke(Method.java:566) 位于javafx.graphics/com.sun.javafx.application.LaunchImpl.launchApplicationWithArgs(LaunchImpl.java:464) 位于javafx.graphics/com.sun.javafx.application.LaunchImpl.launchApplication(LaunchImpl.java:363) 位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 位于java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.base/java.lang.reflect.Method.invoke(Method.java:566) 位于java.base/sun.launcher.launchelper$FXHelper.main(launchelper.java:1051) 原因:java.lang.RuntimeException:应用程序启动方法中的异常 位于javafx.graphics/com.sun.javafx.application.LaunchImpl.launchApplication1(LaunchImpl.java:900) 在javafx.graphics/com.sun.javafx.application.LaunchImpl.lambda$launchApplication$2(LaunchImpl.java:195) 位于java.base/java.lang.Thread.run(Thread.java:834) 原因:java.lang.RuntimeException:交叉约束 位于org.poly2tri.triangulation.delaunay.sweep.DTSweep.flipEdgeEvent(DTSweep.java:657) 位于org.poly2tri.triangulation.delaunay.sweep.DTSweep.edgeEvent(DTSweep.java:631) 位于org.poly2tri.triangulation.delaunay.sweep.DTSweep.edgeEvent(DTSweep.java:626) 位于org.poly2tri.triangulation.delaunay.sweep.DTSweep.edgeEvent(DTSweep.java:348) 位于org.poly2tri.triangulation.delaunay.sweep.DTSweep.sweep(DTSweep.java:110) 位于org.poly2tri.triangulation.delaunay.sweep.DTSweep.triangulate(DTSweep.java:72) 位于org.poly2tri.poly2tri.triangulate(poly2tri.java:108) 位于org.poly2tri.poly2tri.triangulate(poly2tri.java:60) 位于org.fxyz3d.shapes.primitives.TriangulatedMesh.createMesh(TriangulatedMesh.java:285) 位于org.fxyz3d.shapes.primitives.TriangulatedMesh.createMesh(TriangulatedMesh.java:218) 位于org.fxyz3d.shapes.primitives.TriangulatedMesh.updateMesh(TriangulatedMesh.java:112) 位于org.fxyz3d.shapes.primitives.TriangulatedMesh.(TriangulatedMesh.java:103) 位于org.fxyz3d.shapes.primitives.TriangulatedMesh.(TriangulatedMesh.java:93) 位于org.fxyz3d.shapes.primitives.TriangulatedMesh.(TriangulatedMesh.java:90) 位于org.fxyz3d.shapes.primitives.TriangulatedMesh.(TriangulatedMesh.java:82) 在sampleFxyz3D.Sample.start处(Sample.java:89) 在javafx.graphics/com.sun.javafx.application.launchempl.lambda$launchApplication1$9(launchempl.java:846) 在javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455) 在javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) 位于java.base/java.security.AccessController.doPrivileged(本机方法) 位于javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) 位于javafx.graphics/com.sun.glass.ui.invokelateDispatcher$Future.run(invokelateDispatcher.java:96) 在javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.\u runLoop(本机方法) 在javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277) ... 还有一个 运行应用程序sampleFxyz3D.Sample时出现异常
最终列表点=新建ArrayList(Arrays.asList(
新的Point3D(0,90,0),
新的Point3D(0150,0),
新Point3D(40150,0),
新的Point3D(40,90,0),
新的Point3D(30,90,0),
新的Point3D(30,0,0),
新的Point3D(10,0,0),
新Point3D(10,90,0)
)
);

点按顺序排列形成闭合多边形很重要。

确保点按顺序排列形成闭合多边形。你是对的,我解决了这个问题。非常感谢你
final List<Point3D> points = new ArrayList<>(Arrays.asList(

            new Point3D(0, 90,0),
            new Point3D(0,150,0),

            new Point3D(40,150,0),
            new Point3D(40,90,0),

            new Point3D(30,90,0),
            new Point3D(30,0,0),

            new Point3D(10,0,0),
            new Point3D(10,90,0)
    )
            );