Tôi đang cố gắng viết một hàm trong GLSL trả về khoảng cách đã ký cho hình chữ nhật. Hình chữ nhật được căn chỉnh theo trục. Tôi cảm thấy một chút khó khăn; Tôi chỉ không thể quấn đầu xung quanh những gì tôi cần làm để làm cho nó hoạt động.Tính toán khoảng cách đã ký giữa điểm và hình chữ nhật
Điều tốt nhất tôi đã đưa ra là thế này:
float sdAxisAlignedRect(vec2 uv, vec2 tl, vec2 br)
{
// signed distances for x and y. these work fine.
float dx = max(tl.x - uv.x, uv.x - br.x);
float dy = max(tl.y - uv.y, uv.y - br.y);
dx = max(0.,dx);
dy = max(0.,dy);
return sqrt(dx*dx+dy*dy);
}
nào tạo ra một hình chữ nhật giống như:
Các dòng hiển thị khoảng cách từ hình chữ nhật. Nó hoạt động tốt nhưng CHỈ cho khoảng cách NGOÀI hình chữ nhật. Bên trong hình chữ nhật, khoảng cách là tĩnh 0.
.
Làm thế nào để tôi cũng nhận được khoảng cách chính xác bên trong hình chữ nhật bằng cách sử dụng công thức hợp nhất?
Tuyệt vời! Công việc có hoàn hảo không. – tenfour
@jozxyqk Bạn đã nghĩ ra chức năng này như thế nào? –
@ v.shashenko dùng thử và lỗi thực sự. Tôi đã cập nhật câu trả lời để đi vào chi tiết hơn một chút. – jozxyqk