|
0 / 0 / 0
Регистрация: 24.10.2019
Сообщений: 8
|
|
Трехмерная графика30.10.2019, 23:37. Показов 13181. Ответов 47
Метки нет (Все метки)
Как понятно из названия хочется с помощью языков этих в ручную написать 3 мерное пространство, думал делать через 3 мерный массив, но подумав получше понял что идея плохая, кто подскажет как с нуля сделать 3 мерное пространство ?
0
|
|
| 30.10.2019, 23:37 | |
|
Ответы с готовыми решениями:
47
Трехмерная точка Трехмерная матрица через вложенные вектора трехмерная графика |
|
фрилансер
6455 / 5656 / 1129
Регистрация: 11.10.2019
Сообщений: 15,065
|
|
| 30.10.2019, 23:42 | |
|
MaksimK1, а что ты понимаешь под трёхмерным пространством ?
0
|
|
|
0 / 0 / 0
Регистрация: 24.10.2019
Сообщений: 8
|
|
| 30.10.2019, 23:47 [ТС] | |
|
3 оси координат: х ,у ,z ; на 2 мерной плоскости 3 мерное пространство делается через перспективу. А по большому счету сказать мне больше нечего =(
0
|
|
|
фрилансер
6455 / 5656 / 1129
Регистрация: 11.10.2019
Сообщений: 15,065
|
|
| 30.10.2019, 23:47 | |
|
_Ivana,
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|||
| 31.10.2019, 07:39 | |||
|
Хотите выводить трехмерную графику с ручным расчетом перемножения матриц преобразования? Или воксельная графика, где каждый элемент массива - единица ("пиксель") объема?
0
|
|||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||||||
| 31.10.2019, 18:46 | ||||||
Сообщение было отмечено MaksimK1 как решение
Решение
От, накалякал
![]()
ээх, какой же ерундой я иногда занимаюсь...
1
|
||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
||||||||||||||
| 01.11.2019, 09:59 | ||||||||||||||
Для меня было неожиданностью, что константы M_PI_2 и M_PI_4 также являются стандартными. Соответственно, на их переопределение компилятор тоже ругается. Вот только сам ввод-вывод у вас медленный: программа не успевает обрабатывать данные по мере поступления. Да и стены частенько друг через друга просвечивают. Плюс текстура у "горизонтальных" и "вертикальных" стен одинаковая, что мешает ориентироваться. . Ну и вместо устаревшей conio.h и т.п. лучше использовать ncurses. Если будет время перепишу ваш код под нее.
0
|
||||||||||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|||||||
| 01.11.2019, 11:02 | |||||||
2
|
|||||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|||||||||||||||||
| 01.11.2019, 11:12 | |||||||||||||||||
|
Очевидно только что у меня IDE чудаковатая и с прибабахами. math.h допилить пришлось для удобства -
, соотв-но M_PI и прочее там закрыты без определнного _USE_MATH_DEFINES_ или как-то так, я то ли забыл, то ли опечатался, короче с первого раза не завелось и я психанул. А точность тут избыточная. Тут по всей in_frame() чудеса, начиная от Ну и вот этот писюн ниже огонь вообще.
но тут нет "горизонтальных"; да и вертикальных "стен" как таковых тоже нет. Я бы назвал это набором столбиков,( в конкретном примере упорядоченных в три линии ) ![]() ![]() Таки, резюмируя, на какую-то скорость работы или плавность я не рассчитывал, мне было интересно в принципе поиграться с перспективой в консоли и побыстрее получить "картинку". Оно и работает-то через пень-колоду, не претендуя на красоту кода, но всё же работает)
1
|
|||||||||||||||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 01.11.2019, 11:56 | ||
|
Код у меня, конечно, сразу не завёлся - нужно PDcurses собирать - вечером попробую.
1
|
||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
||||||||
| 01.11.2019, 12:02 | ||||||||
|
Если действительно хотите разобраться в трехмерке, да и прочей графике на низком уровне, настоятельно рекомендую именно такие примитивные средства вывода и расчет всего подряд на процессоре. Вот когда вся эта магия перестанет быть магией - отдать ее на видеокарту, а самому заниматься подсовыванием ей исходных примитивов. . В общем, я бы советовал еще помедитировать над своим кодом, над моим кодом, над алгоритмом (меня немного смущает расчет дальности и высоты, хотя в тонкости вашей реализации не вникал). ASCII-арт и псевдографика это не плохо и не примитивно. На самом деле это самостоятельное направление искусства. Ручная реализация трехмерки - тоже. Уж во всяком случае это интересный и полезный опыт. Добавлено через 1 минуту
1
|
||||||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||||||
| 01.11.2019, 13:50 | ||||||
|
Мерцает чуток - да, но это же, по сути, интерактивное слайд-шоу, а не что-то в реальном времени, я изначально вполне понимал как это будет выглядеть. Мог бы я лучше? Мог, почему нет, но на это уйдёт куда больше времени, а я сейчас не могу позволить себе дни напролёт бить баклуши, да и тема стала бы не актуальной. Достиг ли я своей цели? Достиг и поделился с миром. Это всего лишь маленький, примитивный пример. Денег за него не просят. Можно ли это улучшить? Безусловно. Интересно ли это? Да. Буду ли лично я сейчас этим вплотную заниматься? Нет. У меня сейчас другие приоритеты. Забавы ради иногда - конечно. Тут же полировать и вылизывать можно до бесконечности.
Вечером посмотрю ещё.
1
|
||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|||
| 01.11.2019, 15:30 | |||
|
Я всегда считал, что от неконструктивной похвалы куда меньше пользы, чем от конструктивной критики. Именно поэтому я указал на некоторые места, которые можно было бы улучшить (ncurses <- conio , move(0,0) <- cls , именованные константы и т.п.) с конкретным примером. Уверен, вы сами знаете, что представление стены в виде ряда столбцов не самый оптимальные вариант, так же как использование тригонометрии для определения их высоты. И соответственно в следующей версии примените другой алгоритм. Для такого 2.5D как в Думе изначально использовался метод трассировки лучей. То есть из камеры пускается луч в направлении пикселя экрана (расчет идет только по одной горизонтальной линии) и ищутся его пересечения со всеми стенами. Из них выбирается ближайшее и на основании расстояния до пересечения рисуется вертикальный столбец нужной высоты. Примерно так сделано и у вас, но там рассчитывается пересечение луча и отрезка, а у вас - луча и точки. . Другое дело, что такое 2.5D имело смысл для тех времен, когда на расчет "честного" 3D не хватало ресурсов. Сейчас даже для псевдографики имеет смысл считать матрицы. Возможно, какие-то другие статические библиотеки не подключены? Посмотрите в makefile вдруг повезет.
2
|
|||
| 01.11.2019, 18:30 | ||
|
2
|
||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||||
| 01.11.2019, 18:31 | ||||
|
У меня иногда бывают проблемы с выражением своих мыслей, видимо и чужие я понимаю с подобной точностью ![]() По поводу завода кода: поставил PDcurses 3.9 - ругалось на set_escdelay(0); - вообще не видит getmouse(&event) - у меня только без параметров вариант //кстати, зачем мышь? У меня она ничего не делала даже в приложенном ~exe set_escdelay(0) убрал - поехало. ![]() Собирался делать между ними горизонтальные линии по концам ( у меня давно уже в одной из тетрадок решение попиксельного отображения линий из точки в точку набросано было (решал какую-то задачку из интернета), но нереализовано - пришлось бы очень кстати ), но потом я вспомнил что стены непрозрачны, оценил время и опустил руки. Но вы меня заразили. Последние часы я обдумывал стены и стены с разной высотой. Обдумывал 2д-аппликацию, но это, кмк, дорого. В итоге, исходя из малого разрешения, пришёл, как ни странно, к примерно этому Если б с одинаковой высотой - было бы куда проще, но я захотел разную) (см. изображение) Заразили. Буду делать стены
1
|
||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 01.11.2019, 18:45 | ||
|
Опять всё забыл в итоге.
1
|
||
|
222 / 57 / 18
Регистрация: 13.03.2017
Сообщений: 295
|
|
| 01.11.2019, 19:08 | |
|
MaksimK1,
Этот жуткий С++ изучаю из-за острой необходимости. Совсем недавно писал на PascalABC.net там неплохая 3D графика: и тени есть и камера поворачивается и все, что надо. Я даже разработал 3D модель стендовой стрельбы по тарелочкам. Тарелочки летят , будь здоров! Рекомендую.
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|||||
| 01.11.2019, 20:08 | |||||
На самом деле осталась с прошлых проектов, хотя, конечно, мышка в консольной программе это то еще извращение.В вашем варианте никто ж не запрещает отрисовывать не одну вертикаль, а все. Можно хоть z-буфер реализовать. Но повторяю, лучше все же осваивать матричные преобразования, растеризацию треугольника и прочие "честные" куски трехмерки. Для консольного разрешения производительность процессора хватит за глаза. Можете глянуть программу bb для вдохновения. Мне хватало контроллера с 72 МГц тактовой для расчета экранчика 320х240 с частотой около 10 Гц, причем без особо жесткой оптимизации.
1
|
|||||
| 01.11.2019, 20:08 | |
|
Помогаю со студенческими работами здесь
20
Трёхмерная графика Трехмерная графика Трехмерная графика трёхмерная графика Трехмерная графика surf из двухмерной матрицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|