v1 と v2、ベクトル v3 と角度aの 2 つのベクトルで形成された 1 つの線分があります。線分 v1-v2 と v3-v4 が角度aになるように、Javaでメソッドを作成するにはどうすればよいですか(私はベクトルを表すために Apache Commons Math も使用しています) 。 無限の v4 要素があります。線分 v3-v4 がそのサイズになるように、そのメソッドにサイズを指定できればさらに良いでしょう。(すべて 2 次元空間で、角度はラジアンでも度でもかまいません)
編集:約束どおり、解決しようとしている問題の画像を含めました。2 つのベクトル (線は少し長いですが、それは問題ではありません)、角度、および 3 番目の点で定義された線分があります。角度aで最初の線と交差する 2 番目の線を描画する必要があります。Javafx (ここで使用) のすべての線は 2 つの点を定義することによって描画されるため、赤い点 (または考えられる点) を見つける必要がありました。
編集:アリの答えを使用して、必要なことを行う次の方法を取得しました:
public Pair<Vector2D, Vector2D> calculateFourthPoint(Vector2D v1, Vector2D v2, Vector2D v3, double angleInDegrees) {
Vector2D r = v1.subtract(v2);
double rx = r.getX();
double ry = r.getY();
double angle = toRadians(angleInDegrees);
double a = pow(rx, 2) + pow(ry, 2);
double b = 2 * sqrt(pow(rx, 2) + pow(ry, 2)) * cos(angle) * rx;
double c = pow(rx, 2) * pow(cos(angle), 2) + pow(ry, 2) * pow(cos(angle), 2) - pow(ry, 2);
double discriminant = sqrt(pow(b, 2) - (4 * a * c));
double sx1 = (-b + discriminant) / (2 * a);
double sx2 = (-b - discriminant) / (2 * a);
double sy1 = sqrt(1 - pow(sx1, 2));
double sy2 = sqrt(1 - pow(sx2, 2));
Vector2D s1 = new Vector2D(sx1, sy1);
Vector2D s2 = new Vector2D(sx2, sy2);
Vector2D v4_1 = v3.subtract(s1);
Vector2D v4_2 = v3.subtract(s2);
return new Pair<Vector2D, Vector2D>(v4_1, v4_2);
}