我想在GLSL中編寫一個函數,它將帶符號的距離返回到矩形。矩形是軸對齊的。我感覺有點卡住了;我無法將我的頭圍繞在我需要做的工作上。計算點和矩形之間的帶符號距離
我想出的最好的是這樣的:
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);
}
其產生的矩形,看起來像:
該行顯示的矩形距離。它工作正常,但只適用於矩形外的距離。矩形內的距離是一個靜態的0.
。
如何使用統一公式獲得矩形內的準確距離?
好極了!完美的工作。 – tenfour
@jozxyqk你是怎麼想出這個功能的? –
@ v.shashenko真的試錯了。我已經更新了答案,以便更詳細地介紹。 – jozxyqk