|
0 / 0 / 0
Регистрация: 24.10.2019
Сообщений: 8
|
|
Трехмерная графика30.10.2019, 23:37. Показов 13085. Ответов 47
Метки нет (Все метки)
Как понятно из названия хочется с помощью языков этих в ручную написать 3 мерное пространство, думал делать через 3 мерный массив, но подумав получше понял что идея плохая, кто подскажет как с нуля сделать 3 мерное пространство ?
0
|
|
| 30.10.2019, 23:37 | |
|
Ответы с готовыми решениями:
47
Трехмерная точка Трехмерная матрица через вложенные вектора трехмерная графика |
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
||
| 06.11.2019, 15:26 | ||
|
0
|
||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,910
|
||||
| 06.11.2019, 16:07 | ||||
|
У нас матрицы вводили на первом курсе, хотя было не особо очевидно где они используются на практике, так что тут не спорю с вашим подходом: сначала ручные преобразования координат без "черной матричной магии".
0
|
||||
| 06.11.2019, 17:11 | ||||||||||||||||
Масштабирование (задание размера) К данному моменту в программе любой заданный через координаты трёхмерный объект можно параллельным переносом перемещать в любую точку трёхмерного пространства. Но у нас кубик одного размера - это куб со стороной 1 метр. Было бы хорошо иметь возможность задать свой собственный размер. При чём, иногда нужно сделать изменение размера кубика только по определённой оси, чтобы сделать из него параллелепипед. Для этого в математике есть специальное преобразование координат объекта, которое называется масштабирование. К сожалению, на русском нет статьи в Википедии, есть только на английском: Scaling (geometry). Это преобразование объекта чуть сложнее, чем трансляция (то есть параллельный перенос). Условно говоря, трансляция - это 2 + 2 = 4, а масштабирование - это 2 * 2 = 4. При масштабировании нужно по каждой оси задать коэффициенты, на которые нужно умножить (x, y, z) каждой вершины. Я обозначил эти коэффициенты через: sx, sy, sz
0
|
||||||||||||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,910
|
|||||
| 06.11.2019, 17:55 | |||||
|
0
|
|||||
| 06.11.2019, 18:59 | |||
|
Я нашёл в этой книге хорошие картинки для демонстрации элементарных преобразований. Эти формулы применяются поочерёдно для каждой вершины из массива вершин: Трансляция: Масштабирование:
1
|
|||
|
4 / 3 / 1
Регистрация: 08.08.2017
Сообщений: 6
|
|
| 06.11.2019, 19:08 | |
|
Если хочешь написать 3D библиотеку по типу OpenGL, могу посоветовать вот эту статью:
https://habr.com/ru/post/248153/
0
|
|
| 06.11.2019, 21:44 | |||||||||||||||||
|
Поворот вокруг вокруг осей на заданный угол Трансляцию и масштабирование было реализовано в коде выше, а теперь третий и заключительный вид преобразования - поворот вокруг оси. Я выбрал ось Z. Вы можете в качестве упражнения реализовать повороты вокруг оси X и Y. Я взял рисунки из этой книги. Нам нужно научиться преобразовывать в программе исходные координаты трёхмерной фигуры (в нашем случае кубика), так, чтобы в результате были возвращены новые координаты повёрнутой фигуры на заданный угол вокруг оси Z. Координата начальной точки Нам нужно получить координату точки Мы видим косинус двух аргументов Подставим эти формулы в Чтобы в уравнениях выше избавиться от Мы получили уравнения, которые преобразуют координаты путём поворота на заданный угол. Реализация в программе:
Весь код со всеми тремя видами преобразований
0
|
|||||||||||||||||
| 07.11.2019, 00:16 | |
|
У меня описка выше в уравнении:
Должно быть так: Добавлено через 2 часа 10 минут Переход к матричной форме записи полученных уравнений для трёх видов преобразований: трансляция, масштабирование и поворот Выше было показано, как получить уравнения для трёх видов преобразований: Масштабирование: Поворот вокруг оси Z: Трансляция (параллельный перенос): Запишем эти уравнения в общем виде: Вы можете сравнить общий вид уравнений с уравнениями выше. Например, в уравнении трансляции для Если вы знакомы с умножением матрицы на вектор, то вы увидите общем виде уравнений, что это матрица коэффициентов умножается на вектор: (x, y, z). Но так как в уравнении присутствуют коэффициенты (d, h, l), то значит, что матрица умножается на вектор (x, y, z, 1). Нам нужно дополнить матриц коэффициентов ещё одним рядом, чтобы сделать её размеров 4x4. Получаем: Было добавлено уравнение: из которого следует, что m = 0, n = 0, o = 0, p = 1 Если сопоставить общую матричную запись уравнений у полученными уравнениями преобразований и подставить найденные из сопоставления коэффициенты, то получаем матричные записи уравнений преобразований: Матричная запись уравнений масштабирования: Матричная запись уравнений параллельного переноса: Матричная запись уравнений поворота вокруг оси Z:
0
|
|
| 07.11.2019, 00:16 | |
|
Помогаю со студенческими работами здесь
48
Трёхмерная графика Трехмерная графика Трехмерная графика трёхмерная графика Трехмерная графика surf из двухмерной матрицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|