几何工具引擎(geometry tool engine)

GeometricTools是一个用C++14编写的计算引擎,专注于数学、几何、图形和图像分析,支持GPU编程和多线程。该引擎的源代码可在Boost许可证下免费下载,适用于Linux和Windows系统,需要OpenGL4.5或DirectX11.1。它包含了数学、图形、图像处理和物理领域的各种算法,如线性代数、估计、数值方法、计算几何等,并提供了相关文档和单元测试套件。
摘要由CSDN通过智能技术生成

Geometric Tools

Geometric Tools

欢迎访问Geometric Tools的官方网站,这是数学、几何、图形、图像分析和物理领域计算的源代码集合。该引擎是用C++14编写的,因此,可以移植地访问内核上多线程编程的标准构造。该引擎还支持使用通用GPU编程(GPGPU)的高性能计算。部分代码在各种书籍以及本网站提供的文档中进行了描述。源代码是免费下载的,包含在Boost许可证中。发布时间表和相关信息如下所示。

如果使用Linux和OpenGL,则需要OpenGL 4.5或更高版本。为了满足这一限制,我使用NVIDIA专有驱动程序,而不是Nouveau开源驱动程序。在没有指定版本的情况下运行示例应用程序的任何尝试都将以控制台窗口输出的方式正常失败:需要OpenGL 4.5。

geometry tool engine几何工具引擎6.5。数学代码位于仅标题的库(GTMathematics)中。提供了具有基于GPU的实现的数学库(GTMathematicsGPU)。基于CPU的通用图形引擎代码位于其自己的库(GTGraphics)中。DirectX 11包装器用于图形(GTGraphicsDX11)和应用程序(GTApplicationsDX11)。OpenGL 4.5包装器用于图形(GTGraphicsGL45)和应用程序(GTApplications GL45)。

•2022年12月14日发布

•Microsoft Windows 10或11;DirectX 11.1或OpenGL 4.5;Microsoft Visual Studio 2019和2022;Windows 15.0.1版C++Clang编译器;英特尔C++编译器2023

•Ubuntu 22.04.1 LTS;OpenGL 4.5、NVIDIA图形驱动程序;Visual Studio代码1.49.2;CMake 3.15.2;通用条款11.2.0

•Fedora 37;OpenGL 4.5、NVIDIA图形驱动程序;Visual Studio代码1.49.2;CMake 3.22.2;一般条款12.2.1

源代码分发可以从该网站下载,但也可以在GitHub上的Geometric Tools上下载。我们网站上的zip文件是一个快照,在进行了大量更改后发布。然而,GitHub存储库始终包含在GTE中进行的最新修复和更新。

几何工具库。几何工具的动机是我在医学图像处理方面的研究生学习;然后它被命名为MAGIC软件(我的替代图形和图像代码)。当我进入3D视频游戏行业时,我在图像代码上花费的时间更少,而在图形、物理和数学代码上花费了更多的时间。大部分代码是帮助在Usenet论坛comp.graphics.algorithms上发布问题的人的结果。近年来的技术支持问题向我表明,数学和几何代码是人们使用最多的,所以我现在将重点关注这些主题。

几何工具库(GTL)将对GTE中的数学和几何代码进行修改,然后在时间允许的情况下添加新代码。我试图简化代码,提供一致的命名和接口,并扩展功能。一些GTE几何代码已经包含多线程,当数字类型涉及有理算术和任意精度算术时尤其有用,我计划在更多算法中包含多线程。对于使用HLSL、GLSL和CUDA的基于GPGPU的实现,以及使用Intel的SSE或AVX的基于SIMD的实现,将提供单独的代码。我将为理性和符号计算的混合添加一个框架,这在我的《稳健和无误差几何计算》一书中有所描述。

数学和几何代码库具有相关文档和单元测试套件。图形和应用程序的代码仅存在于说明GTL算法的示例。这些将包含在单独的库中,这些库按原样提供,没有单元测试支持。GTL源代码将免费下载,并受Boost许可证的约束。

我没有发布GTL的可靠估计日期。我会在这里宣布。GTL代码将在GitHub上提供。

该引擎中包含图形、图像、数学 (线性代数、估计、数值、计算几何、闭包、曲线、曲面、体积、距离函数几何图元、插值、相交、数值方法、投影)、物理,具体的内容如下:

Geometric Tools: Documentation

Graphics:

Reconstructing a Height Field From a Normal Map

Alhazen’s Problem: Reflection Point on a Sphere

Imagics:

Extraction of Level Sets from 2D Images

Extraction of Level Sets from 3D Images

Fast Gaussian Blurring

Integer-based Ellipse Drawing

Integer-Based Rotations of Images

Level Set Extraction from Gridded 2D and 3D Data

Medial-Based Morphing for 2D Binary Objects

Theory of Ridges

Skeletonization of 2D Binary Images

Mathematics/Algebra:

Constrained Quaternions using Euler Angles

Converting Between Coordinate Systems

Euler Angle Formulas

The Laplace Expansion Theorem: Computing the Determinants and Inverses of Matrices

A Linear Algebraic Approach to Quaternions

Computing Orthonormal Sets in 2D, 3D, and 4D

Solving Systems of Polynomial Equations

Quaternion Algebra and Calculus

Rotation Representations

Constructing Rotation Matrices Using Power Series

Interpolation of Rigid Motions in 3D

Mathematics/Approximation:

Approximating an Ellipse by Circular Arcs

Fitting 3D Data with a Helix

Least Squares Fitting of Data by Linear or Quadratic Structures

Least Squares Fitting of Data with Polynomials

Least-Squares Fitting of Data with B-Spline Curves

Least-Squares Fitting of Data with B-Spline Surfaces

Least-Squares Reduction of B-Spline Curves

Least Squares Fitting of Segments by Line or Plane

Fitting 3D Data with a Torus

Least Squares Fitting of Parallel Lines to Points in 2D

Fit a Cone to Ellipse and Points

Fit a Convex Quadrilateral by a Rectange

Mathematics/Arithmetic:

GTEngine: Arbitrary Precision Arithmetic

Mathematics/Computational Geometry:

Boolean Operations on Intervals and Axis-Aligned Rectangles

Clipping a Mesh Against a Plane

Geodesics On Triangle Meshes

Mesh Differential Geometry

The Minimal Cycle Basis for a Planar Graph

Polyline Reduction

Tessellation of a Unit Sphere Starting with an Inscribed Convex Triangular Mesh

Triangulation by Ear Clipping

Mathematics/Containment:

AABB of a Transformed AABB

Centers of a Simplex (circumscribed/inscribed balls)

Largest Fixed-Aspect, Axis-Aligned Rectangle Inscribed in a Convex Quadrilateral

Minimum-Area Rectangle Containing a Set of Points

Minimum-Volume Box Containing a Set of Points

Mathematics/Curves, Surfaces, and Volumes:

A Relationship Between Minimum Bending Energy and Degree Elevation for Bézier Curves

Bicubic Bézier Exact Interpolation

Least-Squares Fitting of Data with B-Spline Curves

Least-Squares Fitting of Data with B-Spline Surfaces

Least-Squares Reduction of B-Spline Curves

Classifying Quadrics using Exact Arithmetic

Geodesics on a Parameterized Surface

Kochanek-Bartels Cubic Splines

Moving Along a Curve with Specified Speed

Natural Spline Interpolation

Representing a Circle or Sphere with NURBS

Principal Curvatures of Surfaces

Computing Geodesics on a Riemannian Manifold

Mathematics/Distance:

Distance from an Oriented Box to a Cone Frustum

Distance Between Ellipses in 2D

Distance Between Two Ellipses in 3D

Distance Between Two Line Segments in 3D

Distance from Line to Rectangle in 3D

Distance from Linear Component to Tetrahedron

Distance Between Point and Triangle in 3D

Distance from a Point to an Ellipse, an Ellipsoid, or a Hyperellipsoid

Distance Between Point and Line, Ray, or Line Segment

Distance from Point to Orthogonal Frustum

Distance to Circles in 3D

Mathematics/Functions:

An Approximation for the Inverse Square Root Function

Derivative Approximation by Finite Differences

A Fast and Accurate Estimate for SLERP

Approximations to Rotation Matrices and Their Derivatives

A Fast and Accurate Algorithm for Computing SLERP (Journal of Graphics Tools)

Mathematics/Geometric Primitives:

Information About Ellipses

Platonic Solids (parameters, vertices, mesh connectivity)

Mathematics/Interpolation:

Akima Interpolation for Nonuniform 1D Data

B-Spline Interpolation on Lattices

C1 Quadratic Interpolation of Meshes

Thin Plate Splines

Globally C^s and Locally Controllable Interpolation on n-Dimensional Lattices

Mathematics/Intersection:

The Area of Intersecting Ellipses

Clip a Convex Polygon by a Hyperplane

Dynamic Collision Detection using Oriented Bounding Boxes

Intersection of Orthogonal View Frustum and Oriented Bounding Box using Separation Axis Testing

Intersection of a Box and a Cone or Cone Frustum

Intersection of a Box and a Finite Cylinder

Intersection of Box and Ellipsoid

Intersection of an Infinite Cylinder and a Plane

Intersection of Infinite Cylinders

Intersection of Linear and Circular Components in 2D

Intersection of a Line and a Box

Intersection of a Line and a Cone

Intersection of Moving Circle and Rectangle

Intersection of Moving Sphere and Box

Intersection of Moving Sphere and Triangle

Intersection of Cylinders

Intersection of Ellipses

Intersection of Ellipsoids

Intersection of Rectangle and Ellipse

Intersection of Objects with Linear and Angular Velocities using Oriented Bounding Boxes

Intersection of a Sphere and a Cone

Intersection of Swept Ellipses and Swept Ellipsoids

Intersection of a Triangle and a Cone

Intersection of a Triangle and a Cylinder

Intersection of Convex Objects: The Method of Separating Axes

Mathematics/Numerical Methods:

Convex Quadratic Programming

Low-Degree Polynomial Roots

Numerical Integration

A Robust Eigensolver for 2x2 Symmetric Matrices

A Robust Eigensolver for 3x3 Symmetric Matrices

Mathematics/Projection:

Parallel Projection of an Ellipse

Perspective Mappings

Perspective Projection of an Ellipse onto a Line in 2D

Perspective Projection of an Ellipse onto a Plane in 3D

Perspective Projection of an Ellipsoid

Reconstructing an Ellipsoid from its Perspective Projection Onto a Plane

Physics:

Extremal Queries using BSP Trees

Particle Motion on a Height Field

Polyhedral Mass Properties (Revisited)

Rough Plane Analysis

Stability Analysis for Systems of Differential Equations

Computing Impulsive Forces for Colliding Contact

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oceanstonetree

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值