PShape.contains() is broken for transformed shapes (double invert)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 1/5
- Thời gian dự kiến
- Dưới một giờ
- Mức phù hợp với người mới
- 55/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- java
- Lĩnh vực
- computer-graphics
Hướng nghiên cứu
Bắt đầu trong PShape.java tại contains(), nơi issue xác định hai lần nghịch đảo ma trận liên tiếp. Chạy repro translated-rectangle được cung cấp và xác minh rằng việc loại bỏ lần nghịch đảo thừa khiến contains(120, 120) trả về true cho hình đã biến đổi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Java
- Star
- 497
- Fork
- 183
- Merge trung bình
- 4 giờ 39 phút
- Pull request đã merge (30 ngày)
- 3
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của processing/processing4
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
processing/processing4#1554 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
processing/processing4#1515 · 1 reaction ·
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
processing/processing4#1573 ·
-
startup error Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
processing/processing4#1569 · 7 bình luận ·
-
Binaries under bin directory lack executable permissions for the snap and .deb packages for Linux Đang mởbug
processing/processing4#1567 · 3 bình luận · 1 reaction · 1 người được giao ·
Tất cả issue của processing/processing4
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
elastic/gradle-plugins#157 ·
-
enhancement Tools
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
apache/rocketmq-dashboard#5008 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
DETECT_PARAMETER_NAMES=false silently disables @ConstructorProperties-based Creator detection too Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
FasterXML/jackson-databind#6229 ·