100 Commits
Author SHA1 Message Date
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
David Eberly 3e43b79905 Modified project for deprecation of source code.
Removed ApprConvexQuadByRect.h.
2026-08-12 08:27:29 -07:00
David Eberly 03126b7b52 Delete ApprConvexQuadByRect.h
Claude Sonnet 5 reported a defect in  ApprConvexQuadByRect.h. It
appeared to be a false positive. However, I analyzed the code and re-read the PDF for the fitting algorithm (Fit a Convex Quadrilateral by a Rectangle). The second equality in equation (5) of the PDF is horribly wrong. Moreover, the PDF is nearly impossible to read and understand. I removed the header file from the GTE source code and I removed the PDF from the documentation database. The motivation for the algorithm was based on user request, to approximate a nearly
rectangular quadrilateral by a rectangle. It is simpler to use the
minimum-area bounding rectangle code (\Code{MininumAreaBox2.h}).
2026-08-12 08:21:44 -07:00
David Eberly 8275bbb490 Update RootsPolynomial.h
Defect reported by Claude Sonnet5/Fable5. In the Find function that
uses bisection, if the loop involving maxIterations is encountered and
maxIterations is zero, root is unassigned and the return value is true. The caller believes a root is found but accesses uninitialized memory. I added a trap for maxIterations being zero before the loop is reached; if zero, the function exits. In all the conditions where there is no
root computed, root is assigned zero to avoid uninitialized memory.
2026-08-11 14:11:44 -07:00
David Eberly ac8277a9f8 Update SurfaceExtractorTetrahedra.h
Defect reported by Claude Sonnet5/Fable5. The AddTriangle function
tests whether a triangle is in a set. If it is not, the function has nothing
to do and exits. If it is, a test is applied to see whether the to-be-inserted triangle has a duplicate in the set; this triangle has opposite winding order, so the function swaps the last two vertices of the input triangle. If there is no duplicate, the triangle is added to the set. However, the last two vertices had been swapped. They need to be swapped back to the original order of the input triangle.
2026-08-11 13:51:42 -07:00
David Eberly 3f30cf6d72 Update MinimumSpanningTree.h
Defect reported by Claude Sonnet5/Fable5. There is no defect. The minimum spanning tree data structure contains a sentinel followed by the tree. The sentinel is {nil,vertexIndex}, where vertexIndex is the
index into the vertex array corresponding to the first vertex visited by
the tree construction. I added comments about this in hopes later Claude runs will not flag this as a defect.
2026-08-11 10:44:32 -07:00
David Eberly db8560d62c Update RotationEstimate.h
Defect found by Claude Sonnet5/Fable5. The degree-16 constants in
C_ROTC4_EST_COEFF} have an entry +2.505210838484547384e-08 which is missing a terminating constant. The compiler adds the next constant to it, in which case the last constant of the array is implicitly zero. I added the comma.
2026-08-10 16:20:43 -07:00
David Eberly 980e680e76 Update Hyperellipsoid.h
Defect found by Claude Sonnet5/Fable5. This is actually a warning about potential numerical issues in ToCoefficients, the variation accepting an array of numbers. The warning was about skipping a loop index when trying to determine a number to divide all the coefficients to transform them to a range containing floating-point 1. I redesigned this to divide by the maximum-magnitude coefficient of the quadratic terms. I also removed some comments about Microsoft Visual Studio 2019 code analysis generating incorrect warnings.
2026-08-10 15:59:30 -07:00
David Eberly d55b847edc Update NURBSSphere.h
Defect found by Claude Sonnet5/Fable5. In the second derivative computations of NURBSEighthSphereDegree4, the tempDuu, tempDuv, and tempDvv equations had a leading multiplication by D. This is incorrect, so the leading D multiplications were removed. I found a second bug that Claude did not detect. In the first derivative computations, Bu[1][3] was computed as (Real)4 * vv. This should be
(Real)4 * v * vv. After fixing the bugs, I implemented the NURBS code
using Mathematica 15.0.1.0 and verified that the GTE/GTL C++ code produces correct results.
2026-08-10 12:05:17 -07:00
David Eberly 89f024c114 Update NURBSCircle.h
Defect found by Claude Sonnet5/Fable5. When I added the class
NURBSCircularArcDegree2, I introduced a regression in the class
NURBSQuarterCircleDegree2. For some unknown reason, the control points of NURBSQuarterCircleDegree2 were modified from {(1,0), (1,1), (0,1)} to {(1,1),(1,1),(1,1)}. Probably a copy-and-forgot-to-modify error.
2026-08-09 12:40:01 -07:00
David Eberly 79054919bc Fixed return value of approximator.
Defect found by Claude Sonnet5/Fable5. FitUsingSquaredLengths has a loop that terminates if the number of iterations exceeds maxIterations specified by the caller. The old return value is ++iteration, which is maxIterations+1 on non-convergence. I now return iteration.
2026-08-09 11:47:06 -07:00
David Eberly 11621154ff Update BVTree.h
I had fixed a bug in the bounding volume tree code for GTE; see the August 1, 2026 update notes. Unfortunately, I had not fixed the bug in the GTL code. A regression was introduced when I backported the GTL code to GTE. I fixed this.
2026-08-09 10:45:04 -07:00
David Eberly 1064fe61b4 Updated mathematics project files.
Added the new files and removed old files for the bounding volume tree code that was backported from GTL to GTE.
2026-08-08 16:58:51 -07:00
David Eberly 50d261ed0f Backported bounding volume tree code from GTL to GTE.
I backported the bounding volume tree code from GTL to GTE. GTE now supports trees for points, segments, or triangles. Part of the backport involved refactoring the classes to share more code, making the derived tree classes simpler to write. The file ApprCone3EllipseAndPoints.h was modified to support the new oriented box tree code. In the process of testing with the sample application, I encountered an exception: press key `3' followed by `b'.
An array of shared pointers of meshes is created in  CreateScene with a reserve call followed by multiple push_back calls. However, CreateScene is called multiple times (pressing keys to change the
test mesh). The array winds up having several null pointers, which causes the graphics engine Draw call to throw an exception. The fix was to add a clear call after the reserve call.
2026-08-08 16:50:15 -07:00
David Eberly f538a76e8d Update ReparameterizeByArclength.h
Defect found by Claude Sonnet5/Fable5. The function BisectionConverged compared fMin <= fMax. It needs to compare std::fabs(fMin) <= std::fabs(fMax); otherwise, the result is the same endpoint regardless of which is actually closer to the root. This can lead to a 1 ULP error in nearest floating-point number.
2026-08-08 13:05:48 -07:00
David Eberly c0b9db0234 Update DistPoint3Cylinder3.h
The file uses LogAssert. For some reason previous compiles allowed
access to this even though there is no include of Logger.h. Now the
compiler does complain (perhaps a difference in MSVS 2022 and MSVS 2026). I added the include.
2026-08-08 09:43:09 -07:00
David Eberly adee6124f9 Removed std::isfinite calls.
Removed the std::isfinite calls to allow compilation using GTE's
rational arithmetic classes. The GTL code already has these removed.
2026-08-08 09:25:51 -07:00
David Eberly f82380ae19 Update HermiteQuintic.h
Defect found by Claude Sonnet5/Fable5. The function P2D5 called P3D4 but should call P3D5. Modified the code and verified the
correctness using Mathematica.
2026-08-07 22:34:29 -07:00
David Eberly 419224b114 Fixed compile breaks.
My instantiation test failed to run. Got it running and fixed the compile breaks.
2026-08-07 15:35:57 -07:00
David Eberly 02a7f4807b Update AdaptiveSkeletonClimbing3.h
Defect found by Claude Sonnet5/Fable5. In GetGradient, the gradient[2] term uses (oneMinusY,OneMinusY) for the weights. These should be (oneMinusY,fy).
2026-08-07 15:19:58 -07:00
David Eberly aae5c85bf8 Revised the image utility header files.
Defect found by Claude Sonnet5/Fable5. Function ImageUtility3::Dilate has a design different from that of  ImageUtility2::Dilate. The 3D version failed to set boundary voxels to 1 when a neighboring voxel is 1. I rewrote ImageUtility3::Dilate to match the design of the 2D version. While I was in there, I added the 3D morphology functions for Erode, Open, and Close. I also moved the 2D and 3D component labelers to public scope because they might be useful in some applications. Finally, I reformatted both the 2D and 3D files to match the interface designs.
2026-08-07 15:07:42 -07:00
David Eberly 54c03f78d0 Update Cone.h
Defect found by Claude Sonnet5/Fable5. In the CreateMesh function, the line of code for tNumExtra has a division by rMin. For a finite cone with hMin of zero, there is a division by zero which leads to tNumExtra of positive infinity. I modified rMax/rMin to (1+rMax)/(1+rMin) to avoid the division by zero. I also added a TODO about determining how I derived the tNumExtra equation.
2026-08-06 22:11:15 -07:00
David Eberly 2456ff19e1 Fixed crash bug in Execute functions.
Defect found by Claude Sonnet5/Fable5. The Execute functions of
BVTreeOfTriangles and OBBTreeOfTriangles create
std::vector<size_t> indexStack(2 * this->mHeight)}. If the input tree has height of zero, the index stack is empty, so the code indexStack[0] = 0 crashes. The number of index stack elements must be 2 * this->mHeight + 1.
2026-08-01 11:36:55 -07:00
David Eberly 8e3baa93dc Update StringUtility.h
Defect found by Claude Sonnet5/Fable5. The GetTextTokens function has a loop with upper bound i < 255. This should be i <= 255.
2026-08-01 11:00:46 -07:00
David Eberly 93b8acda69 Update Constants.h
Defect found by Claude Sonnet5/Fable5. The following constants differ from the correctly rounded IEEE floating-point numbers: GTE_C_INV_TWO_PI differs by 2 ULP, GTE_C_INV_HALF_PI} differs by 1 ULP, and GTE_C_DEG_TO_RAD differs by 1 ULP. I computed the correctly rounded numbers using rational arithmetic and Machin's formula [pi = 16 atan(1/5) - 4 atan(1/239)]. The power series terms were partially summed until the rounded double-precision values between two consecutive partial sums were equal.
2026-08-01 10:54:43 -07:00
David Eberly 3f72a78d15 Fixed division by zero for degenerate line segments.
Defect found by Claude Sonnet5/Fable5. The find-intersection query has a division by segExtent. If the segment is degenerate, representing a single point (p[0] and p[1] are the same point), the segment extent is zero whereby the query has a division by zero. Additionally, the parameter value is zero, so result.parameter[i] / segExtent is
indeterminate (0/0). I added a guard against this case which calls a point-in-box query when the segment is degenerate. Claude's analysis did not report a second problem. The DoQuery method does not fill in the result members for index 1. When the projection intervals touch in a single point (numIntersections is 1), I increment this to 2 in case the caller references those values (undefined behavior without this).
The same division-by-zero problem occurs in the segment-oriented-box code. I also added a guard against this case.
2026-07-31 17:36:57 -07:00
David Eberly 43a484e503 Update DistPoint3Cylinder3.h
Defect found by Claude Sonnet5/Fable5. DoQueryInfiniteCylinder has a division by distance, which leads to an indeterminate form when
cylinder.radius is zero. Exception handling was added to throw when
the radius is not positive. Also, DoQueryFiniteCylinder now throws an exception when the height is not positive.
2026-07-30 21:41:18 -07:00
David Eberly bb27d5e54c Update IntrTetrahedron3Tetrahedron3.h
Defect found by Claude Sonnet5/Fable5. The edge-edge double loop had P1=tetra0.v[edge1Indices[0]]. The wrong tetrahedron is accessed. It
should be tetra1.
2026-07-30 16:07:11 -07:00
David Eberly e00988def9 Update SingularValueDecomposition.h
Defect found by Claude Sonnet5/Fable5. ComputeVOrthogonal has a loop with upper bound mNumCols-3. This works for matrices with 3 or more columns, but it fails when the number of columns is 2. The `col' index wraps to SIZE_MAX and the result is a crash when trying to reference an empty matrix. I added code to execute the loop only when mNumCols is 3 or larger.
2026-07-30 14:56:32 -07:00
David Eberly 636c156c02 Update BSNumber.h
I thought the negations of unsigned integers in the constructors with input 'number' were fixed. Running my instantiation tests showed that there is still a bug. The negative has to occur before the static cast, not after.
2026-06-08 12:08:16 -07:00
David Eberly e095b84018 Changes to CMakeLists.txt files.
Changes to CMakeLists.txt files. Based on CMake warnings, increased the minimum required cmake version to 3.10 from 3.8. Modified the GTE_MINOR_VERSION to 2.
2026-03-14 11:06:37 -07:00
David Eberly 36dd7961a9 Tests not included in GTE.
These appear to be part of the Claude Code analysis for bugs and defects.
2026-02-27 16:33:21 -08:00
David Eberly 389f187f8c Merge pull request #137 from CodeReclaimers/fix/natural-spline-2point-segfault
Require numPoints >= 3 for NaturalCubicSpline and NaturalQuinticSpline
2026-02-27 16:16:48 -08:00
David Eberly 0f2a8eef82 Merge branch 'master' into fix/natural-spline-2point-segfault 2026-02-27 16:16:40 -08:00
David Eberly c10318c4a7 Merge pull request #167 from CodeReclaimers/fix/trivial-comment-typo-fixes
Fix trivial typos in MathematicsGPU shader/header files
2026-02-27 16:14:40 -08:00
David Eberly 684c943f49 Merge pull request #166 from CodeReclaimers/fix/primal-query3-precision-table
Fix precision table typo in PrimalQuery3.h
2026-02-27 16:14:02 -08:00
David Eberly 2b23ac74e9 Merge pull request #165 from CodeReclaimers/fix/arc2-default-constructor
Fix Arc2 default constructor endpoints
2026-02-27 16:13:30 -08:00
David Eberly 11337ddc70 Merge pull request #164 from CodeReclaimers/fix/intr-line2-circle2-documentation
Add unit-length direction documentation to IntrLine2Circle2.h
2026-02-27 16:12:16 -08:00
David Eberly 33d306c35b Merge pull request #163 from CodeReclaimers/fix/dist-line2-triangle2-bugs
Fix NoCommonPoints bugs in DistLine2Triangle2.h
2026-02-27 16:11:48 -08:00
David Eberly 569f31f01e Merge pull request #162 from CodeReclaimers/fix/dist-point3-tet-barycentric
Fix barycentric coordinates not stored in DistPoint3Tetrahedron3
2026-02-27 16:11:13 -08:00
David Eberly b3da538a14 Merge pull request #161 from CodeReclaimers/fix/intr-line3-torus3-comment
Fix reversed radius inequality in IntrLine3Torus3.h comment
2026-02-27 16:09:48 -08:00
David Eberly 66732363b4 Merge pull request #160 from CodeReclaimers/fix/transform-inverse-vec-mat
Fix Transform::Inverse() for GTE_USE_VEC_MAT convention
2026-02-27 16:09:15 -08:00
David Eberly 0b5ae8f2a6 Merge pull request #159 from CodeReclaimers/fix/roots-bisection-misleading-return
Fix RootsBisection::Find misleading return when maxIterations < 2
2026-02-27 16:08:15 -08:00
David Eberly 1915e872b3 Merge pull request #158 from CodeReclaimers/fix/timer-getseconds-precision
Fix Timer::GetSeconds() precision truncation
2026-02-27 16:06:31 -08:00
David Eberly 7360d5f89d Merge pull request #157 from CodeReclaimers/fix/thread-safe-lock-guard
Use std::lock_guard for exception safety in ThreadSafeMap and ThreadSafeQueue
2026-02-27 16:06:05 -08:00
David Eberly 93aad85140 Merge pull request #156 from CodeReclaimers/fix/appr-query-negative-indices
Add negative index check in ApprQuery::ValidIndices
2026-02-27 16:05:35 -08:00
David Eberly 85848353e2 Merge pull request #155 from CodeReclaimers/fix/appr-3d-isfinite-mean2
Add missing std::isfinite check for mean[2] in 3D approximation classes
2026-02-27 16:05:09 -08:00
David Eberly 20bfd2bfe7 Merge pull request #154 from CodeReclaimers/fix/appr-torus3-jacobian
Fix Jacobian computation errors in ApprTorus3 torus fitting
2026-02-27 16:04:03 -08:00
David Eberly fbe9caa796 Merge pull request #153 from CodeReclaimers/fix/appr-polynomial-special-overallocation
Fix mParameters overallocation in ApprPolynomialSpecial3 and ApprPolynomialSpecial4
2026-02-27 16:03:27 -08:00
David Eberly e85264eec0 Merge branch 'master' into fix/appr-polynomial-special-overallocation 2026-02-27 16:03:19 -08:00
David Eberly 5871524150 Merge pull request #152 from CodeReclaimers/fix/terrain-interpolation
Fix wrong bilinear interpolation in Terrain::GetHeight
2026-02-27 16:00:56 -08:00
David Eberly 268c4b548d Merge pull request #151 from CodeReclaimers/fix/bumpmap-copypaste
Fix copy-paste bug in BumpMapEffect::ComputeTangent
2026-02-27 15:59:36 -08:00
David Eberly 63d3d22355 Merge pull request #150 from CodeReclaimers/fix/integration-shift-overflow
Fix signed integer overflow UB in Integration quadrature
2026-02-27 15:59:06 -08:00
David Eberly 036eb9ff5e Merge pull request #149 from CodeReclaimers/fix/rootsbisection2-flag-overwrite
Fix RootsBisection2 y-bisection failure flag overwritten
2026-02-27 15:58:43 -08:00
David Eberly da7611c827 Merge pull request #148 from CodeReclaimers/fix/polynomialroot-const-ref
Fix PolynomialRoot comparison operators taking non-const refs
2026-02-27 15:58:22 -08:00
David Eberly 1a86b9cb4c Merge pull request #147 from CodeReclaimers/fix/array-ownership-check
Fix Array2/3/4 ownership check in SetPointers
2026-02-27 15:57:22 -08:00
David Eberly 2de83d4fef Merge pull request #146 from CodeReclaimers/fix/bsnumber-sign-on-zero
Fix BSNumber string constructor setting nonzero sign on zero
2026-02-27 15:56:45 -08:00
David Eberly 4cdcb895f7 Merge branch 'master' into fix/bsnumber-sign-on-zero 2026-02-27 15:56:38 -08:00
David Eberly 2dcd3de541 Merge pull request #145 from CodeReclaimers/fix/bsrational-frexp-zero
Fix BSRational frexp not handling zero input
2026-02-27 15:55:47 -08:00
David Eberly ec334844bd Merge branch 'master' into fix/bsrational-frexp-zero 2026-02-27 15:55:38 -08:00
David Eberly 98fdfcb5fc Merge pull request #144 from CodeReclaimers/fix/minheap-isvalid
Fix MinHeap::IsValid() skipping root's children
2026-02-27 15:53:49 -08:00
David Eberly 763ef2ca20 Merge pull request #143 from CodeReclaimers/fix/uintegerfp32-pragma-number
Fix mismatched pragma warning number in UIntegerFP32.h
2026-02-27 15:53:18 -08:00
David Eberly d7eb5af070 Merge pull request #142 from CodeReclaimers/fix/bsnumber-string-single-digit
Fix string constructor rejecting single-digit signed numbers
2026-02-27 15:52:58 -08:00
David Eberly e78b823d2c Merge branch 'master' into fix/bsnumber-string-single-digit 2026-02-27 15:52:46 -08:00
David Eberly e5ef28cd59 Merge pull request #141 from CodeReclaimers/fix/ieee-binary-isquietnan
Fix IsQuietNaN() rejecting standard quiet NaN in IEEEBinary.h
2026-02-27 15:49:14 -08:00
David Eberly a53fc4a181 Merge pull request #140 from CodeReclaimers/fix/image-move-assignment
Add missing std::move in Image2/Image3 move assignment operators
2026-02-27 15:48:43 -08:00
David Eberly efe04a832c Merge pull request #139 from CodeReclaimers/fix/cholesky-solvelower-blocksize
Fix SolveLower loop bounds in runtime BlockCholeskyDecomposition
2026-02-27 15:47:39 -08:00
David Eberly 6251e50e89 Merge pull request #138 from CodeReclaimers/fix/ldlt-assertion-checks
Fix assertion bugs in LDLTDecomposition.h
2026-02-27 15:47:11 -08:00
David Eberly ae06fcc403 Merge pull request #136 from CodeReclaimers/fix/wicfileio-16bit-rgb
Fix 16-bit RGB PNG loaded with 8-bit texture format in WICFileIO
2026-02-27 15:46:43 -08:00
David Eberly e7808df75f Merge pull request #135 from CodeReclaimers/fix/command-argv-bounds
Fix out-of-bounds access in Command option parsing
2026-02-27 15:46:12 -08:00
David Eberly 649f882d6b Merge pull request #134 from CodeReclaimers/fix/camerarig-erase-key
Fix CameraRig::Register erasing by wrong key
2026-02-27 15:45:37 -08:00
David Eberly 49bb11a03b Merge pull request #133 from CodeReclaimers/fix/ambientlight-uniform-name
Fix GLSL uniform block name mismatch in AmbientLightEffect
2026-02-27 15:45:19 -08:00
David Eberly 59f591f989 Merge pull request #132 from CodeReclaimers/fix/dx11engine-share-return
Fix DX11Engine::Share returning wrong object
2026-02-27 15:44:08 -08:00
David Eberly 0733228871 Merge pull request #131 from CodeReclaimers/fix/glslreflection-wrong-resize
Fix wrong vector resized in GLSLReflection
2026-02-27 15:43:51 -08:00
David Eberly 04276b9750 Merge pull request #130 from CodeReclaimers/fix/gl46texturearray-assert
Fix inverted assertion in GL46TextureArray::Update
2026-02-27 15:43:16 -08:00
David Eberly 6498734b3e Merge pull request #129 from CodeReclaimers/fix/gl46engine-linkmap-unit
Fix mLinkMap using wrong variable in GL46Engine
2026-02-27 15:42:58 -08:00
David Eberly e835053294 Merge pull request #127 from CodeReclaimers/fix/viewvolume-ortho-macro
Fix wrong preprocessor macro in orthographic projection
2026-02-27 15:37:20 -08:00
David Eberly 29ef1b0141 Merge pull request #126 from CodeReclaimers/fix/picker-closest-nonpositive
Fix inverted comparison in Picker::GetClosestNonpositive
2026-02-27 15:36:56 -08:00
David Eberly 20a1dee79f Merge pull request #125 from CodeReclaimers/fix/interp-grid-max-precedence
Fix operator precedence bug in interpolation grid max
2026-02-27 15:36:23 -08:00
David Eberly 58a6f08075 Merge pull request #124 from CodeReclaimers/fix/onidletimer-seconds-per-frame
Fix OnIdleTimer::GetSecondsPerFrame returning wrong units
2026-02-27 15:35:38 -08:00
David Eberly 318cd26208 Merge pull request #123 from CodeReclaimers/fix/gpufluid3-wrong-include
Fix wrong include in GPUFluid3ComputeDivergence.h
2026-02-27 15:35:05 -08:00
David Eberly a7e401f395 Merge pull request #122 from CodeReclaimers/fix/bsnumber-signed-overflow
Fix signed integer overflow UB in BSNumber and BitHacks for INT_MIN
2026-02-27 15:34:40 -08:00
David Eberly 96dfb0994a Merge pull request #121 from CodeReclaimers/fix/functions-robustdop-semicolon
Fix syntax error in RobustDOP (period instead of semicolon)
2026-02-27 15:33:35 -08:00
David Eberly caa87e46c4 Merge pull request #120 from CodeReclaimers/fix/svd-getv-size
Fix buffer overrun in SingularValueDecomposition::GetV
2026-02-27 15:33:05 -08:00
David Eberly ce94409c23 Merge pull request #119 from CodeReclaimers/fix/natural-quintic-spline-derivatives
Fix 4th/5th derivative coefficients in NaturalQuinticSpline::Evaluate
2026-02-27 15:32:43 -08:00
David Eberly 2def217e82 Merge pull request #118 from CodeReclaimers/fix/cont-capsule3-merge-radius
Fix missing negEnd0 radius comparison in ContCapsule3 MergeContainers
2026-02-27 15:30:57 -08:00
David Eberly a3d1212ab3 Merge pull request #117 from CodeReclaimers/fix/appr-polynomial4-evaluate
Fix two bugs in ApprPolynomial4::Evaluate
2026-02-27 15:30:32 -08:00
David Eberly cd4fd0b19e Merge pull request #116 from CodeReclaimers/fix/appr-polynomial-special4-zpowers
Fix mYPowers/mZPowers typo in ApprPolynomialSpecial4::Evaluate
2026-02-27 15:29:21 -08:00
David Eberly f0f0a65a8e Merge pull request #115 from CodeReclaimers/fix/gmatrix-operator-ne-different-dimensions
Fix GMatrix::operator!= returning false for different dimensions
2026-02-27 15:28:48 -08:00
David Eberly f745e55986 Merge pull request #114 from CodeReclaimers/fix/matrix4x4-oblique-projection-typo
Fix typo in MakeObliqueProjection: M(0,2) should be M(0,3)
2026-02-27 15:28:02 -08:00
David Eberly 5fc279d2c3 Merge pull request #113 from CodeReclaimers/fix/vector-initializer-list-oob
Fix out-of-bounds write in Vector initializer_list constructor
2026-02-27 15:25:36 -08:00
David Eberly 87e5d39242 Fixed major and minor version numbers.
The GTE_MAJOR_VERSION and GTE_MINOR_VERSION values are out of date. They were set to 7 and 3, respectively, when they should be 8 and 1, respectively.
2026-02-03 11:59:06 -08:00
David Eberly 2339413089 Remove special tools.
Removed tools that were specific to development, testing, and code maintenance.
2026-01-12 17:40:23 -08:00
David Eberly a1551db717 BitmapFontCreator update
Added solution, project, and filter files for Microsoft Visual Studio 2026.
Made some minor formatting adjustments to the source file.
2026-01-12 17:39:54 -08:00
David Eberly aeb614e435 Added support for Microsoft Visual Studio 2026.
I added Microsoft Visual Studio 2026 files for solutions, projects, and
filters. There are nearly 400 such triples of files (.v18.sln, .v18.vcxproj,
.v18.vcxproj.filters).
2026-01-11 23:13:19 -08:00
David Eberly 4971cbfa36 Modified copyright notices to include 2026.
Modified copyright notice to include 2026. All source files were modified. The file version numbers remain the same.
2026-01-11 14:00:48 -08:00
David Eberly 85be455409 Added 3D test-intersection queries for triangles and canonical boxes or aligned boxes.
Added intersection queries for a triangle and a canonical box or a triangle and an aligned box. The code for a triangle and an oriented box already existed. Modified the sizes and positions of the triangle and oriented box in the sample application; the previous triangle was too small and the previous box was too large.
2026-01-10 11:52:56 -08:00
David Eberly a9a2b14948 Update IntrCanonicalBox3Cylinder3.h
Despite using Mathematica to verify the mathematical equations and updating the PDF for box-cylinder intersection, I still failed to fix the bug mentioned in the December 26, 2025 report. In fact, the previous report broke the case for (U2,-D). The case for (D,-U2) had an incorrect divisor. These have now been fixed.

[From December 26] Fixed the lower and upper calculations for case (U2,-D). Thanks to
OttoX at github for reporting associated bugs.
2025-12-31 12:06:22 -08:00
David Eberly 6e050689a8 Update IntrCanonicalBox3Cylinder3.h
Fixed the lower and upper calculations for case (U2,-D).
2025-12-26 15:36:23 -08:00
David Eberly 40705105e6 Posting GTE 8.1.
GaussianElimination.h: The private Set function had an if-else statement that was designed to provide fast copying for floating-point Real and object copying for rational Real. The if-else statement  provides flow control at run time. However, the separation must occur at compile time. The Ubuntu g++ 13.3.0 compiler generated an error for the separation. I modified the code to use std::enable_if and  provided a Set for each case, the other case ignored by SFINAE (Substitution Failure Is Not An Error).

MinimumVolumeBox3*.h: The g++ compiler warned about the use of a pragma that is supported by the Microsoft Visual Studio compiler. With treat-warnings-as-errors, the files do not compile. I removed the pragma statements. The g++ compiler also complained about the Edge.T and Triangle.T members shadowing the class template parameter T. I renamed the members of Edge and Triangle to use lower-case v, e, and t.

MinimumVolumeBox3DWindow3.cpp: The modifications to the minimum volume box code required an update to the sample application. The new template parameter list is different from the old one.
2025-11-24 23:20:03 -08:00