ApacheCommonsGeometry是一个用于几何处理的通用Java库。该项目的主要目标是提供一组几何类型和实用程序:
在数学上是正确的数值上是准确的易于使用优良性能该代码起源于 commons-math 项目的 org.apache.commons.math3.geometry 包, 但为了更好的可维护性被拉到一个单独的项目中。从那以后,它经历了许多改进,包括对核心接口和类的重大重构。
该库的主要特点包括:
支持一、二、三维的欧几里得空间支持一维和二维的球面空间支持无限大小的几何元素支持对区域的布尔运算(并集、交集、差集、xor)支持读写常见的几何数据格式,如STL和OBJ单一的外部依赖(common-numbers)下面的代码通过计算一个立方体和一个球体的近似值的差值,并使用OBJ数据格式将结果写入文件,给出了一个API的小样本。
//constructaprecisioninstancetohandlefloating-pointcomparisonsPrecision.DoubleEquivalenceprecision=Precision.doubleEquivalenceOfEpsilon(1e-6);//createaBSPtreerepresentingtheunitcubeRegionBSPTree3Dtree=Parallelepiped.unitCube(precision).toTree();//createaspherecenteredontheoriginSpheresphere=Sphere.from(Vector3D.ZERO,0.65,precision);//subtractaBSPtreeapproximationofthespherecontaining512facets//fromthecube,modifyingthecubetreeinplacetree.difference(sphere.toTree(3));//computesomepropertiesoftheresultingregiondoublesize=tree.getSize();//0.11509505362599505Vector3Dcentroid=tree.getCentroid();//(0,0,0)//converttoatrianglemeshTriangleMeshmesh=tree.toTriangleMesh(precision);//saveasanOBJfileIO3D.write(mesh,Paths.get("target/cube-minus-sphere.obj"));
评论