Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пересечение линий

53K
18 декабря 2010 года
Sawans
17 / / 24.05.2010
Определить класс Line дляпрямых линий, проходящих через точки А(х1,у1) и В(х2,у2).Создать массив обьектов класса Line. Определить какие из прямых линий пересекаются а какие совпадают. Нарисовать все пересекающиеся прямые.
Я написал алгоритм, вроде правильно, но не могу сделать правильно прорисовку линий. Рисуется только вторая(
Вот что я написал:
Код:
public class Line extends Applet{

    int N = 2;
    int[][] A = new int[N][2];
    int[][] B = new int[N][2];
    int Y,U,X;
   
    Random a = new Random();
    Date d = new Date(4);
   
    public void paint(Graphics g)
    {
       
        A[0][0] = 1; A[0][1] = 1;
        A[1][0] = 100; A[1][1] = 1;
        //A[2][0] = 1; A[2][1] = 1;
        //A[3][0] = 1; A[3][1] = 1;
        //A[4][0] = 1; A[4][1] = 1;
        B[0][0] = 500; B[0][1] = 500;
        B[1][0] = 2000; B[1][1] = 1000;
        //B[2][0] = 5; B[2][1] = 5;
        //B[3][0] = 5; B[3][1] = 5;
        //B[4][0] = 5; B[4][1] = 5;
       
       
       
        //for(int i=0; i<N;i++)
            //for(int j=0; j<=1;j++)
            //{
            //  A[j]=a.nextInt(200);
            //  B[j]=a.nextInt(100);
            //}
       
        for(int i=0; i<N;i++)
            for(int j=i+1; j<N;j++)
                //for(int k=0; k<N;k++)
                {
                   
                    X = (B[0]-A[0])*(B[j][1]-A[j][1])-(B[1]-A[1])*(B[j][0]-A[j][0]);
                    if(X!=0)
                    {
                    Y = (A[1]-A[j][1])*(B[j][0]-A[j][0])-(A[0]-A[j][0])*(B[j][1]-A[j][1]);
                    U = (A[1]-A[j][1])*(B[0]-A[0])-(A[0]-A[j][0])*(B[1]-A[1]);
                    double r = Y / X;
                    double s = U / X;

                    if (r >= 0 && r <= 1 && s >= 0 && s <= 1)

                    //Y = (k-A[0])*(B[1]-A[1])/(B[0]-A[0])+A[1];
                    //U = (k-A[j][0])*(B[j][1]-A[j][1])/(B[j][0]-A[j][0])+A[j][1];
                    //if(Y==U)
                        for(int h=0; h<N;h++)
                            g.drawLine(A[0], A[j][1], B[j][0], B[1]);
               
                    }
                }
    }
}
53K
19 декабря 2010 года
Sawans
17 / / 24.05.2010
Код:
public class Line extends Applet{

    int N = 5;
    int[][] A = new int[N][2];
    int[][] B = new int[N][2];
    int Y,U,X;
   
    Random a = new Random();
    Date d = new Date(4);
   
    public void paint(Graphics g)
    {
       
        //A[0][0] = 0; A[0][1] = 0;
        //A[1][0] = 0; A[1][1] = 50;
        //A[2][0] = 500; A[2][1] = 500;
        //A[3][0] = 1000; A[3][1] = 100;
        //A[4][0] = 1; A[4][1] = 1000;
        //B[0][0] = 500; B[0][1] = 500;
        //B[1][0] = 2000; B[1][1] = 1000;
        //B[2][0] = 600; B[2][1] = 600;
        //B[3][0] = 500; B[3][1] = 5000;
        //B[4][0] = 100; B[4][1] = 1000;
       
       
       
        for(int i=0; i<N;i++)
            for(int j=0; j<=1;j++)
            {
                A[j]=a.nextInt(200);
                B[j]=a.nextInt(100);
            }
       
        for(int i=0; i<N;i++)
            for(int j=i+1; j<N;j++)
                //for(int k=0; k<N;k++)
                {
                   
                    X = (B[0]-A[0])*(B[j][1]-A[j][1])-(B[1]-A[1])*(B[j][0]-A[j][0]);
                    if(X!=0)
                    {
                    Y = (A[1]-A[j][1])*(B[j][0]-A[j][0])-(A[0]-A[j][0])*(B[j][1]-A[j][1]);
                    U = (A[1]-A[j][1])*(B[0]-A[0])-(A[0]-A[j][0])*(B[1]-A[1]);
                    double r = Y / X;
                    double s = U / X;

                    if (r >= 0 && r <= 1 && s >= 0 && s <= 1)
                    {
                    //Y = (k-A[0])*(B[1]-A[1])/(B[0]-A[0])+A[1];
                    //U = (k-A[j][0])*(B[j][1]-A[j][1])/(B[j][0]-A[j][0])+A[j][1];
                    //if(Y==U)
                            g.drawLine(A[0], A[1], B[0], B[1]);
                            g.drawLine(A[j][0], A[j][1], B[j][0], B[j][1]);
                    }
                    }
                }
    }
}

Помогите найти ошибку!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог