Skip to content

Fix the constant coefficient sign in Plane3.contains - #280

Merged
taughz merged 1 commit into
rai-opensource:masterfrom
xixihaha-ha:fix/plane-contains-coefficient-sign
Nov 5, 2026
Merged

taughz merged 1 commit into
rai-opensource:masterfrom
xixihaha-ha:fix/plane-contains-coefficient-sign

Conversation

@xixihaha-ha

Copy link
Copy Markdown
Contributor

Plane3.contains subtracts the constant coefficient, although planes and their constructors use n @ p + d = 0. For example, Plane3([1, 0, 0, -2]).contains([2, 0, 0]) returns false, while the point [-2, 0, 0] is incorrectly accepted.

Use the same sign as the plane equation. Regression tests cover translated planes constructed from coefficients, point/normal and three points, positive/negative coefficient scaling, off-plane points, tolerance, and the origin-plane case.

Validation: 10 failures before the one-line fix; all 11 new cases pass afterward. Full suite: 484 passed, 3 skipped, 63 subtests passed (Windows, Python 3.12, Matplotlib Agg). Black check for the new test file passes.

Prepared with AI assistance; reproductions and tests were executed locally.

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@taughz taughz mentioned this pull request Nov 5, 2026
17 tasks done
@taughz
taughz merged commit feaffc3 into rai-opensource:master Nov 5, 2026
16 checks passed
taughz pushed a commit that referenced this pull request Nov 5, 2026
…281)

Plane3.LinePoint currently computes the normal as w cross p, omitting
the line moment. This only gives the intended plane when the line passes
through the origin. For example a line through [1,2,3] in direction
[1,0,0] and a point [1,4,3] should define z=3; the current result does
not contain the supplied point or line.

Subtract the moment v from w cross p, obtaining w cross (p-anchor). The
constant term v dot p remains unchanged. Regression tests check the
plane equation directly, independently of the separate Plane3.contains
fix in #280, using translated and origin-passing lines and rescaled
directions.

Validation: six new cases fail and three pass on unchanged code. With
this fix the full tests directory reports 482 passed, 3 skipped, 63
subtests passed (Python 3.11, NumPy 2). No other pending geometry fixes
are included.

AI assistance was used to investigate, implement and test this change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants