|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.10.2018, 23:15 | #11 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Хотел отправить скриншот.Но программа с танком стала выдавать ошибку
Divide by zero.Вот файлы программы после того как она стала выдавать ошибку. |
05.11.2018, 22:43 | #12 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Программа непонятно работает.Ставишь на вывод другой файл plg она его
выводит.Другую фигуру она рисует.При выводе же танка программа выдает сообщение Деление на ноль в MessageBox.Хотя структура вроде бы считы-вается. Файл программы выше.В чем может быть дело? |
06.11.2018, 09:40 | #13 |
Форумчанин
Регистрация: 14.03.2012
Сообщений: 147
|
Проблема в деление на ноль
Проблема в следующем участке кода:
Код:
Последний раз редактировалось ichi; 06.11.2018 в 10:00. |
06.11.2018, 15:49 | #14 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Почему же тогда для другого файла plg tower1.plg вывод осуществляется
правильно и все рисуется.Вот пример файлов программы во вложениях. |
06.11.2018, 19:15 | #15 |
Форумчанин
Регистрация: 14.03.2012
Сообщений: 147
|
Файл tank1.plg у меня рисуется. Я просто хочу сказать, что проблема "ошибка деления на ноль" возникает в этой части кода:
Код:
|
07.11.2018, 22:25 | #16 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Деление на z необходимо для перспективы , для рисования в 3-х измерени-ях.Не выводится только файл tank1.plg,файл tower1.plg выводится , хотя в
нем тоже есть деление на z.В чем дело?Пример программы с файлом tower1.plg в последнем вложении. |
09.11.2018, 08:18 | #17 |
Форумчанин
Регистрация: 14.03.2012
Сообщений: 147
|
Сделай в коде проверку на z равно 0. Добавь в код присвоение z=0.1, если z равно 0 и после этого программа не будет падать:
Код:
|
11.11.2018, 22:39 | #18 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Пробовал сделать как ты сказал.Почему-то танк растягивается на весь экран и за него.Что делать?Возможно ошибка действительно в этой части кода.Но почему же тогда в самом начале с первым вариантом ошибка не выдавалась и танк рисовался.К тому же с другими plg файлами ошибки деления на ноль не выдается.Пример с файлом tower1.plg в последнем вложении loadobj.rar.
Последний раз редактировалось Timurkh77; 11.11.2018 в 22:45. |
12.11.2018, 12:19 | #19 |
Форумчанин
Регистрация: 14.03.2012
Сообщений: 147
|
Тебе необходимо по больше экспериментировать со своим кодом, не бойся менять параметры, которые ты задаешь в начале программы. Так проще понять, что у тебя выходит и как подогнать к тому что ты хочешь получить. Я имею в виду такие параметры как:
vscale={4.0,4.0,4.0,1}, vpos = {400,400,400,1}, vrot = {0,0,0,1}; #define VIEW_DISTANCE 320 Например, если посмотреть на изначальные данные файлов tank1.plg и tower1.plg то они имеют разные значения координат построения, это значит при одинаковых условиях вывода этих фигур на экран, у них буду разные размеры, поэтому танк выглядит больше по размеру. Если к этому еще добавить масштаб, который ты применил к объектам, то выходит вообще, что танк растягивается по координате z на все окно программы. Масштаб ты меняешь в этой строчке кода vscale={4.0,4.0,4.0,1}. Танк растягивается не из-за того, что ты добавил в код строчку if (z==0) z=0.1; а из-того что-ты установил такой масштаб для танка. Теперь на счет падения программы. Код:
Код:
Как получается эта точка &obj.world_pos, если смотреть выше по коду данная точка берется с параметров которые ты определил выше, в частности vpos = {400,400,400,1}. Теперь посмотрим как формируется координаты объекта &obj.vlist_local[vertex]. Если смотреть выше, то данные координаты формируются путем умножения координат, которые загружаются из файла tank1.plg, на значения параметра масштаба, который ты определил в начале программы, в частности vscale={4.0,4.0,4.0,1}. То есть в этой строчке кода VECTOR4D_Add(&obj.vlist_local[vertex],&obj.world_pos,&obj.vlist_trans[vertex]); формируется координата z таким образом z = obj.vlist_local[vertex].z * vscale.z + vpos.z z = -100*4+400 = -400+400 = 0 в файле tank1.plg берется значение z=-100 умножается на масштаб vscale.z=4 и прибавляется vpos.z=400 получаем падение программы. И используй чаще отладчик Borland C++, он очень хорошо помогает в нахождение такого рода проблем. |
12.11.2018, 20:27 | #20 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Уменьшил масштаб vscale до 1.Танк стал выводится нормально.Правильно ли рисуется танк,так ли он должен выглядеть?Достигнута ли конечная цель.Пример работы программы в архиве в скриншоте.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C# Тестирование Блокнота. Проблема с загрузкой из файла .csv | StudentTestC# | Помощь студентам | 3 | 05.03.2015 12:30 |
Проблема с загрузкой!! | Plamer-007 | Компьютерное железо | 3 | 23.06.2010 14:52 |
Проблема с загрузкой ОС | Vali_T | Операционные системы общие вопросы | 18 | 07.04.2010 18:50 |
Проблема с загрузкой параметров из ini-файла | Nomad | Помощь студентам | 6 | 03.08.2009 16:04 |
Проблема с загрузкой XP. | hebu | Windows | 11 | 20.07.2009 14:33 |