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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
CryNet
0 / 0 / 1
Регистрация: 13.04.2011
Сообщений: 78
Записей в блоге: 1
#1

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

07.05.2011, 16:38. Просмотров 397. Ответов 0
Метки нет (Все метки)

Помогите пожалуйста найти ошибку в моем коде! Надо определить какие линии пересекаются а какие совпадают и вывести на экран линии, которые пересекаются и посчитать их кол-во.. помогите плиз срочно надо.
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     Пересечение линий
Посмотрите здесь:

Линий в opengl'e - C++
Написал код который выводит дисплей на экран и на нем одну линию, ошибки не одной , но почему-то не выводится линия =( Вопрос , почему? Вот...

Массив-пересечение - C++
Помогите, пожалуйста, с заданием: Дано два целочисленных массива, состоящих из не повторяющихся чисел. Сформировать новый массив, который...

Пересечение множеств - C++
Здравствуйте. У меня следующая задача: Даны 2 множества A и B, причем множество B отсортировано по возрастанию. Необходимо получить...

Пересечение отрезков. - C++
Решал задачу на acmp про пересечение отрезков, завалился на 20 тесте. Долго просидел, решил прочитать комментарии. Объясните мне, если...

Пересечение массивов - C++
Даны два массива, нужно найти их пересечение то есть некий третий массив содержащий все одинаковые элементы первого и второго массива без...

Пересечение прямоугольников - C++
В прямоугольной системе координат (оси расположены слева направо и сверху вниз) заданы два прямоугольника (стороны параллельны осям). Найти...

Пересечение треугольников - C++
Здравствуйте! Подскажите, пожалуйста, как узнать пересекается треугольник или нет с другими треугольниками. Вот данные: struct...

Пересечение контейнеров - C++
Пытаюсь пересечь контейнеры(чтобы не было повторяющихся элементов),но выдает vector iterators incompatible ,если перед итераторами ничего...

Пересечение отрезков - C++
Есть 2 отрезка, определенные O1(x1, y1, x2, y2) и O2(x1, y1, x2, y2) Нужно узнать, пересекаются ли они. Собственно задача не так...

Пересечение треугольников - C++
Надо определить, пересекаютя ли треугольники. Наличие общей грани нельзя считать пересечением, но если один треугольник лежит внутри...

задача на пересечение - C++
В этой задаче необходимо определить, пересекается ли прямая с окружностью. я нахожу дискриминант и затем нужно записать условие, но как его...

Пересечение фигур - C++
Даны две фигуры: Окружность с центром в точке (x0,y0) и радиусом r, и пятиугольник заданный координатами вершин. Как можно определить факт...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru