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 座標があるからです。
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とこの論文を参照してください。
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
この方法は、より高次元の空間に拡張することはできません。その場合は、本質的に重心座標である式を使用する必要があります。