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

Какие переменные используют при проектирование огромных объектов? - C++

Восстановить пароль Регистрация
 
HELL-FIRE
Заблокирован
31.08.2016, 11:40     Какие переменные используют при проектирование огромных объектов? #1
Планирую делать софт, в котором можно будет проектировать как мелкие детали механизмов, всякие винтики, болтики и пр, то есть где размеры в миллиметрах и их сотых частях, но в тоже время в этом же софте нужно будет проектировать и целые здания (сборки) и даже длинные трубопроводы, протяжённостью в километры. Всё это должно быть как бы на одном графическом ядре, то есть в одном и том же редакторе могут быть и винтики и трубопроводы. Для винтиков подошёл бы и float, но если в том же float-t обозначать киллометры в миллиметрах - будет косяк overflow. Неужели придётся длинную арифметику заюзать? А как тогда всё это дело рисовать, ведь во всяких OpenGL и DirectX все переменные во float-ах...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2016, 11:40     Какие переменные используют при проектирование огромных объектов?
Посмотрите здесь:

C++ Переменные передаваемые при вызове функции
Переменные передаваемые при вызове функции C++
C++ Как используют макросы?
C++ Переменные при использовании шаблонов. Оператор return
C++ Какие есть способы задания огромных массивов - более 2Gb?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
31.08.2016, 11:56     Какие переменные используют при проектирование огромных объектов? #2
Цитата Сообщение от HELL-FIRE Посмотреть сообщение
Для винтиков подошёл бы и float, но если в том же float-t обозначать киллометры в миллиметрах - будет косяк overflow.
Ты ничего не путаешь? Максимальное значение для типа float примерно 3.4E+38. Даже если километры выразить в микронах, то overflow все равно не произойдет. ( Ну, может, для расстояний космических масштабов..... но на этот случай у нас есть тип double. )
HELL-FIRE
Заблокирован
31.08.2016, 12:26  [ТС]     Какие переменные используют при проектирование огромных объектов? #3
Цитата Сообщение от CheshireCat Посмотреть сообщение
Максимальное значение для типа float примерно 3.4E+38.
У float-а разрядность в символов 8, не больше
Напиши
C++
1
2
3
4
5
float a = 100000000.000;
    a += 1.0;
    a += 100000000.0;
    a += 0.001;
    a += 0.100;
и посмотри в дебаггере что получится...
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 238
31.08.2016, 13:13     Какие переменные используют при проектирование огромных объектов? #4
340282327376181848531187106054144.000000 вот столько километров выраженных в милиметрах поместится в float.
Проверьте:
C++
1
2
3
4
#include <limits>
//////////////
    std::cout << std::fixed;
    cout << std::numeric_limits<float>::max() << endl;
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
31.08.2016, 13:44     Какие переменные используют при проектирование огромных объектов? #5
Цитата Сообщение от HELL-FIRE Посмотреть сообщение
и посмотри в дебаггере что получится...
Да в дебаггере-то получится все нормально, не беспокойся Но по-моему ты путаешь диапазон значений и точность представления числа float.

Если я проектирую трубопровод длиной пару тыщ километров, меня категорически не интересует расхождение концов этого трубопровода на пару миллиметров. Во-первых, сварщик все равно заварит стыки герметично (внезапно, да!), и во-вторых, ни один трубопрокатный завод не поставит тебе пару тыщ километров труб с миллиметровым допуском.
HELL-FIRE
Заблокирован
31.08.2016, 14:10  [ТС]     Какие переменные используют при проектирование огромных объектов? #6
Цитата Сообщение от DarkVortex Посмотреть сообщение
вот столько километров выраженных в милиметрах поместится в float.
Ну ты чего, у флота разрядность 7 цифр )))
Цитата Сообщение от CheshireCat Посмотреть сообщение
Да в дебаггере-то получится все нормально, не беспокойся
не нормально, сам проверь
Цитата Сообщение от CheshireCat Посмотреть сообщение
Но по-моему ты путаешь диапазон значений и точность представления числа float.
Я не путаю, я ж говорю, что разрядность float-а 7 циферек всего навсего.
Расшифруй эти определения.

Цитата Сообщение от CheshireCat Посмотреть сообщение
Если я проектирую трубопровод длиной пару тыщ километров, меня категорически не интересует расхождение концов этого трубопровода на пару миллиметров.
Ну... это может не интересовать производство, а в софте должно быть всё чётко.
Самое хреновое, что эту сцену нужно ещё и рендерить, в общем придётся делать длинную арифметику и подгружаться сцену блоками
Yandex
Объявления
31.08.2016, 14:10     Какие переменные используют при проектирование огромных объектов?
Ответ Создать тему
Опции темы

Текущее время: 23:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru