18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
|
|
1 | |
Растёт скорость таймера14.06.2013, 20:33. Показов 2308. Ответов 22
Метки нет (Все метки)
Добрый день. Нужно сделать аквариум, но пока это просто кубики (вместо рыбок). При столкновении, рыбки спариваются и образуется новая рыбка Но проблема в том, что с каждым разом кубики становятся всё быстрее и пролетают сквозь друг-друга. Подскажите что делать?
exe и cpp во вложении. Буду очень благодарен тому, кто поможет Уже неделю вожусь с этой работой... P.S. Заметил, что время жизни новых рыбок уменьшается, следовательно таймер вызывается чаще, может по этому они не успевают проходить проверку на столкновение?
0
|
14.06.2013, 20:33 | |
Ответы с готовыми решениями:
22
При какой плотности тока в растворе AgNO3 толщина выделяющегося серебра растёт со скорость 1 мм/ч Не растет PR Растет размер БД Рандом растет |
22 / 22 / 8
Регистрация: 20.04.2013
Сообщений: 103
|
||||||
14.06.2013, 21:14 | 2 | |||||
Проверку они не успеваю провериться из за того что они быстрей двигаются и просто проскакивают те координаты. там лучше им задай от и до. например:
0
|
18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
|
||||||
14.06.2013, 21:34 [ТС] | 3 | |||||
Я так и делаю:
Кликните здесь для просмотра всего текста
0
|
22 / 22 / 8
Регистрация: 20.04.2013
Сообщений: 103
|
|
14.06.2013, 21:42 | 4 |
Я тогда думаю надо сделать таймер стабильный чтобы рыбки не разгонялись.
0
|
18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
|
|
14.06.2013, 21:49 [ТС] | 5 |
0
|
22 / 22 / 8
Регистрация: 20.04.2013
Сообщений: 103
|
|
14.06.2013, 22:16 | 6 |
Нужно написать таймер в функцию отдельную. и вызывать только 1 раз когда создаются рыбки.
0
|
18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
|
|
15.06.2013, 00:10 [ТС] | 7 |
Он и так идёт отдельной функцией и вызывается единожды из под main(), а потом рекурсия.
0
|
22 / 22 / 8
Регистрация: 20.04.2013
Сообщений: 103
|
|
15.06.2013, 00:54 | 8 |
Из за чего увеличивается скорость?
0
|
18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
|
|
15.06.2013, 11:18 [ТС] | 9 |
0
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|
15.06.2013, 14:15 | 10 |
Зови glutPostRedisplay() в конце функции таймера, а не в функции отрисовки (у тебя в Draw происходит зацикливание запроса на отрисовку).
1
|
18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
|
|
15.06.2013, 16:36 [ТС] | 11 |
0
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
||||||
15.06.2013, 20:28 | 12 | |||||
Умные указатели очень сильно тебе пригодятся.
Стандартные контейнеры обычно вполне себе ничего и ими нужно пользоваться. Вообщем, я немного изменил твоё творение по этой части, а то оно валилось из-за проблем с памятью. Визуально у тебя определение столкновений ненадёжно работает.. Кликните здесь для просмотра всего текста
PS: FPS считаю через виндовую функцию, если в линуксе нужную подставь. Собственно, у тебя проблемы не глютом, а с C++.
1
|
18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
|
||||||
15.06.2013, 21:30 [ТС] | 13 | |||||
Тоже Windows. Спасибо, принцип работы понял, нас учили пользоваться этими контейнерами, но я не вникал
Проблема теперь, что рыбки не отталкиваются... Это не зависит от того, что у меня main выглядит так: Кликните здесь для просмотра всего текста
?
0
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|||||||||||
15.06.2013, 22:16 | 14 | ||||||||||
main я забыл переправить на твой косяк.
Ещё один косяк: строчка 159 должна выглядеть так:
Для прямоугольников достаточно проверить на нахождение всех точек одного прямоугольника внутри проекций другого прямоугольника. Для произвольных выпуклых объектов смотри здесь. Кстати, если тебе просто нужны контейнер объектов Fish, а не указателей, то проще без указателей обойтись, например: Кликните здесь для просмотра всего текста
Добавлено через 19 минут Поправка: прямоугольники столкнулись, если хотя бы у одной вершины одного прямоугольника все проекции находится внутри всех проекций второго прямоугольника. Ещё можно окружности(сферы) использовать Тут длина вектора центров, должна быть меньше суммы радиусов для столкновения.
1
|
18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
|
|
16.06.2013, 01:29 [ТС] | 15 |
Спасибо за поправки - всё отлично, но теперь столкновения очень странно происходят Т.е. когда должно быть только dX*=-1, оно и dY*=-1 делает, хотя формула осталась та же. Про проекции и вектора, что Вы упомянули выше, я ничего не понял И ещё старые кубики не сталкиваются с новыми (и наоборот), но зато новые с новыми сталкиваются на ура, и не разгоняются
0
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
||||||
16.06.2013, 02:50 | 16 | |||||
Примерно так:
Кликните здесь для просмотра всего текста
1
|
18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
|
|
16.06.2013, 12:04 [ТС] | 17 |
Тут получается, что рыбки константных размеров, 100х100, а они у меня будут разных размеров, в зависимости от их type.
0
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|
16.06.2013, 12:32 | 18 |
Там body может быть любых размеров, установи нужный
В любом случае это пример, а не готовая реализация..
1
|
18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
|
|
16.06.2013, 12:41 [ТС] | 19 |
Но зато теперь они лучше отбиваются, более реалистично, но вот оттолкнувшись от стенки, они отлетают не в другую сторону, под определённым углом, а просто летят назад.
0
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
||||||
16.06.2013, 13:55 | 20 | |||||
я их просто сталкивал интенсивнее, но поведение можно изменить, если заменить строчки 427-431 на эти:
Кликните здесь для просмотра всего текста
Удачи с Аквариумом
1
|
16.06.2013, 13:55 | |
16.06.2013, 13:55 | |
Помогаю со студенческими работами здесь
20
тиц не растет ТИЦ не растет Растет пинг Змейка не растет Помогите опознать диодный мост таймера духовки Hansa BOEM 624000, диодный мост таймера Почему не растет ТИЦ И PR? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |