PShape.contains() is broken for transformed shapes (double invert)
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 1/5
- Geschätzter Aufwand
- Unter einer Stunde
- Anfängerfreundlichkeit
- 55/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- java
- Bereich
- computer-graphics
Rechercherichtung
Beginne in PShape.java bei contains(), wo das Issue zwei aufeinanderfolgende Matrix-Invertierungen identifiziert. Führe das bereitgestellte translated-rectangle-Repro aus und verifiziere, dass das Entfernen der zusätzlichen Invertierung bewirkt, dass contains(120, 120) für die transformierte Form true zurückgibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
contains() in PShape is inverting the matrix twice, so it cancels itself out and hit-testing runs in the wrong space.
In PShape.java:
PMatrix inverseCoords = matrix.get();
inverseCoords.invert();
inverseCoords.invert();
inverseCoords.mult(new PVector(x, y), p);
That second invert() should not be there.
So for translated/rotated/scaled shapes, contains(x, y) gives wrong answers.
Quick repro:
PShape s = createShape(RECT, 0, 0, 50, 50);
s.translate(100, 100);
println(s.contains(120, 120)); // false, should be true
Expected: point-in-shape test respects the shape transform.
Actual: transform handling is wrong because inverse matrix is never actually applied.
- Vorherrschende Sprache
- Java
- Sterne
- 497
- Forks
- 183
- Ø Merge
- 4 Std. 39 Min.
- Gemergte PRs (30 T.)
- 3
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus processing/processing4
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
processing/processing4#1554 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
processing/processing4#1515 · 1 Reaktion ·
-
bug
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
processing/processing4#1573 ·
-
startup error Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
processing/processing4#1569 · 7 Kommentare ·
-
Binaries under bin directory lack executable permissions for the snap and .deb packages for Linux Offenbug
processing/processing4#1567 · 3 Kommentare · 1 Reaktion · 1 zugewiesene Person ·
Alle Issues in processing/processing4
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
elastic/gradle-plugins#157 ·
-
enhancement Tools
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
apache/rocketmq-dashboard#5008 ·
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
DETECT_PARAMETER_NAMES=false silently disables @ConstructorProperties-based Creator detection too Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
FasterXML/jackson-databind#6229 ·