7

Java で三角形内のランダムな点を取得しようとしています。

x、y座標を持つ3つの点があり、この式を使用しようとしています。

P = (1 - sqrt(r1)) * A + (sqrt(r1) * (1 - r2)) * B + (sqrt(r1) * r2) * C

ここで、r1 と r2 は 0 から 1 までのランダム double です。しかし、A、B、C を定義する方法は? A には x 座標と y 座標があるからです。

4

4 に答える 4

14
P(x) = (1 - sqrt(r1)) * A(x) + (sqrt(r1) * (1 - r2)) * B(x) + (sqrt(r1) * r2) * C(x)
P(y) = (1 - sqrt(r1)) * A(y) + (sqrt(r1) * (1 - r2)) * B(y) + (sqrt(r1) * r2) * C(y)

詳細については、math.stackexchangeこの論文を参照してください。

于 2013-10-29T09:35:37.023 に答える
2

Graphics Gems (Turk) でも紹介されている、この目標を達成するための別の方法を次に示します。

if (r1 + r2 > 1) {
    r1 = 1 - r1;
    r2 = 1 - r2;
}

a = 1 - r1 - r2;
b = r1; 
c = r2;

Q = a*A + b*B + c*C

この方法は、より高次元の空間に拡張することはできません。その場合は、本質的に重心座標である式を使用する必要があります。

于 2014-02-12T08:13:49.740 に答える