David Eberly d29e7758ae Update ContPointInPolyhedron3.h
Defect reported by Claude Sonnet5/Fable5. The std::vector member
mProjVertices occurs in a loop over all faces. It stores the projections
onto a plane which are later processed. The member is resized each time the current faceIndices has a larger number of elements that mProjVertices. There is no clear call, so if the number of current faceIndices is smaller than that of mProjVertices, the ensuing code accesses elements of mProjVertices that were set for the previous triangles. I removed the mProjVertices member and now have local storage for the projection vertices that is created for each incoming face. While I was in there, I refactored the code in an attempt to simply
the class interface. There is only one face data structure used for triangles, convex polygons, and simple polygons. Consequently, the class has a single constructor to which you pass a parameter specifying the type of face to be processed. I factored out shared code for ContainsC1C2 and ContainsS1 into SharedContains.
2026-08-13 21:46:47 -07:00
2026-08-13 21:46:47 -07:00
2020-09-15 10:29:42 -07:00
2020-09-15 11:04:10 -07:00
2026-03-14 11:06:37 -07:00

Geometric Tools Engine

The Geometric Tools Engine (GTE) is a collection of source code for computing in the fields of mathematics, geometry, graphics, image analysis and physics. The engine is written in C++ 14 and supports high-performance computing using CPU multithreading and general purpose GPU programming (GPGPU). Portions of the code are described in various books as well as in PDF documents available at the Geometric Tools Website. GTE is licensed under the Boost Software License 1.0. The update history for the current version of GTE is Current Update History. The update history for all versions of GTE is Full Update History.

Supported Platforms

The mathematics code is in a header-only library, GTMathematics. A mathematics library with GPU-based implementations is provided,s GTMathematicsGPU. The CPU-based common graphics engine code is in its own library, GTGraphics. DirectX 11 wrappers are provided for graphics and applications, GTGraphicsDX11 and GTApplicationsDX11, on Microsoft Windows 10/11. OpenGL 4.6 wrappers are provided for graphics and applications, GTGraphicsGL46 and GTApplicationsGL46, on Microsoft Windows 10/11 and on Linux. A small number of files exist to use GLX and X-Windows on Linux.

On Microsoft Windows 10/11, the code is maintained using Microsoft Visual Studio 2022 with Microsoft's compilers, LLVM clang-cl or with Intel C++ Compilers 2024/2025.

On Ubuntu 24.04.3 LTS, the code is maintained using Visual Studio Code 1.110.1, CMake 4.2.3, NVIDIA graphics drivers, OpenGL 4.6 and gcc 13.3.0.

On Fedora 43, the code is maintained using Visual Studio Code 1.110.1, and CMake 3.31.10, NVIDIA graphics drivers, OpenGL 4.6 and gcc 15.2.1.

On Linux Mint Cinnamon 22.3, the code is maintained using Visual Studio Code 1.111.0, CMake 3.28.3, NVIDIA graphics drivers, OpenGL 4.6 and gcc 13.3.0.

Getting Started

The repository contains many sample applications to illustrate some features of the engine. Top-level solutions/makefiles exist to build everything in the repository. Please read the Installation and Release Notes to understand what is expected of your development environment.

Pull Requests

You are welcome to create pull requests for me to examine if you believe you have found a bug. When you post the pull request, please also modify the file version (line 6 of the comment header in the files). The version is of the form major.minor.year.month.day. The major.minor portion is when the file was introduced into the GTE distribution; do not modify this. The year is a 4-digit number, the month is a 2-digit number, and the day is a 2-digit number. For example, if you submitted the pull request on February 20, 2025, then major.minor.2025.02.20 is the new file version.

S
Description
A collection of source code for computing in the fields of mathematics, geometry, graphics, image analysis and physics.
https://brlcad.org/
Readme
57 MiB
Languages
C++ 82.8%
C 9.8%
Shell 2.1%
CMake 2%
GLSL 1.7%
Other 1.6%