Форум программистов, компьютерный форум CyberForum.ru

Пересечение линий - C++

Восстановить пароль Регистрация
 
CryNet
0 / 0 / 1
Регистрация: 13.04.2011
Сообщений: 78
Записей в блоге: 1
07.05.2011, 16:38     Пересечение линий #1
Помогите пожалуйста найти ошибку в моем коде! Надо определить какие линии пересекаются а какие совпадают и вывести на экран линии, которые пересекаются и посчитать их кол-во.. помогите плиз срочно надо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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[i][j]=a.nextInt(200);
                B[i][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[i][0]-A[i][0])*(B[j][1]-A[j][1])-(B[i][1]-A[i][1])*(B[j][0]-A[j][0]);
                    if(X!=0)
                    {
                    Y = (A[i][1]-A[j][1])*(B[j][0]-A[j][0])-(A[i][0]-A[j][0])*(B[j][1]-A[j][1]);
                    U = (A[i][1]-A[j][1])*(B[i][0]-A[i][0])-(A[i][0]-A[j][0])*(B[i][1]-A[i][1]);
                    double r = Y / X;
                    double s = U / X;
 
                    if (r >= 0 && r <= 1 && s >= 0 && s <= 1)
                    {
                    Y = (k-A[i][0])*(B[i][1]-A[i][1])/(B[i][0]-A[i][0])+A[i][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[i][0], A[i][1], B[i][0], B[i][1]);
                            g.drawLine(A[j][0], A[j][1], B[j][0], B[j][1]);
                    }
                    }
                }
    }
}
Добавлено через 1 минуту
и плиз помогите перепелить по возможности под Dec C++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2011, 16:38     Пересечение линий
Посмотрите здесь:

C++ Пересечение прямоугольников
C++ Пересечение пятиугольников
Линий в opengl'e C++
пересечение множеств C++
Пересечение отрезков. C++
Пересечение множеств C++
Пересечение множеств C++
Задача на пересечение C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru