|
0 / 0 / 0
Регистрация: 24.10.2019
Сообщений: 8
|
|
Трехмерная графика30.10.2019, 23:37. Показов 13881. Ответов 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
|
||
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
||||
| 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
|
||||||||||||||||
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
|||||
| 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 | |
|
Трёхмерная графика Трехмерная графика Трехмерная графика трёхмерная графика Трехмерная графика surf из двухмерной матрицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|