-1

私のプログラムの目標は、黄色い点を通り、白い線に垂直な線を描くことです。私の唯一のアイデアは方程式を見つけることでしたが、最初に方程式を使用して白い線を引くことでしたが、うまくいかず、なぜだろうと思っています。

ここに画像の説明を入力

2点間に線を引こうとしています。ポイント (beginX, beginY) と (endX, endY) があります

方程式は次のようになります。

方程式

Marvin Image Processing Library を使用しており、機能があります

    imageIn.drawLine(int x1, int y1,int x2,int y2,Color c);

2 点 (x1,y1) と (x2,y2) の間に直線を引く

この関数を使用してポイント間に線を引きましたが、うまく機能しました。しかし今、私は同じ線を描きたいのですが、私の方程式を使用しています。(私のプログラムの次のステップは、黄色の点を通る垂直線を描くことであり、別の方法でそれを行う方法がわからないため、必要です)。

これが私のコードです:

    int A = (endY-beginY)/(endX-beginX);

    int x1 = 120;
    int x2 = 60;

    int y1 = (int)(A*x1+beginY-A*beginX); // equation
    int y2 = (int)(A*x2+beginY-A*beginX); 


    imageIn.drawLine(x1, y1, x2, y2, Color.green);
    imageIn.drawLine(beginX, beginY, endX, endY, Color.white);     

効果を終了する:

ここに画像の説明を入力

なぜ私の線が白い線と同じでないのか、私にはわかりません。開始点と終了点が異なることは知っていますが、なぜ白いものと同じではないのでしょうか。

誰が何が起こっているのか知っていますか?そうでない場合は、数式を使用せずに黄色の点を通る垂線を描く方法を誰か教えてもらえますか?

4

3 に答える 3

0

ああ、垂線を引くための良い、簡単な解決策を見つけました。

黄色の点から同じ距離にある、白い線上にある 2 つの点を見つけます。この2つの点のそれぞれから同じ距離にあるピクセルに色を付けると、垂線が得られます。

コード:

     for ( int i = 0 ; i < 5; i++){        
     for (int x = 0; x < imageIn.getWidth(); x++) {
        for (int y = 0; y < imageIn.getHeight(); y++) {
            Point xy = new Point(x,y);
            Point temp = new Point(a[i],b[i]); // a[i] b[i] - coordinates of the first point
            Point temp1 = new Point(a[i+2],b[i+2]); // a[i+2] b[i+2] - coordinates of second point
            if(CountDistance(imageIn, xy, temp)==CountDistance(imageIn, xy, temp1))
            {
                imageIn.setIntColor(x, y, 0,0,255);
            }

        }
        }
    }

効果:

ここに画像の説明を入力

于 2014-05-30T14:08:01.507 に答える