[英]How do you get a random point in a 3D plane
我需要在飛機上隨機取一個點。 假設我們有一個四邊形並且知道組成它的四個頂點的位置。 如何獲得該四邊形內的隨機點?
給定一個四邊形:
pD ---- pC
| |
| |
| |
pA ---- pB
您可以通過在該歸一化正方形內獲取一個隨機點並使用 A-to-B 和 A-to-D 向量作為坐標基礎來獲得一個隨機點。
在實踐中:
// gets a value between 0.0 and 1.0
float randomVal();
vec3 point_in_quad(vec3 pA, vec3 pB, vec3 pC, vec3 pD) {
return pA + (pB - pA) * randomVal() + (pD - pA) * randomVal();
}
如果你假設凸性,你可以這樣做:
// gets a value between 0.0 and 1.0
float randomVal();
vec3 point_in_quad(vec3 pA, vec3 pB, vec3 pC, vec3 pD)
{
vec3 ab = pA + (pB - pA) * randomVal();
vec3 dc = pD + (pC - pD) * randomVal();
vec3 r = ab + (dc - ab) * randomVal();
return r;
}
基本上,選擇兩個隨機點。 AB 一張,CD 一張。 然后在這兩者之間隨機選擇一個點。
歸功於 @frank 的框架。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.