Технический форум по робототехнике.
executer » 25 июн 2010, 10:05
Недолго думая не придумал как малой кровью можно отображать массива точек (трехмерный массив в котором ячейка либо =0 - точки нету, либо =1 - точка есть) в окошке, зная относительные координаты камеры и массива. Сначала думал трассировать каждый луч влетающий в камеру - но лучи не будут проходить точно в пространстве через ячейки массива - нужно как то определять далеко луч прошел от ячейки или близко.
А перебирать каждую ячейку и проверять видно ее или нет - сильно долго.
Пока писал подумал - были в геометрии какие то формулы для проверки проходит ли прямая через прямоугольник (сторону ячейки) в пространстве - может можно будет как то рассчитать где луч через массив проходит.
=DeaD= » 25 июн 2010, 10:13
Возьми алгоритм брезенхема для рисования линии и адаптируй для поиска всех пикселей пересекаемых воображаемой линией
executer » 25 июн 2010, 11:43
Блин, точно! Камеру же тоже можно рассматривать в координатах массива! Благодарю!
Добавлено спустя 15 минут 51 секунду:НО, я много раз рисовал в школе линии плотно расходящиеся веером из одной точки - в итоге получался не полностью залитый сектор а сектор с кучей дырок - т.е. в моем случае много ячеек могут не отобразится
т.к. через них не пройдет ни один трассирующий луч из камеры
=DeaD= » 25 июн 2010, 11:50
Ключевое слово в моём сообщении - адаптируй. Т.е. определись, какие окружающие ячейки должна захватить твоя линия, для этого с каждой линией веди 8 соседних, если ячейка ближе к одной из них или совсем далеко от твоей линии, то отрисуешь её там, иначе отрисуй здесь.
Ku6opr » 25 июн 2010, 12:32
Можно воспользоваться стандартными возможностями языка программирования, который позволяет работать с 3D графикой. Например, GDI+, DirectX, XNA под С# имеют возможность отрисовать массив точет и вращать камерой вокруг них.
executer » 25 июн 2010, 14:01
да, полистал форумы - по-ходу можно видеокарточке передать массив а она уже пущай малюет на 1000 ФПС
. И не надо парится где там луч проходит а где не проходит.
У меня приложение в вижуал Си++ - что легче всего будет туда интегрировать для быстрой черновой 3Д визуализации?
=DeaD= » 25 июн 2010, 14:03
try OpenGL?
idmasystems » 08 фев 2016, 23:34
один из моих проектов - стериокамера - решал такую задачу - если интересно - пиши. ну или вспомни школьный курс геометрии и вперёд программить)) мне школьной программы хватило (можно обойтись без матриц)