Apache Commons Geometry

用于几何处理的通用 Java 库
授权协议 Apache-2.0
开发语言 Java
所属分类 程序开发、 3D图形处理库
软件类型 开源软件
地区 不详
投 递 者 顾炎彬
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Apache Commons Geometry 是一个用于几何处理的通用 Java 库。该项目的主要目标是提供一组几何类型和实用程序:

  • 在数学上是正确的
  • 数值上是准确的
  • 易于使用
  • 优良性能

该代码起源于 commons-math 项目的 org.apache.commons.math3.geometry 包, 但为了更好的可维护性被拉到一个单独的项目中。从那以后,它经历了许多改进,包括对核心接口和类的重大重构。

该库的主要特点包括:

  • 支持一、二、三维的欧几里得空间
  • 支持一维和二维的球面空间
  • 支持无限大小的几何元素
  • 支持对区域的布尔运算(并集、交集、差集、xor)
  • 支持读写常见的几何数据格式,如 STL 和 OBJ
  • 单一的外部依赖(common-numbers)

下面的代码通过计算一个立方体和一个球体的近似值的差值,并使用 OBJ 数据格式将结果写入文件,给出了一个 API 的小样本。

// construct a precision instance to handle floating-point comparisons
Precision.DoubleEquivalence precision = Precision.doubleEquivalenceOfEpsilon(1e-6);

// create a BSP tree representing the unit cube
RegionBSPTree3D tree = Parallelepiped.unitCube(precision).toTree();

// create a sphere centered on the origin
Sphere sphere = Sphere.from(Vector3D.ZERO, 0.65, precision);

// subtract a BSP tree approximation of the sphere containing 512 facets
// from the cube, modifying the cube tree in place
tree.difference(sphere.toTree(3));

// compute some properties of the resulting region
double size = tree.getSize(); // 0.11509505362599505
Vector3D centroid = tree.getCentroid(); // (0, 0, 0)

// convert to a triangle mesh
TriangleMesh mesh = tree.toTriangleMesh(precision);

// save as an OBJ file
IO3D.write(mesh, Paths.get("target/cube-minus-sphere.obj"));
  • 本文参考点击打开链接,由于这篇博客比较旧,我在这篇博客的基础上引用commons math 3.3库做了一些修正。 先列出一个目录:(这个目录是根据commons math 3.3库的结构设计的) Section 1 linear 线性代数(矩阵为主) 1) Vector 向量 2) Matrix 矩阵 3) Matrix Decomposition 矩阵分解 Section 2 analysis

  • 翻译源址:http://commons.apache.org/proper/commons-math/userguide/index.html 1、math包版本3.6 2、commons-math包解决哪些问题 math包由一组数据和统计的包组成,用于解决列表中列出的问题。列表虽不能覆盖math包全部的功能,但可以基本说明math包所能提供的方法。 计算一组数据的均值、方差,还有其他统计类指标。

  • 1 Apache Calcite 1.1 什么是calcite Apache Calcite 是一个动态数据的管理框架,可以用来构建数据库系统的语法解析模块,是高性能数据库的基础 Standard SQL:行业标准的SQL解析器、验证器和JDBC驱动程序 Query optimization: 用关系代数【relational algebra】表示查询,使用规划规则【planning rules】

  • 背景:编程一定要提高你的眼界,进入开源的圈子,一定要熟悉常用的框架,了解流行的工具,对于提高编程效率很有帮助,切勿一味埋头重复造轮子,独立思考无可厚非,但是一定要适可而止。    Apache作为开源组织的领头羊,贡献了很多优秀的项目,也作为共享交流的圈子,让普通的程序员也能与世界顶级大师进行思想的碰撞,本期主要围绕Apache-common组件展开叙述,common组件作为j2se的补充,提供了

  • 1、修改数据库字段类型为geometry ALTER TABLE t_test ALTER COLUMN lnglat_geom TYPE geometry(Point,4326); 2、添加postgis依赖 <!-- postgis --> <dependency> <groupId>net.postgis</groupId> <artifactId>postgis-jdb

 相关资料
  • 我现在正在尝试让它运行在我的Android平板电脑使用处理Android模式。但是我得到了很多编译器错误说“找不到符号”。 我正在使用我使用https://github.com/Processing/processing-library-template创建的一些处理库。 这些库本身并不实际访问系统资源或调用处理库。或Java.util以外的任何其他外部Java。他们只是在操纵数据结构。 更新:进

  • 问题内容: 我目前正在做一个小项目,该项目将从URL加载图像,调整大小,并使用指定的调色板将其颜色深度更改为仅16种颜色。我的主要问题是,我需要一个程序,可以在Android设备和台式计算机上使用。您知道在两个系统上都可以使用的良好图像处理库吗? 提前致谢。 问题答案: 有几种工具: 图片J,http: //rsbweb.nih.gov/ij/ 斐济,http://fiji.sc/wiki/ind

  • 11.4 基于ItemReaders的driving query 在readers 和writers章节中对数据库分页进行了讨论,很多数据库厂商,比如DB2,如果读表也需要使用的在线应用程序的其他部分,悲观锁策略,可能会导致问题.此外,打开游标在超大数据集可能导致某些供应商的问题.因此,许多项目更喜欢使用一个’Driving Query’的方式读入数据.这种方法是通过遍历keys,而不是整个对象,

  • 问题内容: 在我的一个项目中,我有一个管理多个客户(或客户,如果您愿意的话)的应用程序。对于他们每个人,我在数据库上都有一个专用的架构。但是,应用程序一次只处理一个客户端,即,用户必须从应用程序中的一个客户端切换到另一个客户端(在运行时,不重新启动应用程序),以便从该新客户端访问数据。 您将如何管理此类项目的连接以及持久层? 我想为此使用hibernate。在处理几个数据库/模式时,我必须特别注意

  • 我知道Oracle在他们的网站上提到了ZIP/GZIP文件压缩器/解压缩器方法。但我有一个场景,我需要扫描并找出是否涉及任何嵌套的ZIP/RAR。例如,以下情况: 我知道apache commons压缩包和java。util。zip是wideley使用的包,commons compress实际上是为了满足java中缺失的功能。util。zip,例如,在做拉链动作时进行一些角色设置。但我不确定的是,

  • 我正在开发一个Spring boot应用程序,它使用了很多其他第三方库。所有这些库都构建在spring核心之上。通常出现的常见问题是。假设不同库中的bean-name相同,spring在尝试启动服务器时抛出错误。因为我不能控制第三方罐子。我必须重命名我的应用程序中的bean:下面是我为处理这个场景而编写的代码片段。但这不是一个有效的解决方案,因为将来可能会再次出现一些重复的bean。我如何以通用的

  • 问题内容: 在C#中,在处理流对象时,几乎总是使用该模式。例如: 通过使用该块,我们确保代码块执行后立即在流上调用dispose。 我知道Java没有关键字的等效项,但是我的问题是,当使用Java中的对象时,是否需要做任何内务处理以确保将其处置?我在看这个代码示例,但我发现他们什么也不做。 我只是想知道Java在处理处置流方面的最佳实践是什么,或者它足以让垃圾收集器处理它。 问题答案: 通常,您必