Tôi có một tam giác vuông đơn vị và một giá trị ở mỗi 3 đỉnh. Tôi cần nội suy để tìm giá trị tại một điểm trong tam giác. Số giờ tìm kiếm đã không có gì thực sự cho tôi biết cách thực hiện điều này. Đây là nỗ lực gần nhất của tôi, mà thực sự là khá chặt chẽ nhưng không hoàn toàn đúng -Nội suy của một hình tam giác
result =
v1 * (1 - x) * (1 - y) +
v2 * x * (1 - y) +
v3 * x * y;
v1, v2, v3 và là những giá trị tại 3 đỉnh của tam giác. (x, y) là điểm trong tam giác mà bạn đang cố tìm giá trị của.
Bất kỳ phương pháp nào cũng có thể giúp tôi ở đây. Nó không nhất thiết phải là một đơn vị/tam giác vuông.
Thông tin cập nhật: Tôi có một mạng lưới các điểm cách đều nhau và một giá trị tại mỗi điểm. Tôi tạo một hình tam giác ra khỏi 3 điểm gần nhất trên lưới. Đây là hình ảnh minh họa nó -
Vì vậy, tôi phải nội suy giữa 5, 3 và 7 để tìm giá trị của x. Điểm cũng có thể nằm trong tam giác khác, có nghĩa là bạn sẽ nội suy giữa 5, 7 và giá trị của góc dưới cùng bên trái của hình vuông.
Trong mã tôi đã cho thấy, v1 = 5, v2 = 3, v3 = 7.
x là khoảng cách phân đoạn (khoảng [0-1]) theo hướng "x" và y là khoảng cách phân đoạn theo hướng "y".
Trong ví dụ của hình ảnh, x lẽ sẽ vào khoảng 0,75 và y sẽ vào khoảng 0,2
Dưới đây là những nỗ lực gần nhất của tôi -
Created sử dụng -
if (x > y) //if x > y then the point is in the upper right triangle
return
v1 * (1 - x) * (1 - y) +
v2 * x * (1 - y) +
v3 * x * y;
else //bottom left triangle
return
v1 * (1 - x) * (1 - y) +
v4 * (1 - x) * y +
v3 * x * y;
Và nỗ lực khác -
Được tạo bằng -
if (x > y)
return
(1 - x) * v1 + (x - y) * v2 + y * v3;
else
return
(1 - y) * v1 + (y - x) * v4 + x * v3;
Chúng đều gần với những gì tôi cần nhưng rõ ràng là không hoàn toàn đúng.
Vì vậy, mà đỉnh là mà ? Chỉ cho tôi cách hệ thống tọa độ của bạn hoạt động, theo cách nào x và y đi đến đâu và ở đâu v1 v2 và v3. – Dan
@Dan Ok Tôi đã cập nhật một số thông tin để cho biết tôi đang làm gì sâu hơn một chút. – Frobot
Bạn có phương pháp diễn giải cụ thể nào không? Tuyến tính/bilinear/hàng xóm gần nhất? – rsaxvc