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

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

Войти
Регистрация
Восстановить пароль
 
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
#1

Цикл и вектор - C++

11.12.2010, 15:57. Просмотров 682. Ответов 0

Проблема в том, что оно входит в цикл ака for(i=0;i<-1;i++)
Сразу даю кусок кода =)
В функцию передаем координаты вершин фигуры, прямоугольник, по которому отсекаем ее и цвет
points - vector<point> (в point находятся x и y)
rect - структура из left, right, top, bottom
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
59
60
61
62
63
64
65
void Cross(points p, rect r, int cc)
{
    p.push_back(p[0]);//добавим в начало первую точку, чтобы всю фигуру анализировать
    int i,j;
    points swap(15), tmp(15);
    point temp;
    swap.clear();
    tmp.clear();
    //left-----------------------------
    for(i=0;i<p.size()-1;i++)//отсечение фигуры по x=r.left. Новая фигура в tmp
    {
        if(p[i].x<r.left&&p[i+1].x<r.left) continue;
        if(p[i].x>=r.left&&p[i+1].x>=r.left)
        {
            tmp.push_back(p[i+1]);
            continue;
        }
        if(p[i].x<=r.left&&p[i+1].x>=r.left)
        {
            temp.x=r.left;
            temp.y=p[i].y+(p[i].y-p[i+1].y)*(r.left-p[i].x)/(p[i].x-p[i+1].x);
            tmp.push_back(temp);
            tmp.push_back(p[i+1]);
            continue;
        }
        if(p[i].x>=r.left&&p[i+1].x<=r.left)
        {
            temp.x=r.left;
            temp.y=p[i].y+(p[i].y-p[i+1].y)*(r.left-p[i].x)/(p[i].x-p[i+1].x);
            tmp.push_back(temp);
            continue;
        }
    }
    if(tmp.size()>0) tmp.push_back(tmp[0]);
    //right----------------------------
    for(i=0;i<tmp.size()-1;i++)//изначально фигура не пересекает область и tmp.size() возвращает 0, но в цикл оно заходит(((
    {
        if(tmp[i].x>r.right&&tmp[i+1].x>r.right) continue;
        if(tmp[i].x<=r.right&&tmp[i+1].x<=r.right)
        {
            swap.push_back(tmp[i+1]);
            continue;
        }
        if(tmp[i].x<=r.right&&tmp[i+1].x>=r.right)
        {
            temp.x=r.right;
            temp.y=((r.right-tmp[i].x)*(tmp[i+1].y-tmp[i].y))/(tmp[i+1].x-tmp[i].x)+tmp[i].y;
            swap.push_back(temp);
            continue;
        }
        if(tmp[i].x>=r.right&&tmp[i+1].x<=r.right)
        {
            temp.x=r.right;
            temp.y=((r.right-tmp[i].x)*(tmp[i+1].y-tmp[i].y))/(tmp[i+1].x-tmp[i].x)+tmp[i].y;
            swap.push_back(temp);
            swap.push_back(tmp[i+1]);
            continue;
        }
    }
    figure(swap,0xff0000ff,0xff0000ff);
    //---------------------------------
    glBegin(GL_LINE_STRIP);
    glEnd();
    p.pop_back();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2010, 15:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Цикл и вектор (C++):

Компьютер угадывает число. Задача решена, как считаете? (вектор и цикл) - C++
Компьютер должен угадать задуманное пользователем число с 7-ми попыток. Хотел написать с использованием циклов, а не просто перебором...

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы - C++
Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы. Безопасный вектор определяет переменные нижний и верхний...

матрица на вектор, вроде правильно, а вектор на матрицу? посмотрите пожалуйста? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main() { ...

Почему матрица на вектор умножается быстрее чем вектор на матрицу? - C++
Почему матрица на вектор умножается быстрее чем вектор на матрицу?

Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb. - C++
Привет. Не могу разобратся, вот задание: Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2010, 15:57
Привет! Вот еще темы с ответами:

Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы - C++
Помогите не знаю как сделать! Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы. Безопасный...

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

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

задан вектор С, который состоит из 12 действительных чисел. Сформировать вектор D, нечетные элементы которого есть целая часть нечетных - C++
задан вектор С, который состоит из 12 действительных чисел. Сформировать вектор D, нечетные элементы которого есть целая часть нечетных...


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

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

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