PDA

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



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

superregistr
04.05.2010, 15:41
<div class='quotetop'>Цитата(Peter * 4.5.2010, 14:45) 335058</div>

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

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

superregistr
04.05.2010, 15:56
<div class='quotetop'>Цитата</div>
Кстати, чтоб движок не тормозил, надо вводить в экранную область только видимые вершины.[/b] Это самим собой разумеется. Как раз в библиотеке GLUT есть такие методы. У меня в проге строится только внешняя поверхность треугольника, внутренняя не строится, что экономит ресурс видеокарты в 2 раза. На счет остального, думаю, это ненужные излишества.

PavelZ
04.05.2010, 21:49
<div class='quotetop'>Цитата(superregistr * 4.5.2010, 14:56) 335062</div>

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

Гость
05.05.2010, 22:13
<div class='quotetop'>Цитата(sweeper * 28.4.2010, 16:03) 334541</div>
афинные преобразования[/b]
(не могу молчать :bayan: ) аффинные

<div class='quotetop'>Цитата(superregistr * 28.4.2010, 16:44) 334546</div>
я не смогу обойтись без аффинных преобразований[/b]
а ты тактичный :bayan:

Дядька
06.05.2010, 19:07
<div class='quotetop'>Цитата(superregistr * 3.5.2010, 22:38) 334987</div>

<div class='quotetop'>Цитата(Дядька * 3.5.2010, 20:19) 334970

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

Peter
07.05.2010, 08:24
<div class='quotetop'>Цитата(Дядька * 6.5.2010, 19:07) 335330</div>

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

Дядька
07.05.2010, 11:10
<div class='quotetop'>Цитата(Peter * 7.5.2010, 7:24) 335366</div>

было бы интересно узнать подробности :)
полярные координаты - зачем они? если есть узлы, можно привязываться к ним..
[/b]
подробности вечерком,
<strike>полярные</strike> сферические координаты для использования геометрии на сфере:
http://bse.sci-lib.com/article107979.html
http://wapedia.mobi/ru/%D0%A1%D1%84%D0%B5%D1%80%D0%B0
полезно для определения расстояний, построения кривых,
наверняка есть численные методы для сферической системы координат (построение кривых),
удобно использовать как тайловую систему координат (юниты) так и сферическую (генерация карты),
кстати, как индексировать тайлы собираетесь ?

superregistr
07.05.2010, 11:17
<div class='quotetop'>Цитата(Дядька * 6.5.2010, 19:07) 335330</div>

<div class='quotetop'>Цитата(superregistr * 3.5.2010, 22:38) 334987

<div class='quotetop'>Цитата(Дядька * 3.5.2010, 20:19) 334970

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

ЗЫ Интересно, почитаю.

<div class='quotetop'>Цитата</div>
еще раньше написал алгоритм для генерации карты (с климатом, ландшафтом и реками) - красиво получалось, но увы для 2D[/b] программку в студию

Дядька
07.05.2010, 11:46
<div class='quotetop'>Цитата(superregistr * 7.5.2010, 10:17) 335381</div>

программку в студию
[/b]
программка была на VBA, прошло очень много времени, скорее всего не сохранилась, но алгоритм в общих чертах помню:
сейчас нет времени на подробности:
строятся 6 +/- n континентов = центральная линия -> полином (горный хребет, имеет разную ширину и высоту вдоль длины) + 2 береговые линии (полиномы), западная кривая гораздо ближе к хребту,
также строим несколько (10...15 шт) крупных островов типа Мадагаскар,
климат в виде кривых вокруг определенных широт (северная, южная границы), границы зон могут пересекаться, зоны даже могут поглощать промежуточные.
реки от хребта в сторону большей площади, центральная линия реки _|_ ц.л. континента, дальше та же схема что и для хребта континента,
высоты - максимальные на хребте (высоты хребта = полином), потом плавное снижение вдоль русел к океану, долины рек: западный берег высокий, восточный низкий и сглаживаем к ближайшей реке,
реки рисуем только после отрисовки всех континентов и островов (т.к. они могут налезать друг на друга, образуя всякие пангеи)

PavelZ
07.05.2010, 12:04
<div class='quotetop'>Цитата</div>
строятся 6 +/- n континентов = центральная линия -> полином (горный хребет, имеет разную ширину и высоту вдоль длины) + 2 береговые линии (полиномы), западная кривая гораздо ближе к хребту,
также строим несколько (10...15 шт) крупных островов типа Мадагаскар,
климат в виде кривых вокруг определенных широт (северная, южная границы), границы зон могут пересекаться, зоны даже могут поглощать промежуточные.
реки от хребта в сторону большей площади, центральная линия реки _|_ ц.л. континента, дальше та же схема что и для хребта континента,
высоты - максимальные на хребте (высоты хребта = полином), потом плавное снижение вдоль русел к океану, долины рек: западный берег высокий, восточный низкий и сглаживаем к ближайшей реке,
реки рисуем только после отрисовки всех континентов и островов (т.к. они могут налезать друг на друга, образуя всякие пангеи)[/b]
Да сильно кратенько, но возможно пригодится для уточнения некоторых спорных ;) моментов...

Peter
07.05.2010, 12:06
<div class='quotetop'>Цитата(Дядька * 7.5.2010, 11:10) 335378</div>

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

<div class='quotetop'>Цитата(Дядька * 7.5.2010, 11:10) 335378</div>

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

PavelZ
07.05.2010, 12:11
Говорила мне мама учи математику.........<div class='quotetop'>Цитата</div>
полином[/b]


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

superregistr
07.05.2010, 12:32
<div class='quotetop'>Цитата(Peter * 7.5.2010, 12:06) 335393</div>

<div class='quotetop'>Цитата(Дядька * 7.5.2010, 11:10) 335378

кстати, как индексировать тайлы собираетесь ? [/b]
зы: с суперрегистром разные взгляды у нас на эту тему.
[/b][/quote]

У меня будут три матрицы, просто матрицы-строки:

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

2-матрица: координаты треугольников (i-ого треугольника) в номерах узлов, обеспечивают связь треугольник --> его узлы (построено).

3-матрица: номера треугольников, окружающие узел (i-ый узел), обеспечивают связь узел --> содержащие его треугольники (предстоит построить).

Так организуется взаимнообратная видемость. Каждый треугольник видит свои узлы. Каждый узел видит свои треугольники. Таким образом, тайл видит соседний тайл.

Дядька
07.05.2010, 12:35
<div class='quotetop'>Цитата(Peter * 7.5.2010, 11:06) 335393</div>

я сам предполагал использование "клеточных" алгоритмов, чтобы география генерилась итерационно от одного узла к другому. подобно тому как дифференцируются клетки при развитии организма.
[/b]
пробовал - получается как в CTP с кучей дырок, мое больше на глобус смахивает :shy2:

<div class='quotetop'>Цитата(Peter * 7.5.2010, 11:06) 335393</div>

<div class='quotetop'>Цитата(Дядька * 7.5.2010, 11:10) 335378

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

Дядька
07.05.2010, 12:46
<div class='quotetop'>Цитата(superregistr * 7.5.2010, 11:32) 335398</div>

<div class='quotetop'>Цитата(Peter * 7.5.2010, 12:06) 335393

<div class='quotetop'>Цитата(Дядька * 7.5.2010, 11:10) 335378

кстати, как индексировать тайлы собираетесь ? [/b]
зы: с суперрегистром разные взгляды у нас на эту тему.
[/b][/quote]

У меня будут три матрицы, просто матрицы-строки:

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

2-матрица: координаты треугольников (i-ого треугольника) в номерах узлов, обеспечивают связь треугольник --> его узлы (построено).

3-матрица: номера треугольников, окружающие узел (i-ый узел), обеспечивают связь узел --> содержащие его треугольники (предстоит построить).

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

Peter
07.05.2010, 12:46
<div class='quotetop'>Цитата(Дядька * 7.5.2010, 12:35) 335399</div>

пробовал - получается как в CTP с кучей дырок, мое больше на глобус смахивает :shy2:
[/b]
каких дырок :)

<div class='quotetop'>Цитата(Peter * 7.5.2010, 11:06) 335393</div>

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

superregistr
07.05.2010, 12:59
<div class='quotetop'>Цитата(Дядька * 7.5.2010, 12:35) 335399</div>

<div class='quotetop'>Цитата(Peter * 7.5.2010, 11:06) 335393

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

<div class='quotetop'>Цитата(Дядька * 7.5.2010, 12:46) 335402</div>

прикинь, сколько тебе придется перебрать узлов, чтобы проверить и найти оптимальный путь, если морской или сухопутный юнит отправится на другой конец шарика;
в Иксах такая задача решается, но там всего 300 секторов, а тут несколько тысяч тайлов, узлов еще больше.
[/b]
Здесь разные методы можно придумать. Мой самый любимый: самообучение по принципу человека. Когда человек смотрит на карту, он же не перебирает все узлы или треугольники подряд. А вообще задачка смахивает на нахождение функционалов с последущим их запоминаем.

<div class='quotetop'>Цитата(Дядька * 7.5.2010, 12:46) 335402</div>

прикинь, сколько тебе придется перебрать узлов, чтобы проверить и найти оптимальный путь, если морской или сухопутный юнит отправится на другой конец шарика;
в Иксах такая задача решается, но там всего 300 секторов, а тут несколько тысяч тайлов, узлов еще больше.
[/b]
Кстати, а в цив4 разве не так делается? Та же самая задача.

Peter
07.05.2010, 13:11
<div class='quotetop'>Цитата(superregistr * 7.5.2010, 12:59) 335404</div>

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

superregistr
07.05.2010, 13:16
<div class='quotetop'>Цитата(Peter * 7.5.2010, 13:11) 335407</div>

<div class='quotetop'>Цитата(superregistr * 7.5.2010, 12:59) 335404

Здесь разные методы можно придумать. Мой самый любимый: самообучение по принципу человека. Когда человек смотрит на карту, он же не перебирает все узлы или треугольники подряд.
[/b]
за него это компьютер делает :secret:
находит оптимальный маршрут
[/b][/quote]
Это означает, что в первый раз комп спроектирует не самый лучший маршрут (ведь так же было и с людьми?), но по мере накопления опыта будет проектировать все лучше и лучше, постепенно находя все более лучшие варианты.

Дядька
07.05.2010, 13:17
<div class='quotetop'>Цитата(Peter * 7.5.2010, 11:46) 335403</div>

<div class='quotetop'>Цитата(Дядька * 7.5.2010, 12:35) 335399

пробовал - получается как в CTP с кучей дырок, мое больше на глобус смахивает :shy2:
[/b]
каких дырок :)
[/b][/quote]
морских
<div class='quotetop'>Цитата(superregistr * 7.5.2010, 11:59) 335404</div>

Кстати, а в цив4 разве не так делается? Та же самая задача.
[/b]
граф конечно тоже используют но наверняка не в лоб,
думаю, используют прямую и линейную зависимость между координатами и индексами, чего у нас нет

superregistr
07.05.2010, 13:23
<div class='quotetop'>Цитата(Дядька * 7.5.2010, 13:17) 335410</div>

<div class='quotetop'>Цитата(superregistr * 7.5.2010, 11:59) 335404

Кстати, а в цив4 разве не так делается? Та же самая задача.
[/b]
граф конечно тоже используют но наверняка не в лоб,
думаю, используют прямую и линейную зависимость между координатами и индексами, чего у нас нет
[/b][/quote]
Ну допустим, что дает линейная зависимость при поиске оптимального пути? Не, та же самая задача, на сфере линейными становятся углы тета и фи.

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

Peter
07.05.2010, 13:27
<div class='quotetop'>Цитата(Дядька * 7.5.2010, 13:17) 335410</div>

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

<div class='quotetop'>Цитата(Дядька * 7.5.2010, 13:17) 335410</div>

морских
[/b]
то есть 1-2 клеточных "озерков"?
насколько я могу судить при "клеточной" генерации их образование очень маловероятно. скорее наоборот придется их накидывать после создания основного ландшафта. впрочем нужно попробовать сначала.

Дядька
07.05.2010, 13:30
<div class='quotetop'>Цитата(superregistr * 7.5.2010, 12:23) 335411</div>

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

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

Peter
07.05.2010, 13:33
<div class='quotetop'>Цитата(Дядька * 7.5.2010, 13:30) 335413</div>

думаю задача решается в несколько приемов:
[/b]
обычно в играх применяется А* (http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_A*) и его модификации или алгоритм Ли (http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9B%D0%B8)

инфа 100%

superregistr
07.05.2010, 13:35
<div class='quotetop'>Цитата(Дядька * 7.5.2010, 13:30) 335413</div>

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

Мне кажется, там тупо вырезается прямоугольник с диагональными точками: начало-конец, возможно он немного расширяется. А потом программа начинает варировать все (а может и не все) пути и находит экстремум функионала.

<div class='quotetop'>Цитата(Peter * 7.5.2010, 13:33) 335414</div>

обычно в играх применяется А* (http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_A*) и его модификации или алгоритм Ли (http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9B%D0%B8)

инфа 100%
[/b]
ок, щас прочту

superregistr
07.05.2010, 13:47
Алгоритм Ли понравился больше, по крайней мере я его понял :)

На счет Астра видимо требуется больше умственных усилий :)

superregistr
11.05.2010, 22:46
Изрядно повозившись с OpenGL, разобрался с отображениями изображения. Есть такое понятие таблица отображений. Она отвечает за статичную сцену и очень заметно повышает производительность, например, крутить сцену за счет того, что объекты сцены хранятся в буфере. Почему в моей проге сферу можно быстро крутить без тормозов? (у меня без тормозов) Потому что сфера находится в таблице отображений, которая хранится в буфере. В противном случае с каждым изменением осуществлялось перерисовка заново всех треугольников (пробовал, действительно тормоза). Итак, таблица отображений содержит статическую картинку, но! ее (конкретную таблицу отображений) можно изменить с помощью функций и методов и переопределения переменной, хранящей уникальный номер таблицы отображений.

Что это дает? Много, очень много. Создаем n таблиц отображений, одна таблица на треугольник. Теперь все треугольники хранятся в буфере как данные. Теперь изменяю несколько таблиц отображений (несколько треугольников), например, чтобы поднять или опустить узел. Остальные данные остаются нетронутыми статическими данными -- следовательно тормозов нет и не будет. Измененные треугольники теперь перезаписываются в свои таблицы отображений. Результат - колоссальная производительность.

Теперь отвечу на ваши вопросы Qt4 как API для OpenGL. Для работы с OpenGL в Qt4 есть три определяемые разработчиком функции:

virtual void initializeGL() // автоматически вызывается первой и только один раз, в ней разработчик делает настройки и инициализации OpenGL

virtual void resizeGL(int nW, int nH) // автоматически вызывается второй и только один раз, нужна, чтобы связать сцену с размером виджета (окна), так же вызывается при изменении размеров окна, в ней так же логично задать матрицу проектирования или проекцию

virtual void paintGL() // вызывается автоматически при вызове команд обновить изображение, вызывается любое количество раз, заменяет старое изображение на новое

Вообщем все предельно логично, интуитивно понятно и просто.

Дядька
12.05.2010, 11:23
<div class='quotetop'>Цитата(superregistr * 11.5.2010, 21:46) 335807</div>

Сообщений: 1 000[/b]
http://s40.radikal.ru/i088/1005/e7/b53080861e30t.jpg (http://radikal.ru/F/s40.radikal.ru/i088/1005/e7/b53080861e30.gif.html)
поздравляю со <strike>круглой</strike> сфероподобной циферкой :applau2:

superregistr
15.05.2010, 19:48
:bayan:

Построил, как и задумывал, базы данных, с помощью которых:
- треугольник видит свои узлы;
- узел видит свои треугольники.

Демонстрационная программа прилагается, используйте клавиши "N" (узел++) и "M" (узел--).

:bayan:

PavelZ
07.06.2010, 18:44
<div class='quotetop'>Цитата(superregistr * 15.5.2010, 18:48) 336084</div>

:bayan:

Построил, как и задумывал, базы данных, с помощью которых:
- треугольник видит свои узлы;
- узел видит свои треугольники.

Демонстрационная программа прилагается, используйте клавиши "N" (узел++) и "M" (узел--).

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

superregistr
08.06.2010, 22:36
<div class='quotetop'>Цитата(Pavel Zachesa * 7.6.2010, 18:44) 337971</div>

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

А между тем сделал визуальный редактор рельефа :bayan:

Нужен тестинг программы.

Итак, все предельно просто. С помощью мыши вы выбираете любой узел. Землю крутите тоже с помощью мыши. Колесик мыши по умолчанию установлен на изменение масштаба, крутите - масштаб меняется. Далее, чтобы перейти в режим изменения радиуса узла нажимаете Ctrl+W, теперь новый радиус задаете колесиком мыши, обратно в режим масштаба опять Ctrl+W и т.д. Вроде удобно и логично. Некоторые фичи: A - скрыть/показать оси координат, S - скрыть/показать изображение узла, пробел - камера по умолчанию. Ну вот пока все.

Нужен тестинг, потом выложу исходники :.V.:

General
08.06.2010, 22:58
mingwm10.dll требует

superregistr
09.06.2010, 00:19
<div class='quotetop'>Цитата(General * 8.6.2010, 22:58) 338045</div>

mingwm10.dll требует
[/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) :.V.:

superregistr
09.06.2010, 11:42
Вся прелесть в том, что я могу выбрать не только любой узел на Земле с помощью мыши, а вообще любую точку на поверхности, вот так.
:win:

General
09.06.2010, 18:36
[attachmentid=6668]

superregistr
09.06.2010, 19:31
:applau2:

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

Потестил, работает :) Логичным будет, добавить загрузку и сохранение...

superregistr
10.06.2010, 14:53
<div class='quotetop'>Цитата(Pavel Zachesa * 10.6.2010, 13:47) 338221</div>

Логичным будет, добавить загрузку и сохранение...
[/b]
Не успел доделать, будет ;)

superregistr
10.06.2010, 16:31
Во один человек с дружественного ресурса побаловался :)
http://s004.radikal.ru/i208/1006/50/df6f8ac5a048t.jpg (http://radikal.ru/F/s004.radikal.ru/i208/1006/50/df6f8ac5a048.gif.html)

superregistr
12.06.2010, 18:59
Все тоже самое, что было сказано выше +:
F9 - сохранить
F10 - загрузить
Ctrl+N - создать заново

NeseryozniyVET
12.06.2010, 19:25
А как менять итерацию сферы?

superregistr
12.06.2010, 19:27
<div class='quotetop'>Цитата(NeseryozniyVET * 12.6.2010, 19:25) 338460</div>

А как менять итерацию сферы?
[/b]
С помощью базы (base00X.dat), которая хранится у меня :D

superregistr
12.06.2010, 23:38
Гы, а я нашел ошибку :secret: Если нажмете не на сферу, программа вылетит :shy2: Исправил, но выложу потом :bye:

Peter
24.06.2010, 11:43
хотелось бы видеть более четкую границу между сушей и водой :)
можно еще уровни глубины показывать более темным синим цветом..

superregistr
24.06.2010, 12:03
<div class='quotetop'>Цитата</div>
хотелось бы видеть более четкую границу между сушей и водой [/b] Да, я тоже думал над этим. Решил, что четкую границу лучше сделать в текстурах "побережье". Если как текстуру использовать gif-анимацию, то можно еще будет приливы и отливы зафигачить :)

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

superregistr
11.07.2010, 16:03
Разбил сферу на климатические пояса:
0 - арктический/антарктический
1 - субарктический/субанарктичексий
2 - умеренный
3 - субтропический
4 - тропический
5 - субэкваториальный
6 - экваториальный

Принцип планируется такой: рельеф+климат=природная зона

superregistr
18.07.2010, 18:18
Продолжение разработки игрового пространства. Теперь вы наряду с рельефом можете редактировать климатические зоны. В новой версии появилась линия побережья. Список всех возможностей уточняйте в файле "readme (rus).txt".

superregistr
19.07.2010, 23:16
Интересно услышать отзывы на счет береговой линии. Так оставить или сделать места изгиба более гладкими?

Triver
19.07.2010, 23:37
<div class='quotetop'>Цитата</div>
места изгиба более гладкими[/b]
Да,пожалуйста. :yes:

И меня ещё интересует реализация рифов.

Peter
20.07.2010, 09:21
я думаю на первое время - пойдет.
попробуй лучше прикрутить освещение, чтобы рельеф был заметнее. и горы повыше бы)

superregistr
20.07.2010, 09:30
<div class='quotetop'>Цитата(Peter * 20.7.2010, 9:21) 342638</div>

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

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

superregistr
10.08.2010, 21:10
Небольшое обновление редактора. Появились меню и небольшие удобства.

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

А пока балуйтесь :bayan:

Peter
10.08.2010, 21:51
<div class='quotetop'>Цитата(superregistr * 10.8.2010, 21:10) 346015</div>

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

superregistr
11.08.2010, 09:12
Явно удалил потоки после работы с файлами. Глюк пока не наблюдается :yes:

superregistr
11.08.2010, 11:46
Просьба потестить эту версию. Как долго она весит в процессах после завершения?

Peter
11.08.2010, 15:01
в процессах все хорошо.

смущают холмы из воды:
http://i283.photobucket.com/albums/kk312/mogendovid/waterhills.png

superregistr
11.08.2010, 20:23
Спасибо :) Хотел сначала поставить ограничение, чтобы такого не было. Потом решил оставить, так как иногда удобнее сначала рисовать горные хребты, а потом уже от них распространять материк. Только поэтому :)

Peter
11.08.2010, 21:49
<div class='quotetop'>Цитата(superregistr * 11.8.2010, 20:23) 346241</div>

Спасибо :) Хотел сначала поставить ограничение, чтобы такого не было. Потом решил оставить, так как иногда удобнее сначала рисовать горные хребты, а потом уже от них распространять материк. Только поэтому :)
[/b]
ну а как быть с этим вертикальным озером на горе? :)

superregistr
11.08.2010, 23:31
Напишу проверочную функцию, которая пройдет по всем сухопутным узлам и если что их исправит ;) Это не проблема. Я бы мог сразу сделать регулирование высот аналогично климатическим зонам (зоны можно редактировать только на границе, чтобы тропики не появились на северном полюсе), но повторюсь: оставил, чтобы можно было сначала построить горный хребет, потом все остальное.

superregistr
12.08.2010, 00:19
Спасибо за вопросы, все они будут учтены ;)

superregistr
08.09.2010, 13:57
Интересную идею предложили на геймдеве. Разбивать каждый треугольник не на 4, а на 9 треугольников. В результате получится целое число шестиугольников на сфере. В узловых точках икосаэдра останутся пятиугольники.

General
08.09.2010, 14:26
Кстати, да, я как-то пытался пообъединять все треугольники в шестиугольники - не выходило. А при такой разбивке должно пойти

superregistr
06.12.2010, 19:11
Красивое видео: http://vimeo.com/6449865

superregistr
03.01.2013, 15:12
Вспоминаю свои давно забытые наработки:

Описание функций:

st - номер слоя для треугольника
jt - номер в слое для треугольника

sv - номер слоя для вершины
jv - номер в слое для вершины

void get4Triangles(int st, int jt, int *st0, int *jt0, int *st1, int *jt1, int *st2, int *jt2, int *st3, int *jt3)
Определяет 4 новых треугольника при разбивке старого треугольника: st, jt - координаты старого треугольника; *st0, *jt0, *st1, *jt1, *st2, *jt2, *st3, *jt3 - координаты новых треугольников.

void get3Vertices(int st, int jt, int *sv0, int *jv0, int *sv1, int *jv1, int *sv2, int *jv2)
Определяет 3 вершины треугольника: st, jt - координаты треугольника; *sv0, *jv0, *sv1, *jv1, *sv2, *jv2 - координаты вершин треугольника.

void get6Triangles(int sv, int jv, int *st0, int *jt0, int *st1, int *jt1, int *st2, int *jt2, int *st3, int *jt3, int *st4, int *jt4, int *st5, int *jt5)
Определяет 6-5 треугольников вершины. Если 6-ого треугольника не существует, то 6-ой треугольник равен 5-ому -- это критерий отличия шестиугольника от пятиугольника. Треугольники закручиваются последовательно по правилу правого винта.

Скоро посты пишутся, да не скоро демки делаются. (c) не мое :))

Peter
09.01.2013, 09:10
сигнатуры конечно отвратные
но программа эта работает
жаль дальше дело не пошло

superregistr
09.01.2013, 17:05
сигнатуры конечно отвратные
в смысле?

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

Peter
09.01.2013, 17:19
в смысле?
наличие 100500 параметров в функциях свидетельствует о плохом дизайне


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


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

superregistr
09.01.2013, 18:21
наличие 100500 параметров в функциях свидетельствует о плохом дизайне
ну в общем да, там лучше возвращать через указатель на массив


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



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

Peter
09.01.2013, 18:32
хорошая новость!

Aku_Aku
09.01.2013, 23:34
и как бы да, и как бы нет, это авторский движок должен быть в идее

М-дя-я... "авторский движок"... "оно и видно" (С)

superregistr
10.01.2013, 18:44
М-дя-я... "авторский движок"... "оно и видно" (С)
а что видно то?