|
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 44
|
|
3D построение объектов27.04.2014, 15:18. Показов 3718. Ответов 11
Метки нет (Все метки)
Здравствуйте, подскажите каким образом множа построить параллелепипед в OpenGL. Так чтобы он был размещен вдоль прямой. То есть я задаю 2 точки и строится типа бруска в пространстве.
вот пример в 3D max или подскажите как координаты посчитать, для построения То есть зная жёлтые точки мне нужна найти красные.
0
|
|
| 27.04.2014, 15:18 | |
|
Ответы с готовыми решениями:
11
Построение геометрических объектов по данным из БД Построение описания класса, создание и уничтожение объектов этого класса Размещение объектов в пределах формы и отражение двух объектов при соприкосновении |
|
Заблокирован
|
|
| 27.04.2014, 15:30 | |
|
Никак. По этим точкам можно вычислить только расстояние между торцами. Для построения по двум точкам, нужно задавать угловые точки. И вообще почитайте книгу Краснова. Графика Open GL в проектах Delphi.
0
|
|
|
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 44
|
|
| 27.04.2014, 15:44 [ТС] | |
|
Да, я не пометил толщина бруска мне известна.
Причём тут книга Краснова там про это нет я читал. Добавлено через 6 минут Сама идея построения мне ясна, мне нужна формула для нахождения координат конца вектора, зная длину, координаты начала и углы от осей.
0
|
|
|
Заблокирован
|
|
| 27.04.2014, 23:49 | |
|
Ну дак в чём тогда проблема? В 3D графике существует такое понятие, как контейнер. Это локальная система координат. В Open GL именно всё так и организовано. И не забывайте что вам нужны треугольники. И мало того, они должны следовать в определённом порядке, и сохранять направление обхода своих точек. Вот этим и должна заняться ваша программа. Почитайте книги Амерала. Там это прекрасно изложено.
Ну а для начала построения, конечно же нужно найти ваши точки. Они в значениях мировых координат. Так в чём же дело? Это простейшая геометрия. Вы знаете размеры торца. Прекрасно. Делим ширину и высоту торца на 2. А потом... Ну предположим, что у вас не Оpen GL а обычная система координат. координаты точки A X=1 Y=0 Z=0 координаты точки B X=6 Y=0 Z=0 То есть брусок вытянут вдоль оси X Размеры торца 4x2 Тогда xx = 4 / 2 = 2 yy = 2 / 2 = 1 Вот теперь через матрицу сдвига вычисляем координаты точек торца. Но в вашем простейшем случае это так. прямоугольник abcd a X=1 Y=A-xx Z=A+yy b X=1 Y=A+xx Z=A+yy c X=1 Y=A+xx Z=A-yy d X=1 Y=A-xx Z=A-yy Добавлено через 13 минут Но если делать всё по правилам, то для начала нужно перевести ваш брусок из мировых координат в локальные. Для этого вычисляется центр отрезка между заданными точками. И они принимают координаты 0 0 0 Если взять координаты из примера, это будет так. 6-1/2 = 2.5 То есть А=-2.5 B=2,5 Применяем по формулам выше трансформацию пермещения исходных точек и получаем точки четырёхугольного полигона, анологично поступаем со вторым торцом В результате получаем массив точек Вообще, для отображения в OpenGl можно состряпать загрузочный файл. Он может быть текстовым, или сразу передать на отображение. Только сначала нужно ещё создать массив граней разбитый на треугольники. и карту нормалей. Добавлено через 1 час 3 минуты Да... вам наверное нужна эта формула. Это расстояние между точками в трёхмерном пространстве. То есть у вас есть эти точки. Вычисляете расстояние между ними, это длина бруска. Ну а далее как говорил раньше. Переводим в локальную систему координат. Получаем точки и на построение. Только если вам нужна ваша палка в таком же положении каком были точки, нужно будет ещё вычислить угол наклона по всем осям, и потом повернуть палку и перенести её в нужную позицию.
0
|
|
|
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 44
|
|
| 28.04.2014, 21:52 [ТС] | |
|
Если брусок расположен в доль какой либо оси его построение меня не затруднит. Трудность в высчитывание координат тарцов бруска повёрнутого во всех 3 плоскостях.
Добавлено через 3 минуты Может кто подскажет может мне проще рисовать цилиндр с 4 гранями, его можно строить задав 2 точки и ширину? Не помню как строить цилиндр.
0
|
|
|
Заблокирован
|
|
| 29.04.2014, 01:10 | |
|
PavelG2010,
Кошмар... Вы видимо не въехали. Ещё раз и читайте внимательно что я пишу. Существует понятие "локальная система координат или контейнер." В нём фигура как раз и располагается вдоль оси. А потом этот контейнер переносится в нужное место и поворачивается. Я же вам объяснял. Вам нужно из ваших координат перенести брусок в такой вот контейнер. Для этого нужно узнать расстояние между точками в 3D пространстве. Формулу я дал. Это будет длина бруска. Торцы известны. Брусок лежит в локальной системе вдоль оси. Вот и вычисляйте все ваши точки и грани. А когда они вычислены, введите их в массив фигуры. Рисование будет происходить невидимо, пока не произойдут все трансформации. Из двух точек что у вас есть. кроме расстояния. вычислите смещение и повороты. И когда будете рисовать, после отрисовки задайте смещение и поворот. и когда брусок окажется на экране, он будет в таком же положении, как и точки. Если у вас три таких бруска, их не надо рисовать три раза. А надо клонировать один в разные позиции. неужели это так трудно понять? Исходная фигура хранится в локальной системе. А при отрисовке переносится в мировую систему. Вот вам и нужно... По двум точкам вычислить длину и положение в пространстве. Знаю длину, конструируете брусок в локальной системе. и потом эту локальную систему трансформируете. Опять непонятно? цилиндр с 4 гранями? это как? Цилиндр вообще-то круглый. почитайте книги Амерала. там все формулы построения объёмных фигур. А круг строится из треугольников. Задаёте не ширину а радиус или диаметр. Двумя точками задаёте высоту и положение в пространстве. Вычисляете расстояние, это и есть высота. По высоте строятся боковые грани. А зная диаметр, можно вычислить все треугольники круга. Опять же. Цилиндр строится в локальной системе, а потом переносится в мировую.
0
|
|
|
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 44
|
|
| 03.05.2014, 14:24 [ТС] | |
|
ДА. понял я вас и в первый раз. Этот способ не затруднит от рисовку брусков будет 5000-10000 штук.
Можно ссылку на "Амерала" не могу найти. Цилиндр бывает даже с 3 гранями.))
0
|
|
|
Заблокирован
|
|
| 05.05.2014, 20:43 | |
|
PavelG2010,
Ну ты загнул. Цилиндр это цилиндр. А это назывется призма. У Амерала нет про OpenGL. Напиши в поиске "Принципы программирования в машинной графике" Добавлено через 2 минуты http://gendocs.ru/v28442/?cc=3&view=djvu
0
|
|
|
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 44
|
|
| 06.05.2014, 08:30 [ТС] | |
|
Это цилиндр, там написано Сylinder (перевод цилиндр) просто у него граней для построения стоит 3 поэтому он и выглядит как призма.
0
|
|
|
Заблокирован
|
|
| 06.05.2014, 14:58 | |
|
PavelG2010,
на заборе тоже написано.... А там дрова лежат. Обидно, да? Добавлено через 2 минуты Как с вами тяжело... Куб цилиндр сфера. Они являются исходными фигурами для построения других. Но это не значит, что получаемя фигура остаётся тем, чем была. Ну вот если вы к велосипеду прицепите мотор, что будет? Велосипед?
0
|
|
|
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 44
|
|
| 07.05.2014, 07:48 [ТС] | |
|
Для построения параллелепипеда нужна знать высоту длину и ширину.
А для построения цилиндра нужна высота и радиус. Если строить 4 сторонний цилиндр он буде выгладить как параллелепипед но являться цилиндром.
0
|
|
|
36 / 30 / 13
Регистрация: 08.12.2012
Сообщений: 810
|
|
| 04.06.2015, 12:01 | |
|
не понятно что означают слова "контейнер" и "локальная система координат"
также что значат цифры например в процедуре glOrtho(0, 2, 0, 2, -1 ,1); то что это left, right, bottom, top, near, far это везде написано как эти нули единицы и двойти в окне распределяются , вот вопрос
0
|
|
| 04.06.2015, 12:01 | |
|
Помогаю со студенческими работами здесь
12
В программе реализовать возможность записи объектов в файл и чтения объектов из файла
Удалить один из объектов и увеличить другой при соприкосновении объектов. Массив объектов базового класса, позволяющий работать с набором объектов — чтение, вывод В общем как заменить в подборе объектов и так чтобы не сохранял в массив объектов а в лист? с# Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|