Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 15.08.2009, 17:38   #1
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Найти объект массива по координатам

ептыть, уже со вчерашней ночи голову ломаю
хотя звучит вроде не очень сложно но что-то не выходит ничего.

создаётся меш в виде многополигональной плоскости двумя циклами по x и по y (второй внутри первого), при этом при добавлении вертекса он также добавляется в одномерный массив.
имея координаты точки (xz) в локальном пространстве этой плоскости надо узнать номер ближайшего вертекса и найти его в массиве. что делать?
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 15.08.2009, 18:52   #2
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Найти объект массива по координатам

UP!!
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 15.08.2009, 19:06   #3
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Найти объект массива по координатам

Плоскость всегда в одном повороте (смотрит вверх)?
Размер плоскости бывает разный?

Перелистываешь весь массив, притом в нём нужно чтобы было записано 2 инфы, 1 - координата по x\z и сама линка на вершину.
Далее при перелистывании, если точка ближе к указанным координатам - ставить её как кандидата. Но если следующуя ещё ближе, то ставить её кандидатом, и так пока не кончиться массив.
В массиве должно быть записаны локальные координаты точек.
Массив для каждой плоскости свой.
Примерно такой: Vert[i,3]
i - номер в массиве - максимум будет колличество точек.
i,0 - X координата.
i,1 - Z координата.
i,2 - ссылка на точку.
(Offline)
 
Ответить с цитированием
Старый 15.08.2009, 19:10   #4
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Найти объект массива по координатам

Перелистываешь весь массив, притом в нём нужно чтобы было записано 2 инфы, 1 - координата по x\z и сама линка на вершину.
Далее при перелистывании, если точка ближе к указанным координатам - ставить её как кандидата. Но если следующуя ещё ближе, то ставить её кандидатом, и так пока не кончиться массив.
ну это слишком медленно будет) т.к. всегда можно округлить число, думаю есть и более прямой способ. мне это нужно взамен xLinePick т.к. ОЧЕНЬ медленно выходит, а там как раз по логике и перебираются все треугольники.
надо как-то перейти от локальных xz в прямой номер в массиве)
as i know одномерный массив может симулировать двумерный в стиле array[x*WIDTH+y]

Плоскость всегда в одном повороте (смотрит вверх)?
да

Размер плоскости бывает разный?
нет
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 15.08.2009, 19:25   #5
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Найти объект массива по координатам

Можно прибегнуть тогда к более сложному варрианту, например индекс указывать 2D, и он будет приблезителен к координате. Таким образом начинать не всё перебирать, а только начиная с индекса приближенного к нужной координате, с маленьким разбросом например в 5 влево, и 5 вправо, таким образом меньше переборов. Но тут нужно продумать всю системку, т.к. вершин может быть очень много, и они тупо не влезут в массив, тогда придётся брать масштаб, например индексы будут в 3 раза больше чем приближенная округлённая позиция.
Вообще как понимаю ты делаешь Секторы?
По сути если размер сектора не огромный, то перебор другой сотни вершин - не сложная затея..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (15.08.2009)
Старый 15.08.2009, 19:40   #6
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Найти объект массива по координатам

Вообще как понимаю ты делаешь Секторы?
да нет, просто водичку с волнами)

а что ты имеешь ввиду под секторами? я так обычно называю выпуклые части уровня с уникальными свойствами, мы их юзаем с помощью BSP но хз при чём тут данная задача)

уже в принципе решил её, т.к. синусовое процедурное получение волн, так я просто подставляю в свою формулу нужные x и z и всё) однако насчёт поиска конкретного вертекса тоже может пригодится так что темка ещё актуальна.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 15.08.2009, 19:52   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Найти объект массива по координатам

Секторы, это когда пространство поделено на одного размера участки, каждый участок имеет x/z индекс в массиве. А списки всех объектов и того что нужно секторизировать, не глобальны, а хранятся в каждом участке. Таким образом если нада перебирать только близкие, или включая прилегающие сектора, ты избегаешь от перебора всего!

А насчёт синуса, дык, если у тебя большие трианглы, тоесть они не смогут во всей мере выделить детализацию, то у тебя привязка не к плоскости, а к формуле. Тоесть если точка находится над серединой триангла, то с подставлением под синус, она не попадёт на триангл, а будет выше или ниже его.
Ну если тебе не сильно важна гипер точность..
(Offline)
 
Ответить с цитированием
Старый 15.08.2009, 19:59   #8
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Найти объект массива по координатам

http://www.gamedev.ru/code/articles/?id=4196
Вот статейка может пригодиться.
Я у себя давныыым давно в mLandscape делал, получение индексов в зависимости от того над каким квадом находится текущая точка.
Тоесть должна быть закономерность в индексах, и аналитически-математическая формула для вычесления индексов, зная лишь индекс квада.
Если интерестно покапаться, то вот дема, и ссорс разархивь в ту же папку:
http://moka.ucoz.ru/load/0-0-0-3-20
http://moka.ucoz.ru/load/0-0-0-4-20

Правдо код старый, и на б3д говняный немного, но вроди кое-как приведённый в порядок..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (16.08.2009)
Старый 15.08.2009, 20:28   #9
FrankH
Разработчик
 
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений
(для 122 пользователей)
Ответ: Найти объект массива по координатам

Если длина ребер полигонов по х,у постоянна а центр находится в нулевом вертексе:
L=кол-вовертексов по У
номер вертекса=((Х*L)/длина ребраХ)+У/длина ребраУ
На бумаге все работает.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (16.08.2009)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка массива. Abiron Алгоритмика 5 20.06.2009 01:02
Функция по координатам... JeSss 3D-программирование 50 29.01.2008 21:04
Как по координатам двух точек найти ф-ю прямой? ABTOMAT Математика 3 11.12.2007 15:06
Ограничение по координатам Valet 2D-программирование 8 27.08.2007 23:45
Вопрос насчет массива и GUI Manfred 2D-программирование 10 22.12.2006 01:41


Часовой пояс GMT +4, время: 03:00.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com