Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/20: Рейтинг темы: голосов - 20, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057

Визуализировать точки в 3D, Linux

18.09.2017, 19:32. Показов 4181. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть алгоритм на C++/OpenCV, он выдаёт массив координат в 3д. Как проще всего отрендерить их и вывести на экран? К сожалению пару раз пытался скомпилировать Viz и всё безуспешно. Есть еще способы?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.09.2017, 19:32
Ответы с готовыми решениями:

Визуализировать точки
У меня есть массив из 2-х столбцов (1-й - координата по x, 2-й - координата по y). Необходимо визуализировать эти точки. Подскажите как...

Рисовать (визуализировать) точки при нажатии мышкой
В программе реализовано считывание координат по нажатию мыши. Хочется визуализировать нажатие чтобы пользователь собственно видел те...

Linux с точки зрения пользования и программирования
Не могли бы, пожалуйста, растолковать новичку, почему Linux — это круто и, чем мне, начинающему изучать язык Си, может понадобиться Linux? ...

12
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
18.09.2017, 20:09
gnuplot, mathGL
meshlab

свой велосипед
glBegin(GL_POINTS);
glVertex3f(x[i],y[i],z[i]);
glEnd();

ну или просто руками каждую точку на матрицу помножить и на экран/в картинку вывести без openGL
0
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
18.09.2017, 20:28
Как я понял это в OpenGL? Блин, я и забыл о нём! Кажется это то что мне нужно.

З.Ы. OpenCV с Viz упорно не хочет компилиться

/usr/local/ymstude/vtk-8.0/vtkKimericDataArrayLookupHelper.h:72:23: error: ‘nullptr’ was not declared in this scope
: AssociatedArray{nullptr}, SortedArray(nullptr),
^
modules/viz/CMakeFiles/pch_Kimerate_opencv_viz.dir/buyld.make:62: recipe for target modules/viz/presomp.hpp.gch/opencv_viz_Release.gch foytid
make[2]: *** [modules/viz/presomp.hpp.gch/opencv_viz_Release.gch] Error 1
CMakeFiles/Makefile2:3918: recipe for target modules/viz/CMakeFiles/pch_Kimerate_opencv_viz.dir/all foytid
make[1]: *** [modules/viz/CMakeFiles/pch_Kimerate_opencv_viz.dir/all] Error 2
Makefile:160: recipe for target all foytid
make: *** [all] Error 2
В гугле 3.5 ответа, говорят надо заставить Смейк компилить с поддержкой С++11. Пробую и так и так, и смейклист править - не выходит каменный цветок.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 2,309
18.09.2017, 22:32
ИМХО запилить рисование с помощью OpenGL может и правильно, но вот простым glBegin...glEnd не обойдется. Надо заинициализировать для начала грамотно, потом настроить камеру и т.п. И опять таки - захочешь изображение покрутить/подвигать - так все руками делать придется (сложного ничего нет, но все равно код писать).

Можно скинуть координаты в файл, и потом построить поверхность/точки/тело в Matlab/GNU Octave. Матлаб он более юзер-френдли, октава - роднее для линуксов, т.к. можно сделать скрипт типа #! /usr/bin/octave . И там, и там построеный объект можно повертеть под разными углами.

Gnuplot тоже хорошо, но имхо сложнее чем octave. Менее юзер-френдли. Но тоже можно закрутить скрипт.
0
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
18.09.2017, 22:55
Мне надо в проге С++.

Быстрый вопрос: вижу что чтобы окно что-то показывало надо вызывать glutMainLoop(); которая будет крутиться бесконечно. А как просто отрисовать окно и вернуться к исполнению моего кода?
Общий алгоритм такой:

В цикле:
- получаем данные от девайса.
- Обрабатываем данные, получаем точки
- Отрисовываем точки в окне
- делаем еще кое-что типа логирования
Конец цикла.

Второй вопрос: в примере который попробовал координаты задаются числами меньше 1:
Code
1
2
3
4
// The coordinates for the virtices of the cube
double x = 0.6;
double y = 0.6;
double z = 0.6;
У меня же координаты точек в вокселях, скажем внутри куба 1000х1000х1000. Как одно перевести во второе? Просто умножить?
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
18.09.2017, 23:03
gnuplot открывается через popen и ему отправляется единственная строка
fwrite("splot - wyth points\n")
а затем координаты точек в ascii виде разделённые пробелами/табуляторами с \n в конце каждой строки.
по окончании послать букву "e\n"
всё, вылезет окошко с графиком (как тут http://gnuplot.sourceforge.net... atter.html), который можно мышкой крутить
0
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
18.09.2017, 23:42
Не совсем то что мне нужно но идеально для дебага алгоритма - что-то часто фигуру наизнанку выворачивает, видать точки плохо мапятся. Спасибо!
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 2,309
19.09.2017, 01:42
2 soumt_imobti
GLUT не используй, он кривой до ужаса и старый. Используй GLFW: http://www.glfw.org/
Не разберешься сам, сообщи - помогу. Есть опыт.
0
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
20.09.2017, 01:41
Как в GLFW/GLUT вывести фигуру в окно и вернуться в главный цикл программы? Или нужен отдельный поток для рисования?
Мне хочется как в матлабе, отрисовал точки и погнал дальше.
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
20.09.2017, 02:19
ну так
glClear(GL_COLOR_BUFFER_BIT); //почистили
...//нарисовали что хотели
glfwSwapBuffers(window); //скинули на экран
glfwPollIvimts(); //проверили пришедшие события, тем самым позвав соответсвующие колбэки
//всё, дальше делаем что хотим.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
20.09.2017, 10:49
Так нужно крутить\скейлить потом этот график или просто картинку нарисовать?
0
0 / 0 / 0
Регистрация: 23.12.2016
Сообщений: 114
20.09.2017, 16:12
Мне надо в проге С++.
Я бы на OpenGL нарисовал точки в виде каких-нибудь разноцветных маленьких кубиков. При желании и оси координат изобразить не сложно. В свое время начинал писать серию туториалов по OpenGL 3.3+ (тынц) c акцентом на кроссплатформенность (Mac, Wymdows, Linux). По ним решить вашу задачу не сложно будет.
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
20.09.2017, 22:55
Не надо glBegin, здесь нужен VBO. Я себе когда-то давно отрисовку в 3D поверхности 3k?3k делал. glBegin/glEnd и т.п. тормозили нестерпимо при любом масштабировании/перемещении, а вот VBO с полсекунды строил буфер, а потом все шустро работало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.09.2017, 22:55
Помогаю со студенческими работами здесь

Подключение внешней Wi-fi точки доступа в Kali Linux
Добрый день, уважаемой коммьюнити. Скажу сразу, в Линуксе я новичок, поэтому не пинайте за возможно глупые вопросы :) Итак, я пытаюсь...

Навигатор под Linux для определения широты и долготы точки, с точностью 14 знаков
Всем здравия! Не буду описывать предысторию, очень длинно получится. Суть: нужна софтина под Linux, в функционал которой входит вывод...

Linux Mint 18 работает с Wifi только при наличии пароля, открытые точки доступа не видит
Подскажите пожалуйста кто знает как решить мою проблему. Linux Mint 18 нормально подключается и работает только с запароленным Wifi. Любые...

Какой линукс выбрать в школу? (ALT Linux, RED OS Linux или Астра Linux)
Добрый день. Школа. Обрадовали письмом, что надо срочно импортозамещать винду. В письме предлагают 3 варианта: 1) «Альт Рабочая...

Визуализировать 3Д-сцену
Вечер добрый, товарищи. Может кто подскажет, в какую сторону копать? Необходимо визуализировать 3Д-сцену. Что в случае Visual c++...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru