PDA

Просмотр полной версии : И все таки она круглая!



Страницы : [1] 2

Peter
25.05.2009, 18:13
начало тут: http://www.civfanatics.ru/forum/index.php?...9342&st=40# (http://www.civfanatics.ru/forum/index.php?showtopic=9342&st=40#)

а равнины зачем делать моделями? можно ведь текстурить имеющуюся сферу? я вообще в 3Д графике не силен, поправь если ерунду скажу. как сделаны равнины в циве?

впрочем если сферу частично текстурить нельзя - равнины тоже можно сделать моделями типа "матов" которые друг на друга настилаются. при этом они будут слегка выпуклыми и различаться по толщине, чтобы создать эффект перехода из одного типа равнины в дугой. из пустыни в степь к примеру: ___/------- вот как то так

зы: С твоей идеей с интерполяцией - мог бы ты пояснить более конкретно что имеешь ввиду?

BuDDaH
25.05.2009, 18:22
А нафига вам футбольный мяч?

Peter
25.05.2009, 18:33
для реализьму :secret:

BuDDaH
25.05.2009, 18:46
<div class='quotetop'>Цитата(Peter * 25.5.2009, 18:33) 289053</div>

для реализьму :secret:
[/b]
Да? разве мир в шестиогольниках - это реально? Вы - пчелы?

Где-нибудь видел стратегические глобусы?

Peter
25.05.2009, 18:58
<div class='quotetop'>Цитата(BuDDaH * 25.5.2009, 18:46) 289056</div>

<div class='quotetop'>Цитата(Peter * 25.5.2009, 18:33) 289053

для реализьму :secret:
[/b]
Да? разве мир в шестиогольниках - это реально? Вы - пчелы?

Где-нибудь видел стратегические глобусы?
[/b][/quote]
может быть ты видал стратегический цилиндр?
реально - это когда можно через северный полюс ракету к примеру запустить. или проплыть - если там льда нет. а вдруг там вообще какая нибудь гиперборея.

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

Санек21
25.05.2009, 19:32
Эх, оказываеться вы о земле, а я то думал... :whistle:

Peter
25.05.2009, 20:41
может хватит флудить (

General
25.05.2009, 21:36
Чтобы не потерять - трёхмерные координаты вершин икосаэдра
<div class='quotetop'>Цитата</div>
#define X .525731112119133606
#define Z .850650808352039932

static GLfloat vdata[12][3] = {
{-X, 0.0, Z}, {X, 0.0, Z}, {-X, 0.0, -Z}, {X, 0.0, -Z},
{0.0, Z, X}, {0.0, Z, -X}, {0.0, -Z, X}, {0.0, -Z, -X},
{Z, X, 0.0}, {-Z, X, 0.0}, {Z, -X, 0.0}, {-Z, -X, 0.0}
};

static GLint tindices[20][3] = {
{0,4,1}, {0,9,4}, {9,5,4}, {4,5,8}, {4,8,1},
{8,10,1}, {8,3,10}, {5,3,8}, {5,2,3}, {2,7,3},
{7,10,3}, {7,6,10}, {7,11,6}, {11,0,6}, {0,1,6},
{6,1,10}, {9,0,11}, {9,11,2}, {9,2,5}, {7,2,11} };

for (i = 0; i < 20; i++) {
/* color information here */
glBegin(GL_TRIANGLE);
glVertex3fv(&vdata[tindices[i][0]][0]);
glVertex3fv(&vdata[tindices[i][1]][0]);
glVertex3fv(&vdata[tindices[i][2]][0]);
glEnd();
}[/b]

BuDDaH
25.05.2009, 21:40
Математики блин, глаза раскройте! Весь мир в клеточку и квадратный, даже экран у компа квадратный, аватары квадратные, а вы шарик делать хотите

White Hawk
25.05.2009, 21:49
<div class='quotetop'>Цитата</div>
Весь мир в клеточку и квадратный[/b]
Святая правда!
Вот у меня, например, с утра обычно голова квадратная, а глаза в сильно вытянутый прямоугольник (щолочку) :yes:

Peter
25.05.2009, 21:55
<div class='quotetop'>Цитата(General * 25.5.2009, 21:36) 289078</div>

Чтобы не потерять - трёхмерные координаты вершин икосаэдра
<div class='quotetop'>Цитата
#define X .525731112119133606
#define Z .850650808352039932

static GLfloat vdata[12][3] = {
{-X, 0.0, Z}, {X, 0.0, Z}, {-X, 0.0, -Z}, {X, 0.0, -Z},
{0.0, Z, X}, {0.0, Z, -X}, {0.0, -Z, X}, {0.0, -Z, -X},
{Z, X, 0.0}, {-Z, X, 0.0}, {Z, -X, 0.0}, {-Z, -X, 0.0}
};

static GLint tindices[20][3] = {
{0,4,1}, {0,9,4}, {9,5,4}, {4,5,8}, {4,8,1},
{8,10,1}, {8,3,10}, {5,3,8}, {5,2,3}, {2,7,3},
{7,10,3}, {7,6,10}, {7,11,6}, {11,0,6}, {0,1,6},
{6,1,10}, {9,0,11}, {9,11,2}, {9,2,5}, {7,2,11} };

for (i = 0; i < 20; i++) {
/* color information here */
glBegin(GL_TRIANGLE);
glVertex3fv(&vdata[tindices[i][0]][0]);
glVertex3fv(&vdata[tindices[i][1]][0]);
glVertex3fv(&vdata[tindices[i][2]][0]);
glEnd();
}[/b]
[/b][/quote]

спасибо!
остается разбить грани и спроецировать вершины на поверхность сферы. завтра с утра займусь.

superregistr
26.05.2009, 17:21
<div class='quotetop'>Цитата(BuDDaH * 25.5.2009, 21:40) 289079</div>

Математики блин, глаза раскройте! Весь мир в клеточку и квадратный, даже экран у компа квадратный, аватары квадратные, а вы шарик делать хотите
[/b]
Вам, гуманитариям, нас не понять :no:
Скоро, если получится, представлю свою готовую модель круглой Земли!!! (очень простую)

superregistr
28.05.2009, 00:40
<div class='quotetop'>Цитата(akots * 27.5.2009, 23:09) 289432</div>

А вот как раз отображение мира на поверхности сферы было бы крайне интересно! :eat:
[/b]
Пока все что-то спорят о том, чего еще нет и что еще не начиналось и т.д., я полдня потратил на то, чтобы построить Землю-шар. Короче, из всех рассмотренных вариантов в 3D, ничего не получилось. Фигурки, покрывающие сферу либо разного размера, либо нарушается соприкосновение точек. Вообще поверхность сферы --- это крайне сложная поверхность, потому что представляет неевклидово пространство. :umnik: Поэтому решил не городить огород и предлагаю тоже проекцию Земли на окружности, разбитую на квадратики. (Идею с проекцией впервые выдвинул Generel). Раз уж игра все равно будет в псевдо3D, то вот мой вариант: [attachmentid=4896]. Лучше и проще все равно ничего не найдется. И еще --- это только макет, на настоящей Земле квадратиков будет гораздо-гораздо больше. Смотрим, обсуждаем...

И еще: хорош уже блин спорить, обвинять друг друга (всех касается!!!), тыкать носом друг друга, кто умнее и т.д. полтемы уже нафлудили! Идите по ссылке наверху в ППЦ, там и отвечайте друг другу сколько хотите. У меня кстати свое мнение: чтобы не было движение в слепую (как в е-цив), нужно чтобы было видно куда будет двигаться отряд противника в следующий ход, чтобы можно было его перехватить.

General
28.05.2009, 01:11
Но в таком случае один квадратик в приполярных областях занимает намного больше реальной площади, чем один квадратик у экватора.

Посмотрим, может у Peter&#39;а получиться с интерполяциями икосаэдра.

Кстати, как это неэвклидово пространство? Если ты имеешь в виду геометрию Римана, так она прочвляется только если проводить линии на самой сфере, а сфера сама по себе - вполне себе поверхность в эвклидовом пространстве

Peter
28.05.2009, 10:29
<div class='quotetop'>Цитата(superregistr * 28.5.2009, 0:32) 289436</div>

Пока все что-то спорят о том, чего еще нет и что еще не начиналось и т.д., я полдня потратил на то, чтобы построить Землю-шар. Короче, из всех рассмотренных вариантов в 3D, ничего не получилось. Фигурки, покрывающие сферу либо разного размера, либо нарушается соприкосновение точек.
[/b]
я предлагал уже решение - сделать их перекрывающими. еще - видимо, ты брал сферу слишком мелкого радиуса (я так понял, что ты строил 3Д модель).

<div class='quotetop'>Цитата(superregistr * 28.5.2009, 0:32) 289436</div>

проекцию Земли на окружности, разбитую на вадратики. (Идею с проекцией впервые выдвинул Generel). Раз уж игра все равно будет в псевдо3D, то вот мой вариант: [attachmentid=4895].
[/b]
какая же это проекция земли? это ерунда какая-то :)
проекция сферы (частный случай эллипсоида) на плоскость делается так: http://www.cultinfo.ru/fulltext/1/001/008/059/563.htm.

я не занимался раньше 3Д графикой, но сейчас на работе возможно придется с этим столкнуться (после отпуска - в июне я ухожу в отпуск). если я буду этим заниматься, я буду делать трехмерную модель сферы с объектами на ней. если не буду - рассмотрю вариант с проекциями сферы на плоскость. сейчас у меня уже практически готов алгоритм построения графа поверхности сферы на основе рекурсивного разбиения вписанного икосаэдра. остается доработать некоторые детали и запрограммировать.

General
28.05.2009, 10:34
<div class='quotetop'>Цитата(Peter * 28.5.2009, 8:15) 289467</div>

сейчас у меня уже практически готов алгоритм построения графа поверхности сферы на основе рекурсивного разбиения вписанного икосаэдра. остается доработать некоторые детали и запрограммировать.
[/b]
Где выбирал для граней точки, откуда будут вырастать пирамидки? В точке пересечения медиан или биссектрис?

Peter
28.05.2009, 10:49
<div class='quotetop'>Цитата(General * 28.5.2009, 10:34) 289475</div>

<div class='quotetop'>Цитата(Peter * 28.5.2009, 8:15) 289467

сейчас у меня уже практически готов алгоритм построения графа поверхности сферы на основе рекурсивного разбиения вписанного икосаэдра. остается доработать некоторые детали и запрограммировать.
[/b]
Где выбирал для граней точки, откуда будут вырастать пирамидки? В точке пересечения медиан или биссектрис?
[/b][/quote]
просто делю пополам все отрезки (треугольники то правильные):
http://i283.photobucket.com/albums/kk312/mogendovid/triangle.gif

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

Peter
28.05.2009, 11:04
зы: все, разобрался с углом

superregistr
28.05.2009, 11:38
<div class='quotetop'>Цитата(General * 28.5.2009, 1:11) 289443</div>

Кстати, как это неэвклидово пространство? Если ты имеешь в виду геометрию Римана, так она прочвляется только если проводить линии на самой сфере, а сфера сама по себе - вполне себе поверхность в эвклидовом пространстве
[/b]
как бы изогнутое пространство, не выполняется формула по вычисленю расстояния между двумя точками --- неевклидово пространство.


<div class='quotetop'>Цитата(General * 28.5.2009, 1:11) 289443</div>

Кстати, как это неэвклидово пространство? Если ты имеешь в виду геометрию Римана, так она прочвляется только если проводить линии на самой сфере, а сфера сама по себе - вполне себе поверхность в эвклидовом пространстве
[/b]
Да, я имею в виду линии на самой сфере.

superregistr
03.06.2009, 16:51
Вот две программы про сферы
http://ifolder.ru/12449748
и еще длл-файлы
http://ifolder.ru/12449667

Все кинуть в одну папку. Крутить фигуры мышкой. Суть программ --- нельзя построить сферу из равносторонних треугольников, чтобы у них совпадали вершины. E1a иллюстрирует, что для того, чтобы совпадали вершины, треугольники не будут равносторонними. Будут все больше и больше сокращаться по основанию. E1b иллюстрирует квазиравносторонние треугольники, которые не совпадают в вершинах. Их можно рассматривать как узлы, про которые говорил Петер. Как видно, они все распределены не на одинаковом расстоянии (имеется в виду соседние ряды). Причина -- поверхность сферы как пространство -- неевклидово пространство (т.е. то, что вы нарисуете и листе бумаге и перенесете на сферу не совпадет). Идея, что поверхности будут утопать друг в друге представляется мне трудно реализуемой. Думаю дальше...

White Hawk
03.06.2009, 21:13
<div class='quotetop'>Цитата</div>
Вообще поверхность сферы --- это крайне сложная поверхность, потому что представляет неевклидово пространство.[/b]
:wallbash:
Вы, камрад, не с Гончих Псов? В смысле что с стереометрией (10-11 класс)?
Сфера (и даже геоид, то есть сильно искалеченная сфера), звиняйте меня, это - нормальный и крайне обычный объект ТРАДИЦИОННОЙ Евклидовой геометрии. Или Вы будете утверждать, что старик Евклид всё видел плоским и квадратно-перпендикулярным?!

ЗЫ
Если Вы про пересечение парллельных ПРЯМЫХ, то "поверхность сферы" совсем не при делах! Прямая по ОПРЕДЕЛЕНИЮ не являтся чем-то, что относится к сфере. Разве что касается её или пронзает.. :umnik:

<div class='quotetop'>Цитата</div>
Суть программ --- нельзя построить сферу из равносторонних треугольников, чтобы у них совпадали вершины.[/b]
Камрад, пердон муа, а зачем?

Во-первых, наша Ёрса это совсем не идеальная сфера?!
Во-вторых, что за вероисповедание толкает нас/вас на использование РАВНОСТОРОННИХ треугольников? Скажу умный мысл - "не реализация для модели, а модель для реализации". Если для решения вашей задачи удобнее считать Землю плоской и стоящей на семи крокодильчиках, и ПРИ ЭТОМ задача однозначно решается правильно и применимо на практике, то нет смысла в камланиии "ах Земля то шарообразная, меня ж РАН :worthy: проклянёт, что я при перекопке поля под картошку не учёл кривизну земной поверхности! :wallbash:". Принимаем землю трюугольгой и считаем как хотим!

Посмотрите на Микрософт с её "Райс оф Нейшон" - не Цыва, зато реалтайм :)

BuDDaH
03.06.2009, 21:41
Правильно говоришь, поэтому делаем плоскую клеточку. Мы живем в квадратном мире, а не сферическом. Суперрегистр, у тебя даже аватара плоская и квадратная.

White Hawk
03.06.2009, 22:21
http://www.civfanatics.ru/forum/uploads/av-134.jpg
Потомучта никогда дитя порока не погубит непорочное созданье!

ЗЫ
Давно я Борю не слушал [пошёл править плейлист винампа]

ЗЫЫ
[Поправил - кайфует]
Глухонемааая любовь. ГлухонемАЯ!!!

ЗЗЗЫ
А я не обознался, это не МакКейн ли в молодости на аватаре?
[но в любом случае - кайфовать продолжает]

superregistr
05.06.2009, 20:05
<div class='quotetop'>Цитата(White Hawk * 3.6.2009, 21:13) 290187</div>

Сфера (и даже геоид, то есть сильно искалеченная сфера), звиняйте меня, это - нормальный и крайне обычный объект ТРАДИЦИОННОЙ Евклидовой геометрии. Или Вы будете утверждать, что старик Евклид всё видел плоским и квадратно-перпендикулярным?! [/b]

http://ru.wikipedia.org/wiki/%D0%9D%D0%B5%...%80%D0%B8%D1%8F (http://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B5%D0%B2%D0%BA%D0%BB%D0%B8%D0%B4%D0%BE%D0%B2%D0%B0_%D0%B3%D0%B5%D0%BE%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%8F)

http://ru.wikipedia.org/wiki/%D0%A1%D1%84%...%80%D0%B8%D1%8F (http://ru.wikipedia.org/wiki/%D0%A1%D1%84%D0%B5%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%B3%D0%B5%D0%BE%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%8F)

White Hawk
06.06.2009, 00:20
Я тоже могу написать ЛЮБУЮ статью на Вике :yucky:

Сфера - нормальный объект Евклидовой геометрии. Так нас при проклятом тоталитаризме учили. Если прогрессивная наука шагнула далеко вперёд, то я умываю руки.

superregistr
06.06.2009, 00:26
Если нифига не знаешь, так и скажи, что нифига не знаешь.

akots
06.06.2009, 01:00
<div class='quotetop'>Цитата(White Hawk * 5.6.2009, 15:20) 290611</div>

Сфера - нормальный объект Евклидовой геометрии. Так нас при проклятом тоталитаризме учили. Если прогрессивная наука шагнула далеко вперёд, то я умываю руки.
[/b]

Всё утыкается в систему отсчета! И праткическую применимость. Вот почему самолет летает из Москвы в Нью Йорк через Гренландию? Вроде как очевидно, но точно сосчитать не всегда просто, если смотреть со стороны, так как шарик еще и крутится ведь. Хотя конечно тоже можно.

Мне кажется тут вопрос будет в том, даст ли "сферический подход" выигрыш в быстродействии при максимальном правдоподобии.

White Hawk
06.06.2009, 01:02
Да, я нифига не знаю!

Да здравствует альтернативная одарённость! :punk:

akots
06.06.2009, 01:34
<div class='quotetop'>Цитата(White Hawk * 5.6.2009, 16:02) 290619</div>

Да здравствует альтернативная одарённость! :punk:
[/b]

Где-то это я уже слышал ... :secret:

White Hawk
06.06.2009, 01:49
Может у Лекс-Кравецкого?

Vigo
06.06.2009, 01:51
<div class='quotetop'>Цитата(White Hawk * 6.6.2009, 1:02) 290619</div>

Да, я нифига не знаю!
Да здравствует альтернативная одарённость! :punk:
[/b]

Да здравствует одаренная альтернативность! :punk:

п.с. Господи прости :worthy:

superregistr
06.06.2009, 02:03
<div class='quotetop'>Цитата(akots * 6.6.2009, 1:00) 290617</div>

Мне кажется тут вопрос будет в том, даст ли "сферический подход" выигрыш в быстродействии при максимальном правдоподобии.
[/b]
Производительность компьютеров растет из года в год и пора бы уже сдеть Землю, похожую на Землю.

Vigo
06.06.2009, 02:21
239

akots
06.06.2009, 03:21
<div class='quotetop'>Цитата(White Hawk * 5.6.2009, 16:49) 290629</div>

Может у Лекс-Кравецкого?
[/b]

Ну, подумай сам, как я мог бы туда попасть, - даже если бы вдруг и собрался на работе (дома я такими вещами не занимаюсь), то меня бы проски фильтр бы не выпустил. :harhar:

sweeper
06.06.2009, 04:14
<div class='quotetop'>Цитата(superregistr * 6.6.2009, 4:03) 290631</div>

Производительность компьютеров растет из года в год и пора бы уже сдеть Землю, похожую на Землю.
[/b]Я не знаю, что такое "сдеть", предполагаю из контекста и своего понимания грамматики новорусского языка, что это глагол такой. Сди, сдю. Разумеется, для стратегической игры шарообразность земли многое значит. Монеты, например, в мире, построенном на поверхности цилиндра, будут прямоугольными. А на поверхности тора - будут иметь дырку-отверстие. Как верно подметил классик, известный многим по фоллауту, разруха - она в головах. Вот и Кудрин предлагает монеты из палладия чеканить, и именно благодаря этому Рубль станет мировой валютой. А производительность труда в укреплении национальной валюты ведь ничего не значит, как бы добавляет третье лицо в государстве.
Согласен?

White Hawk
06.06.2009, 04:15
<div class='quotetop'>Цитата</div>
то меня бы проски фильтр бы не выпустил.[/b]
Фигасе! В ЖоЖо фильтр не пущает? Злое у тебя начальство :)

Хотя, у меня на работе щаз вообще инету нет :)

akots
06.06.2009, 05:41
<div class='quotetop'>Цитата(White Hawk * 5.6.2009, 19:15) 290636</div>

Фигасе! В ЖоЖо фильтр не пущает? Злое у тебя начальство :)
[/b]

Не пускает, зато пускает в другие интересные места забесплатно, - у всего есть свои плюсы и минусы. Я такой не один, тут под сто тысяч страждущих по Лексу-как-его-там, но не имеющих возможности. :boo:

Vigo
06.06.2009, 05:59
<div class='quotetop'>Цитата(sweeper * 6.6.2009, 4:14) 290635</div>

Вот и Кудрин предлагает монеты из палладия чеканить, и именно благодаря этому Рубль станет мировой валютой. А производительность труда в укреплении национальной валюты ведь ничего не значит, как бы добавляет третье лицо в государстве.
Согласен?
[/b]
:nono: Нет! Вам, москалям хорошо, опять на десяток тонн денег нас бедных украинцив нагреете (это если по 1 гривне печатать... :secret: лучше крупными берите - кг. 998 с копейками выйдет, на вагонах сэкономите)... Палладий... хорошо что у нас в стране кроме двух пришибленых ничё нету... уже... ну почти.. в смысле "нету" тока еще дальше чем "нету" ... и вообще, чего вы ко мне пристали, вон Будда филолог, вот пусть и рассказывает как там "дальше чем "нет" называется, а если ниче не придумает пусть Суперрегистра позовет, тот философ, авось вдвоем справятся, а я спать пойду, вот.

superregistr
07.06.2009, 01:32
<div class='quotetop'>Цитата(Vigo * 6.6.2009, 2:21) 290632</div>

239
[/b]
http://www.civfanatics.ru/forum/index.php?...pid=290721& (http://www.civfanatics.ru/forum/index.php?showtopic=9403&st=40&gopid=290721&)

<div class='quotetop'>Цитата(sweeper * 6.6.2009, 4:14) 290635</div>

Согласен?
[/b]
С тобой или с Кудриным?

<div class='quotetop'>Цитата(White Hawk * 6.6.2009, 1:02) 290619</div>

Да, я нифига не знаю!

Да здравствует альтернативная одарённость! :punk:
[/b]
.... Я так и понял.

Peter
07.06.2009, 14:10
вернулся вчера из москвы, доделал сферическую разметку. в общем то нужно еще алгоритм оптимизировать но сейчас этим заниматься смысла нет.

superregistr
07.06.2009, 15:41
С приездом. Как то был у вас в Самаре, набережная великолепная, да и пиво свежее разливное тоже нормалек ;) Скинь алгоритм, тоже построю, пообсуждаем.

Peter
07.06.2009, 18:53
<div class='quotetop'>Цитата(superregistr * 7.6.2009, 15:41) 290778</div>

С приездом. Как то был у вас в Самаре, набережная великолепная, да и пиво свежее разливное тоже нормалек ;) Скинь алгоритм, тоже построю, пообсуждаем.
[/b]
да, Самара неплохой город :)

идея алгоритма в том что на каждом шаге перебираются все рёбра икосаэдра, разбиваются, и новые ребра добавляются в список. этот список используется на следующем шаге. список узлов - один, и он пополняется (а не создается новый как в случае с ребрами). в текущей версии алгоритма происходит полный перебор ребер и выполняется проверка, образуют ли они треугольник. естественно производительность перебора не велика и за разумное время (~3 минуты) он позволяет сделать 3 разбиения (на 4 разбиения уйдет что-то около 2х часов). при реализации алгоритм нужно будет модифицировать чтобы он проверял только соседние ребра. ничего сложного но на это требуется время которое на данном этапе лучше потратить на другие вещи.

программа на C# в прикрепленном файле.

General
08.06.2009, 19:32
Peter, я чала думал протыкать каждую грань радиусом, но потом понял, что то, как ты предлагаешь разбивать 1 треугольник сразу на 4 - лучше всего реализуемый алгоритм. Но не знаю, почему у тебя на 4 разбиения ушло 4 часа. Я стал идти от граней: список граней и он пополняется разбитыми. Чтобы из начальных 20 граней приёти к 1300000 потребовалось около минуты.
файл (http://general.civfanatics.ru/soft/Globe/Triangle-sphere.zip)

Peter
08.06.2009, 21:26
Просто у меня реализуется полный перебор и время разбиения пропорционально числу граней в кубе. соответственно если преобразовать этот алгоритм, все это будет происходить гораздо быстрее, за минуты или даже секунды. просто после того как я удостоверился что разбиение работает - мне не хотелось больше этим заниматься :)

мог бы показать исходники?
дельфи 7 у меня установлена

ps: твоя программа с 15 мульенами треугольников справилась секунд за 20, если верить ей :) притом большую часть времени очевидно съедает отрисовка

General
08.06.2009, 22:03
Сейчас, прокомментирую код и выложу

Готово! (http://general.civfanatics.ru/soft/Globe/icosaeder.zip)

Peter
09.06.2009, 20:54
<div class='quotetop'>Цитата(General * 8.6.2009, 22:03) 290997</div>

Сейчас, прокомментирую код и выложу

Готово! (http://general.civfanatics.ru/soft/Globe/icosaeder.zip)
[/b]
ну тут у тебя просто рисование происходит, а надо же граф получить - список узлов и ребер с ними свящанных.. :whistle:

General
10.06.2009, 11:04
Да-да, этой прогой я проиллюстрировал разбиение сферы на треугольники.
Над графом думаю...
Как думаешь - вершинами его лучше сделать то, что сейчас выглядит как треугольники (тогда из каждой вершины графа можно будет попасть в 3 других) или как точки (тогда из кадлой вершины можно будет попасть в 6 (иногда в 5) других)?

White Hawk
10.06.2009, 20:33
Ну Вы, блин, даёте! (в смысле мне бы ваши проблемы (то есть - чтоб я так жил!))

Гость
10.06.2009, 20:59
<div class='quotetop'>Цитата</div>
мне бы ваши проблемы[/b]
ты в курсе, что некоторым за ЭТО ещё и деньги платят?

White Hawk
10.06.2009, 21:21
Генералу? Он навроде авиатор... :whistle:

А деньги сейчас ловчее дворникам и лотошникам плотють... КризисЪ великий и ужастный :worthy:

Шутка злая (грешно смеяться над больными людьми). Не купишь у меня 50 виртуальных тысяч за 40 реальных? Этот полтинник получишь обязательно, но ПОТОООООМ, как сделка? 25% прибыль ;)

ЗЫ
Путина и Медведева я если хвалил, но только за дело. Порядок в стране был ТОЛЬКО при дядюшке Джо. Лучше посадить (а местами расстрелять) 10 миллионов, чем 110 миллионов будут жить в нищете.

sweeper
10.06.2009, 21:52
<div class='quotetop'>Цитата(White Hawk * 10.6.2009, 23:21) 291191</div>

Лучше посадить (а местами расстрелять) 10 миллионов, чем 110 миллионов будут жить в нищете.
[/b]- Чем лучше?
- Чем сто десять.

Знаешь что, пусть живут.

Гость
10.06.2009, 22:09
<div class='quotetop'>Цитата(White Hawk * 10.6.2009, 21:21) 291191</div>
Порядок в стране был ТОЛЬКО при дядюшке Джо. Лучше посадить (а местами расстрелять) 10 миллионов, чем 110 миллионов будут жить в нищете.
[/b]
ПОДПИСЬ ПОПРАВИТЬ
в третий раз говорю

может, тогда что-то и в голове поправится

White Hawk
10.06.2009, 22:23
<div class='quotetop'>Цитата</div>
ПОДПИСЬ ПОПРАВИТЬ
в третий раз говорю
может, тогда что-то и в голове поправится[/b]
Однако достал... Лучше-б материально помог ;)

<div class='quotetop'>Цитата</div>
Знаешь что, пусть живут.[/b]
Дык я не против. Я своему начальству, наоборот, желаю ВЕЧНОЙ жизни!

Peter
10.06.2009, 23:43
<div class='quotetop'>Цитата(General * 10.6.2009, 11:04) 291149</div>

Да-да, этой прогой я проиллюстрировал разбиение сферы на треугольники.
Над графом думаю...
Как думаешь - вершинами его лучше сделать то, что сейчас выглядит как треугольники (тогда из каждой вершины графа можно будет попасть в 3 других) или как точки (тогда из кадлой вершины можно будет попасть в 6 (иногда в 5) других)?
[/b]
я думаю лучше как точки. клетки-треугольники это будет как-то... не очень (просто представь :))
а вершины с доступом в 6 соседних вершин - это по сути гексы, с которыми каждый сталкивался в играх компьютерных.

граф я практически добил. я иду по ребрам и для каждого ребра нахожу две пары прилегающих ребер и соединяю их середины. алгоритм готов, там остались только какие то мелкие баги.

superregistr
11.06.2009, 14:27
Не успел еще разобраться, дел по горло было. Не въехал: треугольники равносторонние?

Еще вот о чем подумал. Применить такой вот метод итераций: на первой итерации строим футбольный мяч, состоящий из шестиугольников и пятиугольников.

http://upload.wikimedia.org/wikipedia/commons/7/7d/Trunc-icosa.jpg

На второй итерации каждый шестиугольник и пятиугольник разбиваем на новый слой, состоящий из пятиугольника посередине и шестиугольников по бокам.

Так проводим 4-5 итерации и хорошая сфера готова. Отдельно разрабатываем ландшафт (горы, холмы, плоскогорья, равнины, внутренние водоемы) и шлепаем на эти "клеточки".

Еще у кого-нибудь есть ссылка или материал, как радиус сферы связан со стороной шести-пятиугольника??? Попробую этот метод заботать.

ЗЫ Гость в своем репертуаре (хотя не знаю какая подпись была у White Hawk&#39;a (наверно, неприличная))

вот еще полезная ссылка http://www.mathforum.ru/forum/read/1/14848/

superregistr
13.06.2009, 12:17
Теперь понял, треугольники равнобедренные, но с каждой итерацией они становятся все более и более узкие.

На счет футбольного мяча (он есть усеченный икосаэдр) дальше его итерировать не получится :(

http://www.obretenie.info/txt/stahov/harmoni1.files//image003.gif

White Hawk
13.06.2009, 23:06
<div class='quotetop'>Цитата</div>
ЗЫ Гость в своем репертуаре (хотя не знаю какая подпись была у White Hawk&#39;a (наверно, неприличная))[/b]
Как ты мог так подумать?!
Я матом разговариваю редко, а ругаюсь ещё реже.

Просто Гость не любит самураев
<div class='quotetop'>Цитата(Дайдодзи Юдзан "Начальные основы воинских искусств")</div>

В делах повседневных помнить о смерти и хранить это слово в сердце.
[/b]
Ну и:
<div class='quotetop'>Цитата(Ямамото Цунэтомо "Сокрытое в листве")</div>

"Бусидо - Путь воина - означает смерть. Когда для выбора имеется два пути, выбирай тот, который ведёт к смерти. Не рассуждай! Направь мысль на путь, который ты предпочёл, и иди!

Каждое утро думай о том, как надо умирать. Каждый вечер освежай свой ум мыслями о смерти. И пусть так будет всегда. Воспитывай свой разум. Когда твоя мысль постоянно будет вращаться около смерти, твой жизненный путь будет прям и прост. Твоя воля выполнит свой долг, твой щит превратится в стальной щит."[/b]

Гость
14.06.2009, 09:24
White Hawk, идеология сообщества - "Светлый позитив" :bayan:

======================================================
сохранено для протокола:
<div class='quotetop'>Цитата(White Hawk * 13.6.2009, 23:06) 291610</div>

<div class='quotetop'>Цитата
ЗЫ Гость в своем репертуаре (хотя не знаю какая подпись была у White Hawk&#39;a (наверно, неприличная))[/b]
Как ты мог так подумать?!
Я матом разговариваю редко, а ругаюсь ещё реже.

Просто Гость не любит самураев
<div class='quotetop'>Цитата(Дайдодзи Юдзан "Начальные основы воинских искусств")</div>

В делах повседневных помнить о смерти и хранить это слово в сердце.
[/b]
Ну и:
<div class='quotetop'>Цитата(Ямамото Цунэтомо "Сокрытое в листве")</div>

"Бусидо - Путь воина - означает смерть. Когда для выбора имеется два пути, выбирай тот, который ведёт к смерти. Не рассуждай! Направь мысль на путь, который ты предпочёл, и иди!

Каждое утро думай о том, как надо умирать. Каждый вечер освежай свой ум мыслями о смерти. И пусть так будет всегда. Воспитывай свой разум. Когда твоя мысль постоянно будет вращаться около смерти, твой жизненный путь будет прям и прост. Твоя воля выполнит свой долг, твой щит превратится в стальной щит."[/b]
[/b][/quote]

Гость
14.06.2009, 09:49
вот подпись White Hawk&#39;а, версия от 3 июня 2009:
[attachmentid=4931]

White Hawk
14.06.2009, 13:32
Да в курсе я про позитив. :wallbash:

Да и для прОтокола сохраняй не сохраняй... Толку то. В Гаагу предоставите? Как свидетельство мизантропии и вреда для прогрессивного либерального человечества?

Да, чуть не забыл: сакральное слово "ГЛОБАЛИЗАЦЫЯ" :blabla:

PS
<div class='quotetop'>Цитата(OT4E * 29.5.2009, 17:26) 289615</div>

<...>
Самурай
strength8 movement1
+50% против рукопашных
2 первых удара
стартует с Дрилом(еще половина первого удара)
требует железо(для обычного мейса сойдет бронза)

Описание/Комментарий:
Первые удары - страшная сила, если нет иммунитета. Если у самурая по силе хоть какое-то преимущество есть, в атаке города там или просто, то % на победу сразу будет за 80%. Если же силы меньше, то наоборот едва ли шанс на победу опустится ниже 30%. При прочих равных первые удары уменьшают получаемый урон и увеличивают наносимый. Эффективен против слонов, арбалетов, длиннолуков, но фактически устаревает перед рыцарями, впрочем, если удается заставить рыцарей сидеть в городе, то прокачки на атаку города сделают свое дело. Практически не чувствует разницы между рыцарем и катафрактом засчет первых ударов.
<...>
[/b]

PPS
Эта, насчёт подписи.... Санки за то, что сфоткал. Только я её всё-равно сохранил в текст-файлу. Если что - мог бы и спросить, я б для прОтокола бы выслал.

Собственно в топик.
Насчёт разбиений на тайлы-многоугольники...

Вспомнил я про такой артефакт, как зеркальный шар (http://www.google.com/search?client=opera&rls=ru&q=%D0%B7%D0%B5%D1%80%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9+%D1%88%D0%B0%D1%80&sourceid=opera&ie=utf-8&oe=utf-8)
Этот вариант менее академичен и математичен, зато уже разаработан умными людьми...

superregistr
14.06.2009, 21:57
Для разбирательств идите по ссылке http://www.civfanatics.ru/forum/index.php?...pid=291670& (http://www.civfanatics.ru/forum/index.php?showtopic=9399&st=180&gopid=291670&) :harhar: , а ссорить-мусорить здесь кончайте.

Вот это чудо
http://gimg.dt00.net/goods/1826/182685/3470845big.jpg

superregistr
20.06.2009, 15:58
Хотя на игру не пойдет, фигурка получилась забавной

General
20.06.2009, 16:04
mingwm10.dll требуется

superregistr
20.06.2009, 16:10
<div class='quotetop'>Цитата</div>

и еще длл-файлы
http://ifolder.ru/12449667

Все кинуть в одну папку. Крутить фигуры мышкой. [/b]

superregistr
20.06.2009, 16:40
Дополнительные клавиши: пробел -- устанавливает все значения по умолчанию и еще "->" и "<-" для вращения вокруг z-оси.

Peter
11.07.2009, 18:33
готов алгоритм создания графа на сфере.
скачать текст программы можно тут:
http://www.civfanatics.ru/forum/index.php?...342&st=160# (http://www.civfanatics.ru/forum/index.php?showtopic=9342&st=160#)

superregistr
14.07.2009, 09:40
<div class='quotetop'>Цитата</div>
я не усекал икосаэдр а разбивал его грани N раз. 5 разбиений дает 10 тысяч с лишним узлов, это эквивалентно карте 100х100, 6 - 40 тысяч. расстояния между узлами примерно равные.
что значит "я за узлы" и "построить узлы на плоской карте"?[/b]
Тогда там не должно быть правильных шести и пятиугольников. Я как понимаю, получаются равнобедренные треугольники.

Про прямоугольную карту. Для узлов без разницы на сфере они или на прямоугольной карте. Поэтому лучше сначала сделать прямоугольную карту с узлами, разрабатывать и моледировать на ней. А потом уже все перенести нас сферу.

Peter
14.07.2009, 09:48
<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 14.7.2009, 8:40) 295250</div>

<div class='quotetop'>Цитата
я не усекал икосаэдр а разбивал его грани N раз. 5 разбиений дает 10 тысяч с лишним узлов, это эквивалентно карте 100х100, 6 - 40 тысяч. расстояния между узлами примерно равные.
что значит "я за узлы" и "построить узлы на плоской карте"?[/b]
Тогда там не должно быть правильных шести и пятиугольников. Я как понимаю, получаются равнобедренные треугольники.
[/b][/quote]
получаются узлы с 6 или 5 исходящими под равными углами дугами соответственно пространство вокруг узла ограничивается 6- или 5-угольником

<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 14.7.2009, 8:40) 295250</div>

Про прямоугольную карту. Для узлов без разницы на сфере они или на прямоугольной карте. Поэтому лучше сначала сделать прямоугольную карту с узлами, разрабатывать и моледировать на ней. А потом уже все перенести нас сферу.
[/b]
согласен

superregistr
14.07.2009, 09:53
<div class='quotetop'>Цитата(Peter * 14.7.2009, 9:48) 295252</div>

получаются узлы с 6 или 5 исходящими под равными углами дугами соответственно пространство вокруг узла ограничивается 6- или 5-угольником
[/b]
Гут, это хорошо :) Просто там нестрогие правильные фигуры, но почти правильные?

<div class='quotetop'>Цитата</div>
согласен [/b]
Да здравствует консенсус :bayan:

Peter
14.07.2009, 11:33
<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 14.7.2009, 8:53) 295254</div>

Гут, это хорошо :) Просто там нестрогие правильные фигуры, но почти правильные?
[/b]

Именно так.
Объекты будут привязываться к узлам сетки, и располагаться (визуально) в границах фигур. Граница каждой "клетки" проходит по серединам ребер, исходящих из ее центра.
То есть задано например, что в точке 40в.ш., 75з.д. у нас лес. при выводе картинки на экран - рандомно расставляем модели деревьев в пределах рассчитанных границ клетки.

superregistr
16.07.2009, 22:11
Если кому интересно, то разукрасил ландшафт по высоте: http://www.civfanatics.ru/forum/index.php?...ost&id=5012 (http://www.civfanatics.ru/forum/index.php?act=Attach&type=post&id=5012) длл-файлы возьмите из старой закачки. Клавиши "влево", "вправо", "вверх", "вниз", "пробел" и мышь.

Петер, над твоим предложением перемещения и положения объектов на карте подумаю завтра. Изложи его здесь поподробнее :bye:

Тоже самое только с сеткой http://www.civfanatics.ru/forum/index.php?...ost&id=5013 (http://www.civfanatics.ru/forum/index.php?act=Attach&type=post&id=5013)

Peter
17.07.2009, 12:22
<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 16.7.2009, 22:11) 295879</div>

Если кому интересно[/color], то разукрасил ландшафт по высоте: http://www.civfanatics.ru/forum/index.php?...ost&id=5012 (http://www.civfanatics.ru/forum/index.php?act=Attach&type=post&id=5012)
[/b]
выглядит хорошо. А можно ли разукрасить ландшафт одной высоты разными цветами? скажем переход из зеленого в желтый? (трава->песок)

идея размещения-перемещения следующая:
на поверхности (сферы) имеется сетка с равноудаленными узлами, получившаяся после нескольких разбиений икосаэдра (как это будет выглядеть - см. программу Генерала). Каждый узел соединен с несколькими (обычно с 6ю) соседними. Все объекты привязаны к узлам сетки. То есть характеристики местности задаются для узла. например для такого-то узла задано, что там растет лес. Соответственно на поверхности вокруг этого узла размещаются модели ёлок. границы зоны, на которой они размещаются, определяется как ломанная, проходящая через середины ребер, соединяющих данный узел с соседними.

http://i283.photobucket.com/albums/kk312/mogendovid/landshaft.gif

зы: ты можешь нарисовать сетку на ландшафте по такому принципу?

pps: нашел ошибку в своей программе, исправляю.

ppps: в принципе границу можно делать не ломаной а в виде эллипса, чтобы шестиугольные ячейки не сильно бросались в глаза.

тогда деревья скажем будут немного залазить на соседние клетки

superregistr
17.07.2009, 12:33
<div class='quotetop'>Цитата</div>
выглядит хорошо. А можно ли разукрасить ландшафт одной высоты разными цветами? скажем переход из зеленого в желтый? (трава->песок) [/b]
Можно, было бы желание. Вот в чем идея: я планирую в игре 3 карты: визуальная (как в циве, т.е. то, о чем ты говоришь: трава, песок, леса и т.п.), географическая (по высоте) и климатическая (по климатическим поясам). Эта пока только географическая карта (т.е. по высоте как в атласах).

Вопрос: это совершенно точно, что можно сделать такое разбиение для всей сферы? А то на рисунке только часть. Есть такая мат. теорема, согласно которой нельзя разбить сферу на правильные шести и пятиугольники кроме как футбольный мяч. Допустим они не совсем правильные и так можно сделать. Надо подумать как это можно перенести на прямоугольную карту "без потерь качества".

Подумаю об этом.

Peter
17.07.2009, 12:48
<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 17.7.2009, 12:33) 295944</div>

Можно, было бы желание. Вот в чем идея: я планирую в игре 3 карты: визуальная (как в циве, т.е. то, о чем ты говоришь: трава, песок, леса и т.п.), географическая (по высоте) и климатическая (по климатическим поясам). Эта пока только географическая карта (т.е. по высоте как в атласах).
[/b]
что можно раскрасить - это супер. А текстуру наложить? На пару треугольников например.
а зачем может понадобиться карта высот и климата?

<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 17.7.2009, 12:33) 295944</div>

Вопрос: это совершенно точно, что можно сделать такое разбиение для всей сферы? А то на рисунке только часть. Есть такая мат. теорема, согласно которой нельзя разбить сферу на правильные шести и пятиугольники кроме как футбольный мяч. Допустим они не совсем правильные и так можно сделать.
[/b]
посмотри программу Генерала, которая рисует такую разбивку. Не знаю правильные они там или не очень, но выглядит все окей. Невооруженным глазом неправильность заметна думаю не будет.

<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 17.7.2009, 12:33) 295944</div>

Надо подумать как это можно перенести на прямоугольную карту "без потерь качества".
[/b]
зачем переносить на прямоугольную? На экране можно строить участок поверхности сферы, с сохранением кривизны.

superregistr
17.07.2009, 12:58
<div class='quotetop'>Цитата</div>
что можно раскрасить - это супер. А текстуру наложить? На пару треугольников например.
[/b]
Для визуальной карты и расчитываю на текстуру. В вашей идее надо будет учеть неправильность фигур -- значит текстуру нельзя шлепнуть сразу на всеь треугольник. Можно ее как то частями шлепать на один треугольник.

<div class='quotetop'>Цитата</div>
а зачем может понадобиться карта высот и климата? [/b]
Чтобы было легче ориентироваться: например занять правильную высоту или выбрать удобный климат. Ведь на визуальной карте трудно бывает определить эти вещи, хотя бы высоту. Но основной картой будет визуальная. А две вторых для удобства, вдруг кому пригодятся :)

<div class='quotetop'>Цитата</div>
посмотри программу Генерала, которая рисует такую разбивку [/b] Я видел только одну программу Генерала, где разбивка на несколько треугольников (т.е. теоремой, про которую я говорил, не запрещается). А есть ли программа где разбивка идет на любое n число треугольников? Если есть -- дайте ссылку.

<div class='quotetop'>Цитата</div>
зачем переносить на прямоугольную? На экране можно строить участок поверхности сферы, с сохранением кривизны. [/b] Это все с учетом, что разбивку на любое n число треугольников можно сделать.

Peter
17.07.2009, 13:07
<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 17.7.2009, 12:58) 295950</div>

Я видел только одну программу Генерала, где разбивка на несколько треугольников (т.е. теоремой, про которую я говорил, не запрещается). А есть ли программа где разбивка идет на любое n число треугольников?
[/b]
суть метода состоит в том что все грани икосаэдра представляют собой правильные треугольники. которые также можно разбить на правильные треугольники. то есть это итерационный метод. так сделано и в программе генерала. То есть финальное число узлов зависит от числа последовательных разбиений всех треугольников, составляющих фигуру. Если разбивать на каждом шаге один треугольник на 4, то получим следующую зависимость числа узлов на поверхности от числа разбиений:
0 - 12
1 - 42
2 - 162
3 - 642
4 - 2502
5 - 10242
6 - 40962
и так далее.
(по результатам работы моей программы)

на пяти разбиениях можно остановиться, т.к. 10 тысяч узлов соответствуют большой карте 100х100.

superregistr
17.07.2009, 13:11
Только, наверно, не правильные (т.е. не равносторонние), а равнобедренные.

Набери в гугле "усеченный икосайдр" и "тела Платона". Там четкая мат. теорема, что можно разбить сферу только на ограниченное число правильных фигур. А именно: сферу на правильные треугольники можно разбить только один раз --- получится икосайдр. Дальше разбивать на правильные треугольники не получится.

Dr Gobbels
17.07.2009, 13:14
Красота! :applau2: :applau2: :applau2:

ЗЫ: извините за флуд :shy2:

superregistr
17.07.2009, 13:18
Одобрительные возгласы флудом не считаются :)

Peter
17.07.2009, 13:24
треугольники правильные, неправильными будут сферические треугольники после проекции разбитых граней икосаэдра на описанную сферу.

но опять же степень их неправильности невелика, ее можно оценить посмотрев программу Генерала.

superregistr
17.07.2009, 13:26
<div class='quotetop'>Цитата(Peter * 17.7.2009, 13:24) 295963</div>

треугольники правильные, неправильными будут сферические треугольники после проекции разбитых граней икосаэдра на описанную сферу.
но опять же степень их неправильности невелика, ее можно оценить посмотрев программу Генерала.
[/b]
Дай ссылку.

General
17.07.2009, 13:28
<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 17.7.2009, 11:58) 295950</div>

Я видел только одну программу Генерала, где разбивка на несколько треугольников (т.е. теоремой, про которую я говорил, не запрещается). А есть ли программа где разбивка идет на любое n число треугольников? Если есть -- дайте ссылку.
[/b]
Там в правом нижнем углу кнопка "Следующая итерация"

Peter
17.07.2009, 13:30
http://general.civfanatics.ru/soft/Globe/Triangle-sphere.zip

superregistr
17.07.2009, 13:32
<div class='quotetop'>Цитата(General * 17.7.2009, 13:28) 295967</div>

<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 17.7.2009, 11:58) 295950

Я видел только одну программу Генерала, где разбивка на несколько треугольников (т.е. теоремой, про которую я говорил, не запрещается). А есть ли программа где разбивка идет на любое n число треугольников? Если есть -- дайте ссылку.
[/b]
Там в правом нижнем углу кнопка "Следующая итерация"
[/b][/quote]
Дайте ссылку. У меня такой проги нет.

// Вижу, спасибо :)

Попробую разобраться вечером :.V.:

Peter
17.07.2009, 13:32
разница моей программы и генеральской в том, что генеральская рисует но граф не строит, а моя строит граф но ничего не рисует :)

да, и еще в моей ошибка )

superregistr
17.07.2009, 13:37
<div class='quotetop'>Цитата(Peter * 17.7.2009, 13:32) 295972</div>

разница моей программы и генеральской в том, что генеральская рисует но граф не строит, а моя строит граф но ничего не рисует :)

да, и еще в ней ошибка )
[/b]
Если прога рисует, значит она уже нашла граф или?
Если дадите код, то попробую тоже реализовать ее в 3D?

Или хотя бы алгоритм действий?

superregistr
17.07.2009, 13:47
:shy2: у меня она оказывается была, кнопку не заметил. Ну вообщем примерно я алгоритм знаю, попробую тоже :)

Peter
17.07.2009, 14:13
<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 17.7.2009, 13:47) 295978</div>

:shy2: у меня она оказывается была, кнопку не заметил. Ну вообщем примерно я алгоритм знаю, попробую тоже :)
[/b]
алгоритм чего?
у меня дома были исходники программы Генерала, могу выложить вечером. Также они были здесь на форуме где-то, не помню где :)

superregistr
17.07.2009, 14:14
<div class='quotetop'>Цитата(Peter * 17.7.2009, 14:13) 295984</div>

<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 17.7.2009, 13:47) 295978

:shy2: у меня она оказывается была, кнопку не заметил. Ну вообщем примерно я алгоритм знаю, попробую тоже :)
[/b]
алгоритм чего?
у меня дома были исходники программы Генерала, могу выложить вечером. Также они были здесь на форуме где-то, не помню где :)
[/b][/quote]
Было бы отлично :applau3:

Peter
17.07.2009, 14:15
зы: можешь попросить Генерала, чтобы он объяснил тебе как делать разметку

(как он делал)

superregistr
17.07.2009, 14:16
<div class='quotetop'>Цитата(Peter * 17.7.2009, 14:15) 295986</div>

зы: можешь попросить Генерала, чтобы он объяснил тебе как делать разметку
(как он делал)
[/b]
Да, было бы не лишне

superregistr
21.07.2009, 08:17
<div class='quotetop'>Цитата(Peter * 28.5.2009, 10:49) 289477</div>

просто делю пополам все отрезки (треугольники то правильные):
http://i283.photobucket.com/albums/kk312/mogendovid/triangle.gif

сейчас у меня возникла необходимость определять угол при вершине сферического треугольника - я использую сферическую систему координат. в принципе можно переводить в декартовы и рассчитывать угол между векторами но мне кажется должно быть более простое решение.
[/b]
Генерал и Петер.
Я как понимаю сначала вы находите точки на плоскости (красные точки на рисунке), а потом вытягиваете их на радиус сферы?

И еще: используете динамический массив или заранее берете просто очень большой массив?

Peter
21.07.2009, 13:16
<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 21.7.2009, 8:17) 296647</div>

Я как понимаю сначала вы находите точки на плоскости (красные точки на рисунке), а потом вытягиваете их на радиус сферы?

И еще: используете динамический массив или заранее берете просто очень большой массив?
[/b]
я нахожу красные точки в декартовых координатах. потом перевожу в сферические с ρ=1 - единичный радиус (уровень моря, грубо говоря). для задания неровностей рельефа можно использовать ρ>1.

Я могу сгенерировать тебе список точек в файле, чтобы ты не изобретал велосипед. и твоя программа будет читать его и строить по нему карту.

superregistr
21.07.2009, 16:36
<div class='quotetop'>Цитата(Peter * 21.7.2009, 13:16) 296735</div>

я нахожу красные точки в декартовых координатах. потом перевожу в сферические с ρ=1 - единичный радиус (уровень моря, грубо говоря). для задания неровностей рельефа можно использовать ρ>1.
[/b]
Что то не понял, красные точки ведь не лежат на поверхности сферы. Я решил, что вы сначала их просто находите, а потом удлиняете так, чтобы они лежели на поверхности сферы. Или вы по-другому делаете? Посмотрел прогу Генерала, он вроде так и делает.

ЗЫ Я щас сам практически разобрался, просто дел на работе много, станет посвободней, добью прогу.

Peter
21.07.2009, 16:48
<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 21.7.2009, 16:36) 296787</div>

Что то не понял, красные точки ведь не лежат на поверхности сферы. Я решил, что вы сначала их просто находите, а потом удлиняете так, чтобы они лежели на поверхности сферы. Или вы по-другому делаете?
[/b]
ну так я о том и написал! радиус ставишь равным 1, вот они и на поверхности.

Генерал возможно сразу из декартовых достраивает, не помню как там что, давно исходник смотрел :)

superregistr
21.07.2009, 17:19
Угу, заботаю :yes:

superregistr
27.07.2009, 18:48
Для затравки выкладываю, что пока успел сделать. Значит строится икосаэдр и первая итерация в виде каркаса. Как видно треугольники в итерации не равносторониие, но это сойдет для игры.

ЗЫ Осталось разобраться с динамическим массивом, все это засунуть в цикл и кнопочку какую-нибудь приделать. :.V.:

Peter
27.07.2009, 20:00
странно, я неравносторонности не вижу... :unsure:
выглядит круто! теперь бы побольше разбиений и текстурки попробовать наложить :hyper:

superregistr
27.07.2009, 20:42
Там еще в проге я использую декартову систему координат. Сейчас всё переделаю в сферическую систему. Типа лозунг: сферической Земле сферическую систему координат :) Просто удобней в ней будет работать дальше ;)

ЗЫ Как же ты не увидел? :) Просто не очень заметно :.V.:

superregistr
29.07.2009, 18:47
Можно сказать добил программу со сферической Землей. ТЕПЕРЬ ЗЕМЛЯ БУДЕТ КРУГЛАЯ!!! Ура, товарищи! :bayan:

Вот предлагаю пока сферический тестлэнд, построенный 4-мя итерациями. Для разработки игры очень даже неплохо, можно и 5, и ... , но мир тогда будет слишком большой.

Примечание: в первой проге тестлэнд (которая на плоскости) рельеф я задал как прибавление к z координате, которая равна нулю. В случае сферической Земли рельеф будет задаваться как прибавление к радиусу, благо моя программа считает теперь в сферической системе координат.

Вот так вот. :.V.:

Dr Gobbels
30.07.2009, 08:25
:applau2: :.V.:

Качать мерзавца!

Peter
30.07.2009, 08:31
посмотрю дома

superregistr
30.07.2009, 08:36
Там еще кое-что переделать надо бы. Вот сейчас пришел к такому мнению. Нужно будет отказаться от номера треугольника и перейти полностью на номер узла. Найти все узлы и потом их упорядочить.

Вообще идея у меня такая создать визуальный редактор рельефа. Сделать там две кнопки типа "+" и "-". Нажимаешь на "+" и тыкаешь на узел -- рельеф повышается. Нажимаешь на "-" и тыкаешь на узел -- рельеф понижается. Все потом чтобы можно было сохранить в файл и загрузить из него же.

Вот пока такая задумка :.V.:

Peter
30.07.2009, 19:12
Ну чтож, круто. Но теперь вижу неправильность треугольников :)
А ты можешь сделать помельче сетку? охота посмотреть как она будет выглядеть..

Aku_Aku
30.07.2009, 20:52
Вот.

http://filesdnld.civru.com/play/3492/EarthDX2_.rar

Можете попробовать загрузить.
Только что извлек при раскопках на ЦивРуКоме :)

Вот в этой теме. Где не только люди обсуждали, но кое-что и выкладывали из своих наработок (на том форуме просто не во всех темах выкладывать можно)

http://forum.civru.com/index.php?action=vt...&page=11#24 (http://forum.civru.com/index.php?action=vthread&forum=24&topic=3492&page=11#24)

Как видите.
Вы не первые с идеей "сферической Земли".
Собственно потому я и отношусь скептически к такой идее -- видел уже результаты предыдущих попыток.

superregistr
30.07.2009, 21:22
Здесь итерации с 3 по 7. При 6 итерации нужно подождать, при 7 нужно подождать в 4 раза дольше чем при 6 ;) Уже при 6 итерации у меня видеокарта начинает тормозить. Поэтому предел пока можно поставить на 5, а отрабатывать и тестить на 4.

ЗЫ Можно еще получить выигрыш, если оторбражать только поверхность по нормали в одну сторону. Еще есть возможность съэкономить на неотображении объектов, невидных на экране. Это даст ускорение видеокарты.

superregistr
30.07.2009, 21:55
<div class='quotetop'>Цитата(Aku_Aku * 30.7.2009, 20:52) 297819</div>

http://filesdnld.civru.com/play/3492/EarthDX2_.rar [/b]
Интересная прога :yes: Надеюсь, у нас получится не хуже. Там рельеф каждый раз заново генерируется или грузится из заранее сделанной карты? почему дальше не разрабатывали на ней игру?

Aku_Aku
30.07.2009, 22:07
ну, это человек делал её еще до того как я пришол на тот форум

там если покопатся, то наверное можна и какую посвежее версию откопать.

как и разработки разныж других людей

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

superregistr
30.07.2009, 22:21
Надо бы завести общий файлообменник и всем своим выдать пароль к нему. Народ.ру? вроде там можно хранить и структуировать по папкам?

Aku_Aku
30.07.2009, 22:36
ну, это вопрос к Гостю
будет ли он настолько гостеприимен.

Peter
31.07.2009, 08:34
<div class='quotetop'>Цитата(Finansist&#39;s sworn brother * 30.7.2009, 21:22) 297820</div>

Здесь итерации с 3 по 7. При 6 итерации нужно подождать, при 7 нужно подождать в 4 раза дольше чем при 6 ;) Уже при 6 итерации у меня видеокарта начинает тормозить. Поэтому предел пока можно поставить на 5, а отрабатывать и тестить на 4.

ЗЫ Можно еще получить выигрыш, если оторбражать только поверхность по нормали в одну сторону. Еще есть возможность съэкономить на неотображении объектов, невидных на экране. Это даст ускорение видеокарты.
[/b]
я так понял долго идут расчеты на не само отображение модели, не так уж много полигонов в ней. Расчеты можно записывать в файл и оттуда потом читать, чтобы не рассчитывать постоянно заново. При отображении поверхности планеты логично обрабатывать только видимую часть. Т.е. при большом зуме например это будет около 10 узлов..

<div class='quotetop'>Цитата(Aku_Aku * 30.7.2009, 20:52) 297819</div>

Вот.
Можете попробовать загрузить.
Только что извлек при раскопках на ЦивРуКоме :)
[/b]
ого, выглядит супер! не видел эту программу, надо почитать.
вообще по идее у нас должно получиться примерно то же самое..

superregistr
31.07.2009, 09:16
Расчеты это одно. я имел в виду построение изображения. Сам попробуй поверти сферы 6 и 7 итерации.

General
06.08.2009, 14:20
Finansist&#39;s sworn brother, отлично!

Aku_Aku
06.08.2009, 14:23
А ты исходники смотрел? Что спешиш так сразу "отлично" ставить. :)

superregistr
06.08.2009, 16:29
Там конечно подправить нужно кое-что в исходниках, но в общем алгоритм там реализован. Я переделаю код под стандартную библиотеку шаблонов ;) , чтобы можно было записывать в файл. К тому же индекс треугольника надо убрать и перейти полностью на номер узла. Время появится, разберусь и переделаю. А чем так не понравилось, можно сказать освоил христоматийное выделение и удаление памяти.

Трикстер
13.10.2009, 00:19
В качестве возможного репозитария попробуйте рассмотреть IRepClient.
Вдруг да понравится.

superregistr
29.11.2009, 12:47
Вот прототип рельефа на сферической поверхности. Клавиши: "вверх", "вниз", "вправо", "влево", "пробел" и мышь. Длл-файлы можно скачать здесь (http://mygame.civfanatics.ru/objects/mygame.projects/mygame.files/dll.files/Qt4.dll.files.rar).

superregistr
29.11.2009, 15:13
То же самое без сетки.

superregistr
29.01.2010, 14:07
Я сейчас наконец-то обрел понимание, что нумерацию нужно делать по узлам, а координатам треугольников давать указатели на узлы, тогда изменение радиуса узла будет автоматически приводить к изменению радиусов точек треугольников, чьи вершины являются указателями на узлы.
:bayan:

superregistr
09.02.2010, 19:43
Итак, теперь все будет основываться на том, что узлы первичны, треугольники вторичны. В этом плане вершины треугольников являются указателями на узлы. Перестроил модель рельефа по вышеизложенному правилу :)

Сфера в моей модели состоит из 3 частей, названных условно: 1) верх, 2) середина, 3) низ (это связано с разделением икосаэдра на 3 соответствующие части). В программе построена пока только первая часть сферы (верх). Вершины треугольников содержат указатели на узлы сферы. Часть сферы "верх" построена 4-ой итерацией.

Кстати, такая модель согласуется с определениями "клетки" как: суша, море, побережье. Суша = все вершины треугольника выше уровня моря; море = все вершины треугольника уровня моря; побережье = часть вершин выше уровня моря, часть уровня моря, с соотношениями 1/2 и 2/1, т.е. показатель побережья, насколько оно побережье :)

Обратите внимание, что внутренняя поверхность сферы не строится (нормаль треугольника направлена "изнутри вовне" ), это экономит ресурс видеокарты почти в два раза :)

В бинарном файле ClearMap.map содержатся число итераций и узлы "чистой" сферы, сам рельеф накладывается в программе.

Исходники прилагаются.
:win:

superregistr
09.02.2010, 20:00
Общие идеи последовательного построения:

Карта строится из узлов, то есть вершин. Это может быть в самом простом случае плоская карта или как у меня сферическая. Для ориентации в пространстве используется пронумерованная "клетка".

У пользователя есть как минимум 3 карты: физическая, климатическая и визуальная. Далее, возможно, политическая.

Клетка берет среднее арифметическое своих узлов для собственного определения рельефа и климата, плюс дополнительные параметры.

Физическая карта есть обычная географическая, показывающая рельеф местности, то есть высоту над уровнем моря, а также озера и реки (и возможно наиболее важные объекты, например крупные города и "юниты"). Рельеф задается в узлах по высоте. Например, 0 - уровень моря, 1 - 100м, 2 - 200м, 3 - 500м и так далее в соответствии со стандартными физическими картами.

Климатическая карта дает информацию о климате, то есть в совокупности температуру и влажность, а также озера и реки (и возможно наиболее важные объекты, например крупные города и "юниты"). Если на клетку "посажен" лес, то он строиться в соответствии с рельефом и климатом (по средним арифметическим значением узлов). При этом программа сама выбирает какой это лес, например, хвойный или тропический или экваториальный. Климатическая карта отображает климатические пояса, соответствующие стандартным климатическим поясам.

Визуальная карта изображает "все, что вижу", показывает все объекты на поверхности карты.

Озера находятся выше уровня моря, но заполнены водой, о чем говорит специальный параметр "клетки", что это озеро. Реки строятся по узлам, по серединам фигур, по серединам ребер и различаются по своей полноводности.



Иллюстрацию смотрите в предыдущем посте.
:bayan:

superregistr
10.02.2010, 17:44
ссылка (http://www.civfanatics.ru/forum/index.php?act=Attach&type=post&id=6231)

Интересно было бы протестировать демо на разных компах. Тестировал на 3-х, адекватно запустился только на том, где компилировал.

Может специфика кода, вот думаю.

superregistr
10.02.2010, 18:50
Код вроде правильный, теоретически. На одном компе скорее видеокарта такая, а на другом видимо непонимает компилятор. Значит проблемы: на одном изображение не обновляется, когда раскрываешь окно, на другом земля серого цвета. попрошу отписаться всех, кто будет тестить.

Можете и код протестить, все замечания можно сюда писануть.

Ches01
11.02.2010, 11:09
<div class='quotetop'>Цитата(superregistr * 10.2.2010, 17:48) 324707</div>

Код вроде правильный, теоретически. На одном компе скорее видеокарта такая, а на другом видимо непонимает компилятор. Значит проблемы: на одном изображение не обновляется, когда раскрываешь окно, на другом земля серого цвета. попрошу отписаться всех, кто будет тестить.

Можете и код протестить, все замечания можно сюда писануть.
[/b]



земля серая, обновляется нормально, видео intel gma x3100

superregistr
12.02.2010, 14:22
Ches01

Спасибо. Буду думать, что не так :blink:

superregistr
13.02.2010, 23:01
Ches01

Попробуй еще раз. Проблема с видеокартой. Заменил glColor3f на glColor4f.

исправленная программа

Ches01
17.02.2010, 19:44
<div class='quotetop'>Цитата(superregistr * 13.2.2010, 21:59) 325028</div>

Ches01

Попробуй еще раз. Проблема с видеокартой. Заменил glColor3f на glColor4f.

исправленная программа
[/b]

извиняюсь за задержку...
вот теперь все отлично, рельеф цветной

superregistr
17.02.2010, 23:59
<div class='quotetop'>Цитата</div>
вот теперь все отлично, рельеф цветной [/b] видеокарта встроенная и, видимо, драйвер упрощенный. Он прописал где-то у себя обращение к glColor4f, а когда обращаюсь через glColor3f, он эту функцию игнорирует, ихмо. Спасибо за тестинг, учту в следующих версиях :.V.:

superregistr
04.04.2010, 21:45
[attachmentid=6463]
Сфера полностью доделана :win: Нумерация узлов и треугольников происходит по правилу правого винта, закручиваясь сверху вниз.

Скачайте testland_3_4.rar. Запустите testland_3_4_1.exe. Программа работает в консоли, попросит ввести число итераций, для тестинга хорошо подходит 4. Можете побаловаться и ввести 3. Итерация 5 подойдет для самой игры. Далее будут выводится рабочие данные, нажимайте "энтер". В конце программа поблагодарит вас, создаст файл ClearMap.map и закроется. В файле ClearMap.map хранятся данные "чистой" сферы.

Загрузите программу testland_3_4_2.exe. Программа загружает чистую сферу из файла ClearMap.map и накладывает на нее рельеф. Покрутите шарик. Крутится? Молодцы, значит вы все сделали правильно.

В файлах testland_3_4_1.rar и testland_3_4_2.rar исходники самих программ. :.V.: Если будут вопросы по коду, обращайтесь.

superregistr
04.04.2010, 22:06
Интересная особенность: при создании файла ClearMap.map на разных компьютерах он весит по-разному при разных итерациях.
3 28,5 КБ 57 КБ
4 111 КБ 223 КБ
5 443 КБ 887 КБ

Файл созданный на одной машине не загружается с другой. Очень любопытно почему.

superregistr
04.04.2010, 23:00
Ха, разобрался. Все дело в длл-шках оказалось :.V.:

Peter
07.04.2010, 10:44
Ого! Поздравляю! выглядит супер

Aku_Aku
07.04.2010, 14:46
Теперь осталось всего ничего. :)
Провести пару несложных арифметических операций и оценить сколько же понадобиться времени на все. :)

ЗЫ Код я смотрел... изменения не очень большие, за эти несколько месяцев.

superregistr
07.04.2010, 17:59
2Peter
Покорнейше благодарю :shy2:

2Aku_Aku
Изменения большие вообще-то, это я как разработчик говорю, совсем другая структура и над алгоритмами пришлось голову поломать. А на счет времени, типа ты намекаешь долго, так вполне нормально для одного делающего человека, ихмо.

Aku_Aku
07.04.2010, 18:06
\\ так вполне нормально для одного делающего человека, ихмо.

ню-ню

ЗЫ Интересно было бы посмотреть на разруливание проблем при "нескольких делающих". :)

superregistr
13.04.2010, 13:11
<div class='quotetop'>Цитата</div>
а можно ли сделать чтобы граница раздела суши и моря более четкая была?[/b] Всегда на вопрос: можно ли сделать, я всегда отвечаю: можно) Потому что теоретически можно сделать все) Конкретно по теме, то там узлы со значением высоты над уровнем моря. Каждому узлу в зависимости этой высоты ставится в соответствие цвет: например, зеленый, коричневый или голубой. В программе включено сглаживание цветов, это означает, что будет плавный переход от зеленого к голубому, например. Значит граница при увеличении будет нечеткой. Поэтому в данном случае четкую граничную линию придется дорабатывать отдельно.
:.V.:

PavelZ
14.04.2010, 12:31
И чего я к вам раньше не заглядывал, а вы ко мне...

У меня в проекте также шарики делятся, на сферические треугольники, но UEF космос и делать мир круглым или нет, такой проблемы даже не возникало. http://www.elite-games.ru/conference/viewt...2028360#2028360 (http://www.elite-games.ru/conference/viewtopic.php?p=2028360#2028360)

Dr Gobbels
14.04.2010, 13:39
Суперрегистр, не мог бы ты пожалуйста выложить и необходимые ДЛЛки тоже? :pray: Я скачал их с инета, но, видимо, не попал с версией - ругается, что не найдена точка входа в процедуру _Z5qFreePv

superregistr
14.04.2010, 16:11
<div class='quotetop'>Цитата(Dr Gobbels * 14.4.2010, 13:39) 332888</div>

Суперрегистр, не мог бы ты пожалуйста выложить и необходимые ДЛЛки тоже? :pray: Я скачал их с инета, но, видимо, не попал с версией - ругается, что не найдена точка входа в процедуру _Z5qFreePv
[/b]
А откуда ты их скачивал? Разные версии КьТи да имеют разные длл. Они уже лежат в копилке http://mygame.civfanatics.ru/objects/mygam...4.dll.files.rar (http://mygame.civfanatics.ru/objects/mygame.projects/mygame.files/dll.files/Qt4.dll.files.rar) от этой версии.

<div class='quotetop'>Цитата(Pavel Zachesa * 14.4.2010, 12:31) 332878</div>

И чего я к вам раньше не заглядывал, а вы ко мне...

У меня в проекте также шарики делятся, на сферические треугольники, но UEF космос и делать мир круглым или нет, такой проблемы даже не возникало. http://www.elite-games.ru/conference/viewt...2028360#2028360 (http://www.elite-games.ru/conference/viewtopic.php?p=2028360#2028360)
[/b]
Ух, будет время внимательно прочитаю. Как я понял, у вас задействовано все пространство сферы, а не только поверхность. Не проще ли полностью перейти в сферическую систему координат?

Peter
14.04.2010, 16:34
superregistr, разбивка в 5 итераций выглядит шикарно!


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


еще было бы круто окрашивать местность в зависимости не только от высоты.. или накладывать текстуру на какието области.. чтобы различать к примеру пустыню и степь.

superregistr
14.04.2010, 17:04
Еще это обсуждалось на циврукоме: http://www.forum.civru.com/index.php?actio...&topic=9111 (http://www.forum.civru.com/index.php?action=vthread&forum=24&topic=9111)

<div class='quotetop'>Цитата(Peter * 14.4.2010, 16:34) 332911</div>

было бы здорово еще подсчитать регулярность сетки. то есть насколько я знаю метод разбиения икосаэдра приводит к некоторым искажениям... по идее они должны быть тем более заметны чем больше мы производим разбиений. было бы здорово сравнить минимальную и максимальную длины ребер между соседними вершинами.
[/b]
Там же я предлагаю перейти в непрерывное пространство.

<div class='quotetop'>Цитата(Peter * 14.4.2010, 16:34) 332911</div>

еще было бы круто окрашивать местность в зависимости не только от высоты.. или накладывать текстуру на какието области.. чтобы различать к примеру пустыню и степь.
[/b]
Это уже визуальная карта. Всего основных карт три: рельефная, климатическая и визуальная. Это все там же рассказывается.

<div class='quotetop'>Цитата</div>
Там же я предлагаю перейти в непрерывное пространство.[/b] Имеется в виду непрерывная поверхность.

Peter
14.04.2010, 17:11
я предлагаю не использовать непрерывное пространство. :)


про три основных карты как-то очень скупо. зачем столько карт? почему бы не обойтись одной?

зы: если ты хочешь непрерывное пространство, зачем тогда нужны треугольники?

superregistr
14.04.2010, 17:23
<div class='quotetop'>Цитата(Peter * 14.4.2010, 17:11) 332915</div>

я предлагаю не использовать непрерывное пространство. :)


про три основных карты как-то очень скупо. зачем столько карт? почему бы не обойтись одной?

зы: если ты хочешь непрерывное пространство, зачем тогда нужны треугольники?
[/b]
Как и все модели я строю от простого к сложному. Первым делом задаем рельеф, это очень важно. Над чем я собственно и работал в последнее время. Таким образом автоматически появляется рельефная карта. Вторым делом задаем климат на рельефной карте, т.е. климатические пояса с температурой и влажностью. Таким образом появляется климатическая карта. Визуальная карта - итог работы, показывает "все, что вижу", т.е. пустыни, степи и т.д. Пустыня или степь или ... накладывается автоматически как текстура с учетом рельефной и климатической карты. Если сажаем лес, то он автоматически строиться опять же с учетом рельефной карты и климатической карты, программа сама выбирает какой это лес: хвойный, лиственный, пальмовый и т.д. Основная карта игрока - это визуальная карта, аналогичная той, что в циве. Две другие существуют как необходимый промежуточный этап, чтобы построить основную карту. Пусть и они будут в игре доступны, всегда могут пригодиться.

Peter
14.04.2010, 17:27
<div class='quotetop'>Цитата(superregistr * 14.4.2010, 17:23) 332918</div>

[/b]
а механизм наложения текстуры на часть поверхности глобуса определен уже?

superregistr
14.04.2010, 17:34
На счет непрерывного пространства: передвижение происходит в два этапа: 1) с одного треугольника на другой 2) непрерывно по треугольнику. Треугольник - это единица поверхности, но юнит по нему может перемещаться непрерывно, пока не перейдет на другой треугольник и т.д. Треугольники опять же играют промежуточную роль для перемещения.

Основные характеристики юнита: радиус видимости (в этом радиусе он видит соседние юниты и объекты) и радиус действия (в этом радиусе он может действовать, например атаковать). Треугольники существенно убыстряют процесс обнаружения соседей, т.к. нужно рассмотреть только соседние треугольники.

<div class='quotetop'>Цитата(Peter * 14.4.2010, 17:27) 332920</div>

<div class='quotetop'>Цитата(superregistr * 14.4.2010, 17:23) 332918

[/b]
а механизм наложения текстуры на часть поверхности глобуса определен уже?
[/b][/quote]
Обычными средствами наложения текстуры в опенгл. В проге есть функция, которая по значению дискретного радиуса ставит в соотвествие точке определенный цвет. Задание текстуры будет работать аналогично. По значениям трех точек (а именно какой у них рельеф и какой климат) программа в соответствии будет накладывать определенную текстуру. Но сначала нужно создать климатическую карту.

Peter
14.04.2010, 17:45
<div class='quotetop'>Цитата(superregistr * 14.4.2010, 17:34) 332921</div>

На счет непрерывного пространства: передвижение происходит в два этапа: 1) с одного треугольника на другой 2) непрерывно по треугольнику. Треугольник - это единица поверхности, но юнит по нему может перемещаться непрерывно, пока не перейдет на другой треугольник и т.д. Треугольники опять же играют промежуточную роль для перемещения.
[/b]
а зачем это надо? по моему проще между вершинами передвигаться

superregistr
14.04.2010, 17:52
<div class='quotetop'>Цитата(Peter * 14.4.2010, 17:45) 332927</div>

<div class='quotetop'>Цитата(superregistr * 14.4.2010, 17:34) 332921

На счет непрерывного пространства: передвижение происходит в два этапа: 1) с одного треугольника на другой 2) непрерывно по треугольнику. Треугольник - это единица поверхности, но юнит по нему может перемещаться непрерывно, пока не перейдет на другой треугольник и т.д. Треугольники опять же играют промежуточную роль для перемещения.
[/b]
а зачем это надо? по моему проще между вершинами передвигаться
[/b][/quote]
Ихмо, накладывает неудобства. Если в реальности можешь пройти прямо, то так нужно будет огибать по вершинам узлов. Да и красивее и удобнее как-то иметь дело с непрерывным пространством, чем с дискретным:)

ЗЫ Мы ведь не ищем легких путей. Правда? :)

Peter
14.04.2010, 17:58
<div class='quotetop'>Цитата(superregistr * 14.4.2010, 17:51) 332929</div>

Ихмо, накладывает неудобства. Если в реальности можешь пройти прямо, то так нужно будет огибать по вершинам узлов. Да и красивее и удобнее как-то иметь дело с непрерывным пространством, чем с дискретным:)
[/b]
может и красивее (не существенно) но никак не удобнее. рассчитывать границы объектов в пространстве и притом на сфере - это ни с какого боку не удобнее чем привязка объектов к вершинам. и потом какой практический смысл всего этого (кроме "красоты" - причем в ущерб наглядности. имхо в стратегии красота не должна доминировать над наглядностью) мы же не тактический симулятор вроде как делаем а глобальную стратегию :secret:

superregistr
14.04.2010, 18:05
<div class='quotetop'>Цитата(Peter * 14.4.2010, 17:58) 332931</div>

<div class='quotetop'>Цитата(superregistr * 14.4.2010, 17:51) 332929

Ихмо, накладывает неудобства. Если в реальности можешь пройти прямо, то так нужно будет огибать по вершинам узлов. Да и красивее и удобнее как-то иметь дело с непрерывным пространством, чем с дискретным:)
[/b]
может и красивее (не существенно) но никак не удобнее. рассчитывать границы объектов в пространстве и притом на сфере - это ни с какого боку не удобнее чем привязка объектов к вершинам. и потом какой практический смысл всего этого (кроме "красоты" - причем в ущерб наглядности. имхо в стратегии красота не должна доминировать над наглядностью) мы же не тактический симулятор вроде как делаем а глобальную стратегию :secret:
[/b][/quote]
Ихмо есть разница, юнит ходит только по узлам или юнит ходит как захочет. Техническое усложнение не очень велико, в несколько раз, а ощущение "реальности" увеличивается в порядки.

<div class='quotetop'>Цитата</div>
удобнее[/b] для игрока, так же игрок должен обдумывать обход по узлам. А в непрерывном случае просто идет вперед.

Peter
14.04.2010, 18:11
<div class='quotetop'>Цитата(superregistr * 14.4.2010, 18:05) 332932</div>

Ихмо есть разница, юнит ходит только по узлам или юнит ходит как захочет. Техническое усложнение не очень велико, в несколько раз, а ощущение "реальности" увеличивается в порядки.
[/b]
по моему наоборот. ощущение реальности на пару процентов увеличивается а сложность возрастает раз в 100 или 1000.

<div class='quotetop'>Цитата(superregistr * 14.4.2010, 18:05) 332932</div>

для игрока, так же игрок должен обдумывать обход по узлам. А в непрерывном случае просто идет вперед.
[/b]
ну да, в непрерывном случае он будет линейкой измерять расстояния. одно дело когда юнит идет "из занзибара в гондурас" а другое - "из 234 градусов южной широты 453 восточной долготы в 345 северной широты 644 западной долготы". для глобальной стратегии это на мой взгляд абсолютно излишняя и более того, очень вредная детализация.

зы:
вообще по концепции вроде как so far остановились на армиях а не на юнитах. то есть двигать туда сюда юнитов никто не будет, разве что для наглядности какие то фигурки будут бегать по горам по долам.

superregistr
14.04.2010, 18:35
Долго обдумывая модель положения и перемещения, все же пришел именно к непрерывной модели как наиболее интересной. Представь просто шар-Землю, выбираешь точку на сфере, перемещаешь в нее свой юнит (для условности говорю пока юнит). Все эти треугольники нужны поскольку-постольку, чтобы была поверхность. Также можно сделать в циве, представь, что ты можешь теперь перемещаться не только по клеточкам, но внутри клеточек как захочешь.

superregistr
14.04.2010, 19:06
<div class='quotetop'>Цитата</div>
рассчитывать границы объектов в пространстве и притом на сфере[/b] не совсем понял, что ты имеешь в виду. Если ты говоришь о положении, то это просто точка с углами тета и фи. Если ты говоришь про радиусы, то я придумал некоторые алгоритмы, которые достаточно быстро будут вычислять юнитов в них (в радиусах).

В смысле находящихся в радиусах.

superregistr
14.04.2010, 19:20
Относительно движка.

Пока выделил для себя последовательные первостепенные задачи:
1) создать редактор рельефа, с опциями создать, сохранить, загрузить
2) разработать модель положения и перемещения
3) разработать модели радиусов
4) заняться климатической картой
5) реки и озера
6) создавать 3D объекты для визуальной карты (предположительно в Blender)
Ихмо.

PavelZ
14.04.2010, 19:27
<div class='quotetop'>Цитата</div>
Не проще ли полностью перейти в сферическую систему координат?[/b]
Думал я об этом, но пока решил сильно не заморачиваться, оставив мысль в потаённом уголке. Главное всё таки некая фиксированная ячейка позволяющая упростить разбиение на зоны поверхности шарика, а в каких координатах она считается это уже не так важно, вернее это проблема отображения, а не логики игры. В базе просто будет ячейка с номером таким-то. Передвижение юнитов, поселения и злдания привязываются к узлам ячеек, также как ландшафт и ресурсы. Впрочем это всё вы и так знаете:)

Peter
15.04.2010, 08:36
superregistr ну ты представь поиск пути например - не по ячейкам а на поверхности сферы, с учетом препятствий непредсказуемой формы. Расположение объектов опять же не фиксированной формы (многоугольники в основании), чтобы их края не пересекались, вычисление расстояния между ними (а не между их центрами) и т.п. - и все это на сфере. Ты несколько месяцев делал такую простую вещь как сетку из треугольников (которая теперь тебе оказалась нафиг не нужна), представь сколько ты будешь возиться со всей этой трехмерной геометрией.

Просто не понятно, ради чего всё это? Я не понимаю ради чего. Просто "чтобы было" :huh:

Но если тебе это интересно твое дело конечно, просто к игре эти изыски уже не имеют отношения. Если ты не будешь делать на этой основе 3д шутер :)

superregistr
15.04.2010, 15:10
<div class='quotetop'>Цитата</div>
Ты несколько месяцев делал такую простую вещь как сетку из треугольников (которая теперь тебе оказалась нафиг не нужна)[/b] Вставлю маленький комментарий. Узлы первичны, треугольники вторичны. Но и те, и те важны, т.к. задают информацию о поверхности.

Насколько легче будет пользоваться только узлами для перемещения? Что будет с поверхностью, которая не задействована? (Вообще то есть единственный способ это проверить, сделать и посмотреть)

В пределах треугольника - плоскость, на которой не должно быть препятствий непредсказуемой формы. К тому же у меня всегда есть на всякий случай спасительный козырь в кармане. Юнит может занимать под себя фиксированный треугольник и видеть соседние (типа как в циве).

Вообще надо поэкспериментировать над разными способами и разными реализациями. Но вопрос остается вопросом: не появится ли у игрока впечатления, что его опять обманули?



ЗЫ

<div class='quotetop'>Цитата</div>
ну ты представь поиск пути например - не по ячейкам а на поверхности сферы, с учетом препятствий непредсказуемой формы.[/b] В этом и вся прелесть использования треугольников. Они играют роль промежуточной ячейки. Сначала поиск пути происходит по ним, а в их пределах юнит движется по прямой (т.к. это плоскость).

PavelZ
15.04.2010, 16:22
Надо забыть на время о треугольниках и сферической геометрии, это чистая математика, которая многим из нас особо не нужна, самому мне приходится прилагать определённое усилие над собой, чтоб умерить полёт фантазии и перелагать мысли на формулы :)
http://zp3.biz/sites/default/files/uzly.jpg Наилучшем решением для себя вижу движение и размещение объектов в узлах решётки, к ним же привязываются и ресурсы и элементы ландшафта. А визуально можно представить это как частично перекрывающиеся области близкие к кругу (на самом деле это те же самые шестиугольники и в отдельных местах пятиугольники).

Peter
15.04.2010, 16:27
<div class='quotetop'>Цитата(Pavel Zachesa * 15.4.2010, 16:22) 333038</div>

[/b]
вот я также думаю. есть же узлы, нафига еще что-то?

superregistr
15.04.2010, 17:09
С одной стороны, узлы действительно упростят расчет. С другой, сократят игровое пространство. Лично мне они не нравятся тем, что нельзя ходить по прямым. Т.е. путь будет похож на ломаную кривую, которую делает пьяный американский водитель встретившись с полицейским :)

ЗЫ треугольники нужны для построения (для рендеринга). Эта самая лучшая из фигур в опенгл, т.к. самая быстрая.

PavelZ
15.04.2010, 17:30
<div class='quotetop'>Цитата</div>
путь будет похож на ломаную кривую[/b]
На самом деле в мире прямых дорог нет, а захочется строить хайвей, так его и ставить единым объектом из разных не обязательно смежных узлов, а движение объектов обрабатывать отдельно. С рендером то и так понятно, текстурироваться будут именно треугольники, но это больше к визуализации относится, а не к логике игры и для более симпотного вида, придётся эти треугольники дробить ещё как минимум на четыре части. Каждую отрисовывать в соответствии с узлом а центральную делать какой-нибудь нейтральной текстурой, если они разнятся для плавности перехода или такой же как они все, если те одинаково оттекстурены.

Peter
15.04.2010, 17:36
<div class='quotetop'>Цитата(superregistr * 15.4.2010, 17:09) 333043</div>

С одной стороны, узлы действительно упростят расчет. С другой, сократят игровое пространство. Лично мне они не нравятся тем, что нельзя ходить по прямым. Т.е. путь будет похож на ломаную кривую, которую делает пьяный американский водитель встретившись с полицейским :)

ЗЫ треугольники нужны для построения (для рендеринга). Эта самая лучшая из фигур в опенгл, т.к. самая быстрая.
[/b]
ага, выходит всё дело в визуализации. так ведь можно сгладить путь объекта чтобы он не под прямыми углами сворачивал а перемещался по сплайну. это будет выглядеть даже лучше чем просто прямолинейное передвижение.

PavelZ
15.04.2010, 17:51
<div class='quotetop'>Цитата</div>
сгладить путь объекта чтобы он не под прямыми углами сворачивал а перемещался по сплайну[/b]
Это ещё другой момент -- относящийся к анимации юнитов, так же вполне реализуемый в существующей модели. Здесь больше вопрос к тому какой будет масштаб юнитов, вдруг вы захотите их сделать размером больше чем то пятно, что я схематично нарисовал?

Peter
15.04.2010, 17:55
<div class='quotetop'>Цитата(Pavel Zachesa * 15.4.2010, 17:51) 333048</div>

<div class='quotetop'>Цитата
сгладить путь объекта чтобы он не под прямыми углами сворачивал а перемещался по сплайну[/b]
Это ещё другой момент -- относящийся к анимации юнитов, так же вполне реализуемый в существующей модели. Здесь больше вопрос к тому какой будет масштаб юнитов, вдруг вы захотите их сделать размером больше чем то пятно, что я схематично нарисовал?
[/b][/quote]
ну это вряд ли.
в моей концепции например вообще юнитов [как объектов игры] нет. разве что как визуальные объекты

superregistr
15.04.2010, 22:35
Короче, посмотрим. Эксперимент покажет :D

PavelZ
16.04.2010, 02:28
<div class='quotetop'>Цитата</div>
в моей концепции например вообще юнитов [как объектов игры] нет[/b]
То что ты имеешь ввиду не принципиально, под юнитом, в стратегической игре, обычно представляется не отдельный солдат, а целое подразделение. И неважно что там, следопыт или отделение пехоты, катапульта или орудийная батарея, подводная лодка или звено истребителей-перехватчиков.

То есть в зависимости от эпохи и вида юнита, количество солдат и офицеров, а также единиц техники в нём может быть разным. Другое дело, что схематично это можно отобразить одной фигуркой, а если хочется сделать красиво, то сразу толпой воинов, как в Total War.

Peter
16.04.2010, 08:24
<div class='quotetop'>Цитата(Pavel Zachesa * 16.4.2010, 2:28) 333076</div>

<div class='quotetop'>Цитата
в моей концепции например вообще юнитов [как объектов игры] нет[/b]
То что ты имеешь ввиду не принципиально, под юнитом, в стратегической игре, обычно представляется не отдельный солдат, а целое подразделение. И неважно что там, следопыт или отделение пехоты, катапульта или орудийная батарея, подводная лодка или звено истребителей-перехватчиков.

То есть в зависимости от эпохи и вида юнита, количество солдат и офицеров, а также единиц техники в нём может быть разным. Другое дело, что схематично это можно отобразить одной фигуркой, а если хочется сделать красиво, то сразу толпой воинов, как в Total War.
[/b][/quote]
я имею ввиду что войска располагаются не в какой-то ячейке конкретной, а на области.

PavelZ
16.04.2010, 09:52
<div class='quotetop'>Цитата</div>
войска располагаются не в какой-то ячейке конкретной, а на области[/b]
Войска как-то отображать надо, если это не текстовый квест у тебя :) об этом я уже сказал выше, как они могут быть представлены игроку, область также должна иметь границы и чем эти кружочки (что я нарисовал раннее) не та область, которую ты имеешь ввиду?

Если же твой концепт имеет чисто философскую основу, что мол если брать в учёт, что реально на этой области, что взята нами за основу, пусть это будет 100 кв. км к примеру, могут оказаться одновременно две или более боевых единиц и друг друга не заметить, тогда надо или увеличить детализацию, к примеру до 9 кв.км, чтоб решить подобное недоразумение (но учесть что это больше нагрузит систему) либо как в Total War выделять тактику в отдельный игровой уровень.

superregistr
16.04.2010, 11:16
Pavel Zachesa, у тебя больше аргументов к узлам. В узлах находятся звездные системы, как я понимаю. А все остальное пространство пустое и интереса не представляет. Поэтому у тебя узлы еще как аргументированы. У нас же другой случай, т.к. пустот быть не должно.

PavelZ
16.04.2010, 12:14
<div class='quotetop'>Цитата</div>
А все остальное пространство пустое и интереса не представляет.[/b]
Не совсем так, в UEF космос не пустой и теоретически можно не прыгать от звезды, а лететь своим ходом, также при дальнем прыжке можно попасть между звёзд и встретить там монстра... Что же касается поверхности планет, то узлы делаются для упрощения игровой логики, на стадии прототипа.

В основном ДизДоке как раз-то учитывается весь объём области, это касается и фаз эшелонов и ячеек поверхности планеты. Просто к id ячейки или фазы эшелона, для каждого объекта добавляется добавляется некоторое смещение от центра данного объёма. При расчёте взаимодействий между объектами учитывается пространство сразу всех 27 ячеек (или фаз эшелона в космическом пространстве звёздной системы) и это только для взаимодействий первого плана. Также предполагаются и удалённые взаимодействия, но они будут просчитываться отдельно.

superregistr
16.04.2010, 20:16
Для интереса решил посмотреть, а можно ли сферу разбить на шестиугольники с опорными пятиугольниками:
http://mygame.civfanatics.ru/objects/mygame.projects/mygame.pictures/demonohexagon.jpg
нельзя :secret:

Peter
16.04.2010, 20:31
а от количества разбиений не зависит?

зы: вообще конечно очень круто. каждый раз смотрю и радуюсь. представьте что на этой планетке стоят города, плавают корабли... и ездиют паравозики
!!!! :nerves:

superregistr
16.04.2010, 22:53
<div class='quotetop'>Цитата</div>
а от количества разбиений не зависит?[/b]
не проверял, честно говоря.

<div class='quotetop'>Цитата</div>

зы: вообще конечно очень круто. каждый раз смотрю и радуюсь. представьте что на этой планетке стоят города, плавают корабли... и ездиют паравозики[/b]
Аналогично! :bayan:

superregistr
17.04.2010, 00:16
Интересно, подумал сейчас. Если вырезать зазоры и потом соединить, то получится что-то напоминающее эллипсойд.

Peter
17.04.2010, 08:55
попробуй разное число разбиений..
скажем 3 и 4 ;)

superregistr
21.04.2010, 23:17
Построил метод, предложенный Сваном, с октаэдром. В файле iteration.txt стоит число итераций, по умолчанию стоит 0, который соотвествует октаэдру. Изменяйте последовательно на 1, 2, 3 ... и запускайте программу. Не забывайте сохранять текстовый файл перед запуском.

Peter
22.04.2010, 08:32
Оперативно :applau2:

итак, что мы имеем:
http://i283.photobucket.com/albums/kk312/mogendovid/orange.jpg

предлагаю называть такую модель разметки шарика "апельсин" т.к. развертка напоминает срезанную кожуру.
посмотрим поближе:
http://i283.photobucket.com/albums/kk312/mogendovid/orange_closeup.jpg

по-моему это дичь.
параллели оказались кривыми, расстояние между точками сильно различается, как и направления перемещения.

разновидности гексов:
http://i283.photobucket.com/albums/kk312/mogendovid/orange_hexes.jpg

имхо пока что мячик вне конкуренции B)

swan
22.04.2010, 10:39
Да - я уже смотрел - это не вариант, но и мячик тоже вне конкуренции по странности

1. на мячике есть все варианты движения как на первых двух изображениях, только в любом вращении
2. есть кучи мест, где развилка движения идет в 5 сторон, причем на разных стыках направления отличаются
3. Нет ни одной строго зафиксированной точки откуда плясать математической логике - полюса не в счет. Придется с потолка принимать некую точку за точку 0, 0 и от неё плясать с кучей функций, вычисляющих, как X, так и Y, много дополнительных функций пересчета логики в местах, где параллели и меридианы красиво раздваиваются и начинают двигаться по диагоналям. Эту проблему можно конечно обойти "картой узлов", но тогда мы столкнемся с другой проблемой - наличие карты узлов строго привязывает размер мира к размеру карты узлов.

В общем надо думать что-нибудь, что будет более приемлемым вариантом

Peter
22.04.2010, 10:58
<div class='quotetop'>Цитата(swan * 22.4.2010, 10:39) 333816</div>

1. на мячике есть все варианты движения как на первых двух изображениях, только в любом вращении
2. есть кучи мест, где развилка движения идет в 5 сторон, причем на разных стыках направления отличаются
[/b]
1. ну не знаю.. я таких драматических перекосов при беглом просмотре не обнаружил. есть некоторое ухудшение в близи полюсов, но оно вроде бы не так ужасно как на апельсине (и в общем то терпимо).
2. "кучи мест" - их всего 12 ("полюса"). чем больше карта - тем меньше заметно будет. можно ставить в них какие нибудь непроходимые горы или типа того.

<div class='quotetop'>Цитата(swan * 22.4.2010, 10:39) 333816</div>

3. Нет ни одной строго зафиксированной точки откуда плясать математической логике - полюса не в счет. Придется с потолка принимать некую точку за точку 0, 0 и от неё плясать с кучей функций, вычисляющих, как X, так и Y, много дополнительных функций пересчета логики в местах, где параллели и меридианы красиво раздваиваются и начинают двигаться по диагоналям. Эту проблему можно конечно обойти "картой узлов", но тогда мы столкнемся с другой проблемой - наличие карты узлов строго привязывает размер мира к размеру карты узлов.

В общем надо думать что-нибудь, что будет более приемлемым вариантом
[/b]
почему же полюса не в счет?
и зачем принимать что-то за (0,0) :)
x и y можно вычислять геометрически как точку на поверхности сферы под указателем мыши и в списке (или хеш таблице) находить наиболее близкий узел.

набор миров фиксированных размеров - имхо вполне приемлемо. в циве я ни разу не создавал мир нестандартного размера хотя такая возможность присутствует со 2й версии игры. я точно не знаю но думаю подавляющее большинство игроков довольствуются предлагаемыми опциями.

PavelZ
22.04.2010, 10:58
<div class='quotetop'>Цитата</div>
но тогда мы столкнемся с другой проблемой - наличие карты узлов строго привязывает размер мира к размеру карты узлов[/b]

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

iDesperado
22.04.2010, 12:32
ат чем шестигранники аля цив5 народу не нравятся ?

Peter
22.04.2010, 12:48
ну они вроде не на сфере (очень удивлюсь если в цив 5 будет шарик суперрегистра :))

superregistr
22.04.2010, 12:52
<div class='quotetop'>Цитата</div>
x и y можно вычислять геометрически как точку на поверхности сферы под указателем мыши и в списке (или хеш таблице) находить наиболее близкий узел.[/b] :yes: так и планируется

<div class='quotetop'>Цитата</div>
Разное число разбиений дают несколько размеров мира их немного и для каждого создать карту узлов один раз не составляет большого труда, для компьютерной программы, как я уже говорил для каждого узла просчитываются координаты в параллелях и меридианах. Каждому узлу в таблице можно прописать список соседних и его координата удобной человеку системе.[/b] координаты узлов уже даются в сферической системе координат, поэтому ничего пересчитывать не нужно :bayan:

sweeper
22.04.2010, 14:35
<div class='quotetop'>Цитата(iDesperado * 22.4.2010, 14:32) 333840</div>

ат чем шестигранники аля цив5 народу не нравятся ?
[/b]Ими нельзя гладко закрыть сферу. Останется примерно 12 пятиугольных тайлов вместо шестиугольных. И это будет нонсенс для ИИ.

iDesperado
22.04.2010, 14:42
<div class='quotetop'>Цитата(sweeper * 22.4.2010, 13:35) 333877</div>

Ими нельзя гладко закрыть сферу. Останется примерно 12 пятиугольных тайлов вместо шестиугольных. И это будет нонсенс для ИИ.
[/b]
а задача именно покрыть сферу и избавиться от "полюсов" ?

Peter
22.04.2010, 14:57
<div class='quotetop'>Цитата(iDesperado * 22.4.2010, 14:42) 333878</div>

<div class='quotetop'>Цитата(sweeper * 22.4.2010, 13:35) 333877

Ими нельзя гладко закрыть сферу. Останется примерно 12 пятиугольных тайлов вместо шестиугольных. И это будет нонсенс для ИИ.
[/b]
а задача именно покрыть сферу и избавиться от "полюсов" ?
[/b][/quote]
задача разметить сферу равноотстоящими точками. полюса не особо мешают имхо.

PavelZ
22.04.2010, 15:17
<div class='quotetop'>Цитата(sweeper * 22.4.2010, 13:35) 333877</div>

<div class='quotetop'>Цитата(iDesperado * 22.4.2010, 14:32) 333840

ат чем шестигранники аля цив5 народу не нравятся ?
[/b]Ими нельзя гладко закрыть сферу. Останется примерно 12 пятиугольных тайлов вместо шестиугольных. И это будет нонсенс для ИИ.
[/b][/quote]

Опять проблема на пустом месте, главное не крылья и ноги, а хвост.

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

swan
22.04.2010, 15:26
<div class='quotetop'>Цитата</div>
x и y можно вычислять геометрически как точку на поверхности сферы под указателем мыши и в списке (или хеш таблице) находить наиболее близкий узел.[/b]
<div class='quotetop'>Цитата</div>
Разное число разбиений дают несколько размеров мира их немного и для каждого создать карту узлов один раз не составляет большого труда, для компьютерной программы, как я уже говорил для каждого узла просчитываются координаты в параллелях и меридианах. Каждому узлу в таблице можно прописать список соседних и его координата удобной человеку системе.[/b]
<div class='quotetop'>Цитата</div>
так и планируется[/b]
Так если промапить все точки кто, откуда и куда сможет перемещаться - то не понадобится и разлиновка ни на апельсин, ни на мяч - можно тупо сгенерить интервалы и проставить туда точки на которые будет накладываться графика тайлов и тогда будет без разницы - тайлы это, плоты, гексы, треугольники, да хоть кружочки

Peter
22.04.2010, 15:40
<div class='quotetop'>Цитата(swan * 22.4.2010, 15:26) 333886</div>

Так если промапить все точки кто, откуда и куда сможет перемещаться - то не понадобится и разлиновка ни на апельсин, ни на мяч - можно тупо сгенерить интервалы и проставить туда точки на которые будет накладываться графика тайлов и тогда будет без разницы - тайлы это, плоты, гексы, треугольники, да хоть кружочки
[/b]
насколько я знаю нет другого адекватного метода кроме разбивки икосаэдра (создания "мяча") для получения [с некоторой погрешностью] равноудаленных точек на поверхности сферы. разлиновка то может и не потребуется, но кол-во соседних точек для 12 точек будет равно 5 вместо 6, как ни крути.

если существует другой метод о котором я не знаю и который позволил бы получить регулярную разметку поверхности без "аномалий" - что ж это было бы прекрасно!

iDesperado
22.04.2010, 16:35
наверное еще вариантом может быть усеченный додекаэдр, типа постройки и юниты располагаются на десятиугольниках, а треугольники чисто для красоты
другое дело нужны ли такие сложности ...

akots
22.04.2010, 19:05
Согласно парадоксу Банаха-Тарского задачи имеет множественные решения. Также это подразумевает полную масштабируемость при наличии достаточно большого количества кусочков. Более того, если кусочков будет минимум 10^50, то из них можно будет составить квадрат! :lol:

Peter
23.04.2010, 09:17
<div class='quotetop'>Цитата(akots * 22.4.2010, 19:05) 333914</div>

Согласно парадоксу Банаха-Тарского задачи имеет множественные решения. Также это подразумевает полную масштабируемость при наличии достаточно большого количества кусочков. Более того, если кусочков будет минимум 10^50, то из них можно будет составить квадрат! :lol:
[/b]
это про додекаэдр?
может кто нибудь попробует с ним поиграться?

Dynamic
23.04.2010, 11:41
Что-то программа не запускается, жалуется на отсутствие mingwm10dll.

superregistr
23.04.2010, 16:00
<div class='quotetop'>Цитата(Dynamic * 23.4.2010, 11:41) 333972</div>

Что-то программа не запускается, жалуется на отсутствие mingwm10dll.
[/b]
http://mygame.civfanatics.ru/objects/mygam...4.dll.files.rar (http://mygame.civfanatics.ru/objects/mygame.projects/mygame.files/dll.files/Qt4.dll.files.rar) и будет тебе счастье :bayan: :)

<div class='quotetop'>Цитата(Peter * 23.4.2010, 9:17) 333957</div>

<div class='quotetop'>Цитата(akots * 22.4.2010, 19:05) 333914

Согласно парадоксу Банаха-Тарского задачи имеет множественные решения. Также это подразумевает полную масштабируемость при наличии достаточно большого количества кусочков. Более того, если кусочков будет минимум 10^50, то из них можно будет составить квадрат! :lol:
[/b]
это про додекаэдр?
может кто нибудь попробует с ним поиграться?
[/b][/quote]
может akots&#39;у дадим ответственное задание :)

Dynamic
23.04.2010, 16:23
Ну ты вирусяку написал... Я задал итерацию 10, так твой октагон сразу выжрал всю память и продолжал расти... пришлось убить...

swan
23.04.2010, 16:55
<div class='quotetop'>Цитата</div>
Ну ты вирусяку написал... Я задал итерацию 10, так твой октагон сразу выжрал всю память и продолжал расти... пришлось убить...[/b]
А я с 4х сразу с дури до 8 выставил - винда подумала-подумала пару минут и ушла ребутиться (без пердуперджения) :)

superregistr
23.04.2010, 17:21
<div class='quotetop'>Цитата</div>

Ну ты вирусяку написал... Я задал итерацию 10, так твой октагон сразу выжрал всю память и продолжал расти... пришлось убить...
[/b]
<div class='quotetop'>Цитата</div>
А я с 4х сразу с дури до 8 выставил - винда подумала-подумала пару минут и ушла ребутиться (без пердуперджения)
[/b]

Так кто ж так делает, надо потихоньку-полегоньку, сначала 0, потом 1, потом 2, .... а вы сразу лошадиную дозу вбухали :biglol:

PavelZ
23.04.2010, 17:42
Си ++ штука такая...

Настоятельно рекомендую попробуй функциональное программирование, Erlang к примеру вообще не имеет ограничений на количество значимых цифр. Ты бы показал исходные алгоритмы а не программу на Си ++, тогда можно бы было это реализовать на Boo или на том же Erlang. У меня плоховасто с математикой, вернее много забыл и надо ткнуть носом :)

Peter
23.04.2010, 18:07
<div class='quotetop'>Цитата(Pavel Zachesa * 23.4.2010, 17:42) 334018</div>

Си ++ штука такая...

Настоятельно рекомендую попробуй функциональное программирование, Erlang к примеру вообще не имеет ограничений на количество значимых цифр. Ты бы показал исходные алгоритмы а не программу на Си ++, тогда можно бы было это реализовать на Boo или на том же Erlang. У меня плоховасто с математикой, вернее много забыл и надо ткнуть носом :)
[/b]

нафига расчетную задачу скриптами решать?
все равно как траншею копать детским совочком блин..

superregistr
23.04.2010, 18:13
<div class='quotetop'>Цитата(Pavel Zachesa * 23.4.2010, 17:42) 334018</div>

Си ++ штука такая...
[/b]
Память и в Африке память. Каждая итерация увеличивает число треугольников в 4 раза. Поэтому хоть где пиши, но если вобьешь 157 итераций - пеняй на себя. Ихмо, зря так про Си++, необоснованно. А исходники есть, с икосаэдром, замени на октаэдр и будет тебе счастье :bayan:

PavelZ
23.04.2010, 18:14
Ну ты даёшь Erlang обозвать таким ругательством...

http://ru.wikipedia.org/wiki/Erlang

Peter
23.04.2010, 19:05
<div class='quotetop'>Цитата(Pavel Zachesa * 23.4.2010, 18:14) 334024</div>

Ну ты даёшь Erlang обозвать таким ругательством...

http://ru.wikipedia.org/wiki/Erlang
[/b]
ну и что? язык для распределенного программирования.. каким боком оно тут?

superregistr
23.04.2010, 20:00
<div class='quotetop'>Цитата</div>
Язык включает в себя средства порождения параллельных процессов и их коммуникации с помощью асинхронных сообщений.[/b] Итерации на то и итерации, что их не распараллелишь :)

PavelZ
24.04.2010, 03:34
Как ни странно звучит, но множество последовательных алгоритмов можно представить в функциональном стиле. Я конечно не такой уж спец в этом к сожалению, но возможно задачу построения сферы из треугольников можно решить как-то иначе. Надо кстати засесть за книжки и вспомнить некоторые формулы...

http://dic.academic.ru/dic.nsf/bse/137372/...%BA%D0%B0%D1%8F (http://dic.academic.ru/dic.nsf/bse/137372/%D0%A1%D1%84%D0%B5%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F)

Peter
24.04.2010, 08:57
<div class='quotetop'>Цитата(Pavel Zachesa * 24.4.2010, 3:34) 334060</div>

Как ни странно звучит, но множество последовательных алгоритмов можно представить в функциональном стиле.
[/b]
а зачем?

PavelZ
24.04.2010, 11:43
<div class='quotetop'>Цитата(Peter * 24.4.2010, 7:57) 334072</div>

<div class='quotetop'>Цитата(Pavel Zachesa * 24.4.2010, 3:34) 334060

Как ни странно звучит, но множество последовательных алгоритмов можно представить в функциональном стиле.
[/b]
а зачем?
[/b][/quote]
Ты удивишься, тогда они смогут работать быстрее, в том числе и за счёт распределённых вычислений. Кстати, если не знаете, мозг работает именно так. И многие попытки реализации нейронных сетей потому малоэффективны, что делаются они привычными программистам средствами, просто потому что классический компьютер -- последовательная машина. Появление многопроцессорных систем пока не подхвачено должным образом на программном уровне. Кстати это видно на примере любимых мной игры X3 и движка Unity, их создатели напрочь забыли о том что два ядра в системе уже обычное явление.

В моём новом компьютере их 4...

Peter
24.04.2010, 12:38
<div class='quotetop'>Цитата(Pavel Zachesa * 24.4.2010, 11:43) 334076</div>

Ты удивишься, тогда они смогут работать быстрее
[/b]
ну ка расскажи мне как стиль программирования связан с производительностью
и как ты собираешься распараллеливать итерационное разбиение икосаэдра

PavelZ
24.04.2010, 15:14
Сдался мне этот икосаэдр. Да весь прикол в том, что свет клином на итерациях не сошёлся...

Кстати http://freezart.ru/freez/047/90/

Peter
24.04.2010, 16:18
<div class='quotetop'>Цитата(Pavel Zachesa * 24.4.2010, 15:14) 334087</div>

Сдался мне этот икосаэдр. Да весь прикол в том, что свет клином на итерациях не сошёлся...
[/b]
ну сделай по другому а мы посмотрим. пока что складывается впечатление что ты только трындеть можешь не разбираясь в теме при этом совершенно.
что же ты предлагаешь вместо "итераций"? конкретный алгоритм.. думаешь тут лохи сидят которых можно кормить случайными наборами "умных слов"?

swan
24.04.2010, 16:59
Peter - :bang:
Не переходим на личности

PavelZ
24.04.2010, 17:36
<div class='quotetop'>Цитата(Peter * 24.4.2010, 11:38) 334082</div>

<div class='quotetop'>Цитата(Pavel Zachesa * 24.4.2010, 11:43) 334076

Ты удивишься, тогда они смогут работать быстрее
[/b]
ну ка расскажи мне как стиль программирования связан с производительностью
и как ты собираешься распараллеливать итерационное разбиение икосаэдра
[/b][/quote]
Это не мои "умные слова"...

У икосаэдра 20 вершин, ещё мне интересно совмещение икосаэдра с додекаэдром, получается тело имеющее 60 вершин. Оба варианта дают первоначальное разбиение сферы (описанной вокруг них по вершинам) соответственно на 20 и 60 сферических треугольников.

А теперь о триангуляции сферы, здесь нам надо найти сферические координаты каждого узла. Что и делает программа последовательно. Что нам мешает запустить несколько процессов находящих координаты при делении каждого из 20 или 60 сферических треугольника параллельно? А потом запустить 20*4**n или 60*4**n раз процессов одновременно?

swan
24.04.2010, 17:55
<div class='quotetop'>Цитата</div>
Что нам мешает запустить несколько процессов находящих координаты при делении каждого из 20 или 60 сферических треугольника параллельно? А потом запустить 20*4**n или 60*4**n раз процессов одновременно?[/b]
В прнципе ничего не мешает... кроме законов физики ;) :biglol:

PavelZ
24.04.2010, 18:42
<div class='quotetop'>Цитата(swan * 24.4.2010, 16:55) 334098</div>

<div class='quotetop'>Цитата
Что нам мешает запустить несколько процессов находящих координаты при делении каждого из 20 или 60 сферических треугольника параллельно? А потом запустить 20*4**n или 60*4**n раз процессов одновременно?[/b]
В прнципе ничего не мешает... кроме законов физики ;) :biglol:
[/b][/quote]
Физика не запрещает иметь 60 ядров процессору или больше :) Не все задачи поддаются распараллеливанию, но многие из них -- да в том числе и нахождение координат узлов нашего шарика. Это я и показал, а сколько процессов задействовать одновременно должна решать система исходя из своих возможностей или хотя бы программист пишущий задачу.

Dynamic
24.04.2010, 19:24
Не знаю точно, как построение каркаса, но наложение текстур и расчет освещенности точно хорошо распараллеливается, иначе не было бы толку от современных видеокарт, набирающих свои гига и террафлопсы именно за счет интенсивных параллельных вычислений.

swan
24.04.2010, 19:31
<div class='quotetop'>Цитата</div>
Физика не запрещает иметь 60 ядров процессору или больше[/b]
Нобелевскую премию в студию, а то в лабораториях "Интел" и АМД оказывается сидит ламерьё, которое не знает законов физики

Даже 2 нобеля - один по физике, а второй по литеретуре :biglol: За новое слово "ядров"

Dynamic
24.04.2010, 19:47
<div class='quotetop'>Цитата(swan * 24.4.2010, 18:31) 334106</div>

<div class='quotetop'>Цитата
Физика не запрещает иметь 60 ядров процессору или больше[/b]
Нобелевскую премию в студию, а то в лабораториях "Интел" и АМД оказывается сидит ламерьё, которое не знает законов физики

Даже 2 нобеля - один по физике, а второй по литеретуре :biglol: За новое слово "ядров"
[/b][/quote]
Ну, у Интела был уже год или 2 назад ради интереса сделан 80-и ядерный проц, ядра х86, хотя и простые, класса пенька. На нем пока обкатывают технологии распараллеливания.

swan
24.04.2010, 19:58
<div class='quotetop'>Цитата</div>
Ну, у Интела был уже год или 2 назад ради интереса сделан 80-и ядерный проц, ядра х86, хотя и простые, класса пенька. На нем пока обкатывают технологии распараллеливания.[/b]
То, что опытный образец существует - это не означает, что в массовое производство пускать можно - Первые образцы двухъядерных камней были ещё в 90х, а в практическое применение и тем более массовое производство всё-таки они пошли с продвижением уровня технологий спустя порядка 10 лет.

Dynamic
24.04.2010, 20:15
<div class='quotetop'>Цитата(swan * 24.4.2010, 18:58) 334108</div>

<div class='quotetop'>Цитата
Ну, у Интела был уже год или 2 назад ради интереса сделан 80-и ядерный проц, ядра х86, хотя и простые, класса пенька. На нем пока обкатывают технологии распараллеливания.[/b]
То, что опытный образец существует - это не означает, что в массовое производство пускать можно - Первые образцы двухъядерных камней были ещё в 90х, а в практическое применение и тем более массовое производство всё-таки они пошли с продвижением уровня технологий спустя порядка 10 лет.
[/b][/quote]
Не о том спорите, сейчас уже не столь важно, сколько ядер, главное - их достаточно много, чтобы дизайн приложений должен был разрабатываться исходя из принципа многопоточности, причем неважно, сколько потоков (чем больше, тем лучше), операционная система сама запустит параллельно столько процессов, сколько будет оптимально для имеющегося железа.

superregistr
24.04.2010, 20:42
<div class='quotetop'>Цитата(Pavel Zachesa * 24.4.2010, 15:14) 334087</div>

Да весь прикол в том, что свет клином на итерациях не сошёлся...
[/b]
Не спорю, что сферу можно построить без итераций одной формулой, но ты ее вывел? ;)

А между тем необходимо построить алгоритмы нахождения ближайшего узла по координате мыши. Вот думается мне, лучше разбить фигуру на сегменты и каждому сегменту прописать какие узлы в него входят.

Другой вариант, работать с треугольниками. В этом случае нужно определить, какой треугольник "прошибает" точка мыши.

sweeper
24.04.2010, 22:51
<div class='quotetop'>Цитата(Dynamic * 24.4.2010, 22:15) 334110</div>

Не о том спорите, сейчас уже не столь важно, сколько ядер, главное - их достаточно много, чтобы дизайн приложений должен был разрабатываться исходя из принципа многопоточности, причем неважно, сколько потоков (чем больше, тем лучше), операционная система сама запустит параллельно столько процессов, сколько будет оптимально для имеющегося железа.[/b]Даже на одном процессоре на незагруженной машине имеется 20..50 процессов, предназначенных для одновременного исполнения. То есть многопоточный дизайн операционной системы - уже давно реальность. Далее. Производительность процессора сама по себе уже давно ничего не решает. Узкое место уже давно - интерфейс с оперативной памятью, с целью захмурения названной RAM. Многопоточное решение, исполняющееся на разных ядрах, вызовет к жизни проблемы синхронизации между потоками, когерентности кеша, а если кеша недостаточно (менее определенного процента от объема ОЗУ), он парадоксально начинает тормозить. Решения, применяемые для повышения производительности существующих систем, лично мне напомнили игру DOOM - все проблемы нашествия инопланетной и потусторонней нечисти американцы пытаются решать огнестрельным оружием. Так и проблемы медленного ОЗУ пытаются решать ускорением при последовательной обработке, как будто все алгоритмы - это алгоритмы последовательного перебора.

Возьмем, например, достаточно современную hynix PC2-6400U-555-12. Ключевое значение скорости здесь - 6400. Что оно означает? Если вы думаете, что это количество обращений по разным адресам в миллионах обращений в секунду, так нет. Указанное число получилось умножением числа 8 (число параллельных восьмиразрядных слов) на 800 мегагерц.

Если вы думаете, что 800 мегагерц задает 800 миллионов обращений по разным адресам в секунду, так это тоже не так. 800 MHz здесь - частота выборки последовательно расположенных данных. Для произвольных данных (буква R в слове RAM) нужно отдать 5 тактов на формирование RAS, 5 тактов на формирование CAS, потом еще подождать, пока данные будут готовы. Итого 11 тактов, то есть для произвольного адреса данные будут поступать с частотой 800/11=72.7Мгц. Также имеем в виду, что данные последовательно читаются и пишутся в ОЗУ, пусть не каждое слово, пусть на три чтения происходит одна запись. Переход со чтения на запись - 8 тактов. Итого имеем время:
11+11+11+8+11+8=60 тактов на 3 чтения и запись, в среднем 20 тактов на операцию. В результате получается, что от хваленых 800МГц у нас осталось всего 40. Умножаем на ширину слова - получается 320 Мб/сек. Однако сравнить это число с реальной производительностью процессора невозможно - производительность процессора сейчас меряется не в миллионах операций в секунду, не в мегагерцах, а в кризисах, сталкерах и FPS. Но давайте порассуждаем. Процессор Интел с тактовой частотой 3ГГц наводит на мысль о скорости в 3млрд оп/с. Это, разумеется, неверно: процессор не исполняет одну инструкцию за один такт. Однако в документации 1999 года указано, что PentiumIII на частоте 500МГц дает 1000 MIPS, то есть одну операцию за 1 наносекунду. Но данные в процессор подаются за 25 наносекунд - остальное время процессор простаивает. Или выполняет операции над соседними ячейками - при последовательном доступе можно немного поднять производительность.

Что у нас там осталось? Виртуальная память? В предельном случае каждое обращение к произвольной ячейке в физической памяти вызывает еще два обращения к ОЗУ (некешированных) для доступа к данным TLB. В результате производительность системы шина+память падает еще в три раза.

Dynamic
24.04.2010, 23:22
Sweeper, не надо пугать людей. Ты рассмотрел крайние случаи, случающиеся очень редко, точнее, при загрузке программы при первом заполнении кэша. Давно установлено, что большинство обращений к памяти являются последовательными, также основная часть времени при математических операциях над массивами данных циклична и этот кусок кода, а часто и данных легко помещается в кэши процессора. И даже для многих процессов. Кэши, в свою очередь, обладают способностью кэшировать разные регионы памяти, хотя их ассоциативность и ограничена. TLB также кэшируется.
Разумеется, заявленные показатели производительности Процессоров, Видеакарт, Памяти и т.д. отражают их максимально достижимые характеристики. Реальные несколько ниже, но вовсе не настолько, как ты пытаешься рассказать.

sweeper
24.04.2010, 23:47
А если народ не попугаешь, он так и будет считать, что ничего лучше Интела нет.
Кэш - это костыли для изначально убогой архитектуры. Лучше бы всю память сделали по производительности как кэш и разместили бы на том же кристалле, что и процессор. На выводах бы сэкономили. Нет места на кристалле? Может, тогда не надо 15-байтные команды интеловской архитектуры декодировать, а ограничиться 2-4-6-байтовыми командами типа RISC? Глядишь, место и освободилось бы за счет уменьшения масочной памяти микропрограмм...
<div class='quotetop'>Цитата</div>
также основная часть времени при математических операциях над массивами данных циклична[/b]Еще раз спрашиваю, кто вам сказал, что программирование сводится к обработке массивов слева направо и сверху вниз? Как насчет действительно эффективных алгоритмов типа B-дерева?<div class='quotetop'>Цитата</div>
Реальные несколько ниже, но вовсе не настолько, как ты пытаешься рассказать.[/b]Хорошо, согласен. А реальные данные где-то можно найти? Сравнить с Креем? Или как будем считать: P4 показывает 32 FPS на сталкере, а на крее сталкер вообще не идет, значит крей не компьютер?

superregistr
25.04.2010, 00:15
Может в другое место перейдете? :huh1:

Dynamic
25.04.2010, 00:44
Да, возможно, не стоит, хотя мне есть что сказать, т.к. это мой конек.

PavelZ
25.04.2010, 07:29
<div class='quotetop'>Цитата(superregistr * 24.4.2010, 23:15) 334126</div>

Может в другое место перейдете? :huh1:
[/b]
Да вроде все уже по умничали... Впрочем можно сделать отдельную тему, куда перенести ветку о железных моментах.

Кстати superregistr можешь составить табличку угловых (сферических) координат вершин для икосаэдра и додекаэдра? У меня мозгов не хватает (скорее всего лень) посчитать. Но желательно в радианах типа Пи/2 и так далее если есть такая возможность, чтоб не потерять в точности. Пожалуйста, очень прошу!

Или хотя бы носом ткнуть в соответствующие тригонометрические соотношения...

Кстати шарик твой после 7 ит. http://zp3.biz/sites/default/files/7_sharik.jpg

superregistr
25.04.2010, 11:50
<div class='quotetop'>Цитата(Pavel Zachesa * 25.4.2010, 7:29) 334130</div>

<div class='quotetop'>Цитата(superregistr * 24.4.2010, 23:15) 334126

Может в другое место перейдете? :huh1:
[/b]
Кстати шарик твой после 7 ит. http://zp3.biz/sites/default/files/7_sharik.jpg
[/b][/quote]
Нормальный такой шарик, чтобы вместить 1000 игроков :)))

<div class='quotetop'>Цитата</div>
угловых (сферических) координат вершин для икосаэдра[/b] в исходнике: первым делом задаю сферические координаты икосаэдра относительно центра, если что ;)
[code]
#inсludе <math.h>
...

const static float R=0.75; // радиус сферы // глобальная переменная
const static float pi=3.141593, k=pi/180; // глобальная переменная

...

PavelZ
25.04.2010, 12:30
У тебя тэта в радианах, а фи в градусах, некошерно как-то :) меня это запутало. Впрочем всё равно спасибо, по икосаэдру всё стало на свои места.

Мне нужен не сам додекаэдр а фигура производная от него когда точка в центре каждой грани, проецируется на описанную сферу. После соединения проектируемой точки с соседними вершинами додекаэдра дугами, вместе с дугами образованными соединением смежных вершин между собой происходит триангуляция сферы на 60 сферических треугольников.

Суть в том, что для генерации планет, необходима базовая ячейка, тот же узел, с описанной вокруг областью, примерно одинаковой площади в не зависимости от размера самой планеты. Поэтому я беру фиксированный набор узлов из расчёта 20*4**n и 60*4**n подбирая подходящий к сгенерированному (взятому из жизни касаемо Солнечной системы) размеру каждой конкретно взятой планеты.

PavelZ
25.04.2010, 14:26
Ха нашёл вроде бы то что нужно http://www.abitu.ru/en2002/closed/viewwork.html?work=54

Блин, но там не сферических координатах :(

Да и я забыл уточнить, что подбор делать можно по площади поверхности.

superregistr
25.04.2010, 14:44
<div class='quotetop'>Цитата</div>
Блин, но там не сферических координатах[/b]
[code]

PavelZ
25.04.2010, 14:56
Спасибо огромное, дальше наверное у меня хватит мозгов :)

superregistr
28.04.2010, 15:50
Разработал алгоритм поиска узла или треугольника на сфере через координату мыши на экране.

Пусть мы имеем следующий рисунок:
[attachmentid=6534]
На нем изображена фигура и ее проекция на экран монитора. Фигура расположена так, что ось y перпендикулярна плоскости экрана и смотрит из экрана.

Далее производим любое вращение сферы. Для простоты на следующем рисунке изображен поворот вокруг оси z.
[attachmentid=6535]

Далее мы должны сформировать матрицу M&#39; точек в новой системе координат x&#39;, y&#39;, z&#39; (ось y&#39; по прежнему перпендикулярна плоскости экрана и смотрит из экрана). Далее создаем дополнительную матрицу M&#39;&#39; новых точек так, чтобы в нее входили только точки с положительными координатами y&#39; (y&#39;>0). Тем самым мы отбросим все ненужные точки, которые находятся "по ту сторону экрана" - "beyond the screen" - они нам пока ненужны.

Далее проецируем точки матрицы M&#39;&#39; на плоскость экрана, переводим их в систему координат экрана и создаем эту матрицу точек M&#39;&#39;&#39;. Теперь осталось перебрать все точки матрицы M&#39;&#39;&#39; и найти ближайшую к координате мыши на экране.

Так как точек матрицы M&#39;&#39;&#39; может быть достаточно много, то можно упростить задачу. Экран разбить на сектора
[attachmentid=6536]
При переходе M&#39;&#39; --> M&#39;&#39;&#39; соответственно точки нужно распределять по своим секторам. Теперь нам нужно перебирать не все точки, а для начала перебрать все сектора. И уже в данном секторе перебрать оставшиеся точки.

При необходимости сектора можно разбивать опять на сектора. Логичным кажется делать так: число разбиений сектора на сектора, сектора на сектора и т.д. связать с числом итераций.

В случае треугольника нужно создать матрицу серединных точек треугольника и оперировать с ними таким же образом.
:.V.:

Интересно услышать отзывы и предложения.

sweeper
28.04.2010, 16:03
<div class='quotetop'>Цитата(superregistr * 28.4.2010, 17:50) 334540</div>

Интересно услышать отзывы и предложения.
[/b]Уверен?

Тогда слушай, о тролль. При рисовании любого тайла на экране ты знаешь, что это за тайл. И ты знаешь, где ты его рисуешь. Заведи массив с размерами, равными экрану. При рисовании тайла помещай код (указатель, хэш, номер), однозначно идентифицирующий тайл, в каждый элемент этого массива, который соответствует той точке на экране, которая будет принадлежать тайлу. Тогда после отрисовки весь массив заполнится кодами тайлов. Теперь если кликнуть на экран, координаты мыши в момент клика дадут координаты по массиву, а элемент на пересечении даст код(указатель, хэш, номер) тайла.

Этой технологии - двадцать лет, если не больше. А афинные преобразования превратят твой пентиум-600 в синклер-85.

superregistr
28.04.2010, 16:22
<div class='quotetop'>Цитата(sweeper * 28.4.2010, 16:03) 334541</div>

Тогда слушай, о тролль.
[/b]
:nono: обижаешь :no: понятие троллинга является риторическим. в принципе любого, кто что-то говорит, можно обвинить в троллинге и самое ужасное - доказать это :shock: :umnik:

<div class='quotetop'>Цитата(sweeper * 28.4.2010, 16:03) 334541</div>

При рисовании любого тайла на экране ты знаешь, что это за тайл. И ты знаешь, где ты его рисуешь. Заведи массив с размерами, равными экрану. При рисовании тайла помещай код (указатель, хэш, номер), однозначно идентифицирующий тайл, в каждый элемент этого массива, который соответствует той точке на экране, которая будет принадлежать тайлу. Тогда после отрисовки весь массив заполнится кодами тайлов. Теперь если кликнуть на экран, координаты мыши в момент клика дадут координаты по массиву, а элемент на пересечении даст код(указатель, хэш, номер) тайла.

Этой технологии - двадцать лет, если не больше. А афинные преобразования превратят твой пентиум-600 в синклер-85.
[/b]
Хм, не знал, так действительно выходит быстрее :w00t: Спасибо за совет! :applau2: ;)

superregistr
28.04.2010, 16:34
<div class='quotetop'>Цитата</div>
При рисовании тайла помещай код (указатель, хэш, номер), однозначно идентифицирующий тайл, в каждый элемент этого массива, который соответствует той точке на экране, которая будет принадлежать тайлу[/b]
Но здесь я знаю только три точки треугольника, остальное рассчитывает машина :huh1: Непонятно как площадь треугольника перевести в пиксели экрана. К тому же я не знаю, что попадает на экран, а что нет.

superregistr
28.04.2010, 16:44
<div class='quotetop'>Цитата</div>
Но здесь я знаю только три точки треугольника, остальное рассчитывает машина. Непонятно как площадь треугольника перевести в пиксели экрана.[/b] Это еще можно сообразить как сделать.

Но здесь:
<div class='quotetop'>Цитата</div>
К тому же я не знаю, что попадает на экран, а что нет.[/b]
я не смогу обойтись без аффинных преобразований, так как не знаю, что отображается на экране, а что нет.

swan
28.04.2010, 16:47
Приплыли - теперь суперрегистр отвечает самому себе :shock:

ЮСИИИИИИИИИК - ты где? Тут пациент наклевывается :biglol:

superregistr
28.04.2010, 16:50
<div class='quotetop'>Цитата</div>
я не смогу обойтись без аффинных преобразований, так как не знаю, что отображается на экране, а что нет.[/b]
Так как у меня все точки в сферической системе координат, то наверно смогу с помощью углов поворота выделять только те, что отображаются. В любом случае надо попробовать, спасибо, свиппер.

swan
28.04.2010, 16:50
<div class='quotetop'>Цитата</div>
lac.gif обижаешь no.gif понятие троллинга является риторическим. в принципе любого, кто что-то говорит, можно обвинить в троллинге и самое ужасное - доказать это shock2.gif umnik.gif [/b]
Вот мы как теперь заговорили :biglol:

superregistr
28.04.2010, 16:55
swan, любезно попрошу не флудить. для этого есть соответствующие темы :yes:

PavelZ
28.04.2010, 18:00
Не силён в опенЖЛ, но вроде там есть функции для обработки указателя мыши, куда она приползла и так далее?

superregistr
28.04.2010, 18:12
<div class='quotetop'>Цитата(Pavel Zachesa * 28.4.2010, 18:00) 334560</div>

Не силён в опенЖЛ, но вроде там есть функции для обработки указателя мыши, куда она приползла и так далее?
[/b]
В OpenGL-ской библиотеке GLUT я знаю есть функция для обработки событий мыши, но находит экранные координаты, про ту, что ты имеешь в виду - не знаю.

superregistr
28.04.2010, 21:36
Вообще то ОпенГЛ автоматически формирует матрицу типа той, про которую говорил свиппер. Она и передается на монитор. Поэтому самый продуктивный способ - это работать непосредственно с ней, но я пока в этом не разбираюсь :secret:

Peter
29.04.2010, 09:40
ребята ну вы чего.. :huh1:
задачка на знание школьной геометрии..
1. узнаем мировые координаты курсора (например на ближней плоскости отсечения) средствами графической библиотеки.
2. исходя из параметров сферы (координаты центра, радиус) и координат курсора находим точку на сфере через которую проходит прямая от курсора до центра.
3. выбираем начальное приближение, например полюс.
4. выбираем соседа, наиболее близкого к точке из (2). он становится новым приближением.
5. повторяем пункт 4 до тех пор пока расстояние не перестанет уменьшаться.
http://i283.photobucket.com/albums/kk312/mogendovid/sphere1.jpg
a - точка на сфере под курсором; N - полюс

для пункта 5 наверняка есть более эффективный алгоритм, просто написал что первое в голову пришло

superregistr
02.05.2010, 15:21
:secret: Peter, все уже предусмотрено в методах OpenGL для выбора объекта на сцене, например, с помощью указателя мыши. Pavel Zachesa был прав.

Peter
04.05.2010, 08:19
<div class='quotetop'>Цитата(superregistr * 2.5.2010, 15:21) 334909</div>

:secret: Peter, все уже предусмотрено в методах OpenGL для выбора объекта на сцене, например, с помощью указателя мыши. Pavel Zachesa был прав.
[/b]
какого объекта? сферы чтоль?
узлы сетки это не объекты open gl

PavelZ
04.05.2010, 12:42
<div class='quotetop'>Цитата</div>
узлы сетки это не объекты open gl[/b]
Может быть вершины многогранника являются таковыми?
(Узлы, в нашем случае, на сколько мне не изменяет память, есть вершины некого многогранника.)

Кстати, чтоб движок не тормозил, надо вводить в экранную область только видимые вершины. Также в зависимости от масштаба использовать подходящие итерации, возможно даже в зависимости от фокуса, к примеру те что прямо перед нами в более высоком разрешении, а те что ближе к "горизонту" в меньшем.

superregistr
04.05.2010, 13:20
<div class='quotetop'>Цитата</div>
какого объекта? сферы чтоль?[/b]
Вообщем и узлы могут выступать как отдельный объект сцены, тогда опенгл будет находить ближайший узел-объект. Но я планирую сделать объектами треугольники. Через конструкторы С++, в которых они будут определяться опенгл-скими методами. Мне кажется, это будет и наиболее логично.

superregistr
04.05.2010, 13:38
<div class='quotetop'>Цитата</div>
узлы сетки это не объекты open gl[/b]
Ну да, с учетом того, что опенгл не объектно-ориентирован, то там не может быть объектов в том смысле, в котором мы привыкли понимать :) Объектом (трехмерным) там понимается какая-либо простая или составная фигура. Подробно можно прочитать в книге, не помню авторов, OpenGL. Суперкнига, 3-ее издание.

Peter
04.05.2010, 13:47
я работал с опен гл меня не требуется просвещать

<div class='quotetop'>Цитата(superregistr * 4.5.2010, 13:20) 335043</div>

Но я планирую сделать объектами треугольники.
[/b]
:huh: ну удачи

superregistr
04.05.2010, 13:55
<div class='quotetop'>Цитата(Peter * 4.5.2010, 13:47) 335046</div>

я работал с опен гл меня не требуется просвещать

<div class='quotetop'>Цитата(superregistr * 4.5.2010, 13:20) 335043

Но я планирую сделать объектами треугольники.
[/b]
:huh: ну удачи
[/b][/quote]
Теоретически, через треугольники выполнение процесса будет быстрее.

Peter
04.05.2010, 14:45
1. я не думаю что создание 10000+ треугольников это эффективное решение. и я практически уверен в том что это не будет работать быстрее чем элементарная геометрия.
2. выбор треугольника не решает проблему выбора узла.

в прочем делай как хочешь твое право)