Apache Commons Geometry 用于几何处理的通用 Java 库开源项目

我要开发同款
匿名用户2021年08月23日
42阅读
开发技术Java
所属分类程序开发、3D图形处理库
授权协议Apache-2.0

作品详情

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"));
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论