如何使用数学方程在JavaFX中绘制3D图形,基本上是二元函数,例如:z=2xy
和其他3D图形?
是否有办法在JavaFX中实现它,还是我需要另一个Java库来完成。
TriangleMesh
)外,不包括其他元素,您可以使用它们创建复杂的形状,例如3D图形。f=f(x,y)
是理解TriangleMesh
如何工作的一个很好的用例。Function
函数接口来表达:Function<Point2D,Number> function2D;
因此,对于任何坐标对(x,y),它将返回一个值:
double value = function2D.apply(new Point2D(x,y)).doubleValue();
网格或坐标范围
如果你想象一个矩形网格和给定数量的划分,你就有了一种获取所有绘图(x,y)
点的方法,并且使用该函数,你将有第三个坐标z
来生成网格所需的3D点。
TriangleMesh triangleMesh = new TriangleMesh();
triangleMesh.getPoints().setAll(x0,y0,z0, x1,y1,z1, ...);
triangleMesh.getTexCoords().setAll(0,0);
最后,您需要提供面,即三角形。 您只需要获取网格中每个三角形的顶点索引,例如在此 示例 中,使用0表示纹理索引:
triangleMesh.getFaces().setAll(0,0,20,0,21,0,...);
然后您将拥有一个网格,可以在场景中渲染。
第三方库
您可以查看FXyz库,其中您将找到SurfacePlotMesh
,它将完全按照上述描述执行,包括纹理坐标。 FXyz Sampler是可视化此库中大部分可能性的应用程序。这是一个绘制函数的示例:
对于其他的三维形状,请查看库中其余的三维复杂形状。
您还可以查看VRL Studio,其中包括一个出色的三维函数绘图器等功能。
JavaFX没有内置机制来绘制3D图形。您需要使用第三方库。