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

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

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

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

07.05.2011, 16:38. Просмотров 401. Ответов 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++
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2011, 16:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пересечение линий (C++):

Пересечение двух прямых и проверка на пересечение - C++
Доброго времени суток слизал функцию проверки отсюда:/segments_intersection_checking на всякий случай у меня она выглядит так: int...

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

Пересечение треугольников в 3d - C++
Вот например 2 треугольника: (для примера) struct Point { int X; int Y; int Z; };

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

Пересечение прямых - C++
Не могу сделать так,чтобы находил пересечения двух прямых(n штук) и выводил координаты пересечении. Вот что вышло. #include &quot;stdafx.h&quot; ...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2011, 16:38
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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