6

以下の式をプログラミングコードに変換しようとしています。目的は、2本の線の交点を見つけることです。そしてprontに

(y1-y2)x-(x1-x2)y =(y1-y2)x1-(x1-x2)y1

(y3-y4)x-(x3-x4)y =(y3-y4)x3-(x3-x4)y3

クラメルの公式を使用するように言われましたが、クラメルの公式には6つのdiff変数があります。8つの変数(x1、y1、x2、y2、x3、y3、x4、y4)として4つの異なるポイントから始めます。

私はJavaを使用しています。どんな助けでもいただければ幸いです。このサイトで尋ねられる質問はすべて、長く複雑なコードを含むさまざまなタイプの一次方程式に関するものですが、私に関連するものは見つかりませんでした。

これは私が持っているものですが、上記の方程式からプログラム可能なものへの移行は本当に私を困惑させます。

import java.util.Scanner;
public class E325 {
    public static void main(String[] args) {
    /* 
     * The purpose of this program is to find the intersect
     * of two lines given by the user by four points
     * 
     * Get the four points. x1,y1 x2,y2 x3,y3 x4,y4
     */
    Scanner input = new Scanner(System.in);
    System.out.print("Enter x1 y1, x2 y2, x3 y3, x4 y4: ");
    double x1 = input.nextDouble();
    double y1 = input.nextDouble();
    double x2 = input.nextDouble();
    double y2 = input.nextDouble();
    double x3 = input.nextDouble();
    double y3 = input.nextDouble();
    double x4 = input.nextDouble();
    double y4 = input.nextDouble();

    }
}
4

3 に答える 3

4

行列がわからないので、別の方法で解きます。

各行のmとbを計算するのに十分な知識があります

m =(y2-y1)/(x2-x1)

b = y1-m(x1)

一方の線についてはmとbを計算し、もう一方の線についてはm'とb'を計算します。

ここで、交差点では、x、yは2つの線で同じであるため、y = mx+bおよびy=m'x+b'です。したがって

mx + b = m'x + b'

x =(m'x + b'-b)/ m

xをmx+bに接続して、そのxのyを取得します。

見つけたx、yが線分にあることを確認する必要があります。線が平行でない限り、線はどこかで交差しますが、開始した線分の端点間である必要はありません。

于 2012-09-27T04:02:22.280 に答える
1

(y1 - y2)x - (x1 - x2)y = (y1 - y2)x1 - (x1 - x2)y1
(y3 - y4)x - (x3 - x4)y = (y3 - y4)x3 - (x3 - x4)y3

cramers ルールを使用するように言われましたが、cramers ルールには 6 つの diff 変数があります。

いいえ、それは完全に間違っています。Cramer の法則は、Ax = b の形式の方程式を解く単純な手法ですが、A は NxN 行列、x と b は N ベクトルです。必要なことは、これら 2 つの方程式を行列式として定式化することです。上記に対応する左辺をあげます。右辺と Cramer の規則の適用はあなたに任せます。

        A            *   x    = b

⌈ y1-y2   -(x1-x2) ⌉   ⌈ x ⌉
|                  | * |   |
⌊ y3-y4   -(x3-x4) ⌋   ⌊ y ⌋

その行列 A とベクトル [x,y] を乗算すると、

⌈ y1-y2   -(x1-x2) ⌉   ⌈ x ⌉   ⌈ (y1-y2)*x - (x1-x2)*y ⌉
|                  | * |   | = |                       |
⌊ y3-y4   -(x3-x4) ⌋   ⌊ y ⌋   ⌊ (y3-y4)*x - (x3-x4)*y ⌋

この結果は、方程式のペアの左辺とまったく同じであることに注意してください。

于 2012-10-13T14:11:47.760 に答える
0

直線は 2 点を通ります。

4 つの点と 2 つの線があります。

直線の方程式はよく知られています。

y = m*x + b

どこmで は勾配で、bは y 切片です。

2 行ある場合は、次のようになります。

-m1*x + y = b1
-m2*x + y = b2

行列の方程式が見えますね。

[ -m1    1 ]{x} = {b1} 
[ -m2    1 ]{y}   {b2}

これを反転して、2 つの線が交差する (x, y) を求めます。行列を反転できない場合は、交差していないことを意味します。

クレーマーの法則?確かに、2x2 の場合は簡単に記述できます。LU 分解はより一般的です。

于 2012-09-27T00:57:46.040 に答える