mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-04 01:48:11 +08:00
Fix floating point error with Poisson-disk points being sampled outside shape (#1596)
* Check opposite corner * Commets and test * Fix compiling --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
co-authored by
Keavon Chambers
parent
5f72a6a8a1
commit
aed30d78b8
@@ -160,12 +160,12 @@ impl<ManipulatorGroupId: crate::Identifier> Subpath<ManipulatorGroupId> {
|
||||
for bezier in self.iter() {
|
||||
// Check that the two bounding boxes don't intersect, since we can avoid doing intersection's cubic root finding in that case
|
||||
let [bezier_corner1, bezier_corner2] = bezier.bounding_box_of_anchors_and_handles();
|
||||
if !(((corner1.x <= bezier_corner1.x) && (bezier_corner1.x <= corner2.x) || (corner1.x <= bezier_corner2.x) && (bezier_corner2.x <= corner2.x))
|
||||
&& corner1.y <= bezier_corner2.y
|
||||
&& corner2.y >= bezier_corner1.y
|
||||
|| ((corner1.y <= bezier_corner1.y) && (bezier_corner1.y <= corner2.y) || (corner1.y <= bezier_corner2.y) && (bezier_corner2.y <= corner2.y))
|
||||
&& corner1.x <= bezier_corner2.x
|
||||
&& corner2.x >= bezier_corner1.x)
|
||||
if !(((corner1.x < bezier_corner1.x) && (bezier_corner1.x < corner2.x) || (corner1.x < bezier_corner2.x) && (bezier_corner2.x < corner2.x))
|
||||
&& corner1.y < bezier_corner2.y
|
||||
&& corner2.y > bezier_corner1.y
|
||||
|| ((corner1.y < bezier_corner1.y) && (bezier_corner1.y < corner2.y) || (corner1.y < bezier_corner2.y) && (bezier_corner2.y < corner2.y))
|
||||
&& corner1.x < bezier_corner2.x
|
||||
&& corner2.x > bezier_corner1.x)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user