А если народ не попугаешь, он так и будет считать, что ничего лучше Интела нет.
Кэш - это костыли для изначально убогой архитектуры. Лучше бы всю память сделали по производительности как кэш и разместили бы на том же кристалле, что и процессор. На выводах бы сэкономили. Нет места на кристалле? Может, тогда не надо 15-байтные команды интеловской архитектуры декодировать, а ограничиться 2-4-6-байтовыми командами типа RISC? Глядишь, место и освободилось бы за счет уменьшения масочной памяти микропрограмм...
<div class='quotetop'>Цитата</div>Еще раз спрашиваю, кто вам сказал, что программирование сводится к обработке массивов слева направо и сверху вниз? Как насчет действительно эффективных алгоритмов типа B-дерева?<div class='quotetop'>Цитата</div>также основная часть времени при математических операциях над массивами данных циклична[/b]Хорошо, согласен. А реальные данные где-то можно найти? Сравнить с Креем? Или как будем считать: P4 показывает 32 FPS на сталкере, а на крее сталкер вообще не идет, значит крей не компьютер?Реальные несколько ниже, но вовсе не настолько, как ты пытаешься рассказать.[/b]
<div class='quotetop'>Цитата(superregistr * 24.4.2010, 23:15) [snapback]334126[/snapback]</div>Да вроде все уже по умничали... Впрочем можно сделать отдельную тему, куда перенести ветку о железных моментах.Может в другое место перейдете?
[/b]
Кстати superregistr можешь составить табличку угловых (сферических) координат вершин для икосаэдра и додекаэдра? У меня мозгов не хватает (скорее всего лень) посчитать. Но желательно в радианах типа Пи/2 и так далее если есть такая возможность, чтоб не потерять в точности. Пожалуйста, очень прошу!
Или хотя бы носом ткнуть в соответствующие тригонометрические соотношения...
Кстати шарик твой после 7 ит. http://zp3.biz/sites/default/files/7_sharik.jpg
Разработка игры Вселенная: расширяя пределы. Universe: extending the frontier. (UEF)
<div class='quotetop'>Цитата(Pavel Zachesa * 25.4.2010, 7:29) [snapback]334130[/snapback]</div><div class='quotetop'>Цитата(superregistr * 24.4.2010, 23:15) [snapback]334126[/snapback]Кстати шарик твой после 7 ит. http://zp3.biz/sites/default/files/7_sharik.jpgМожет в другое место перейдете?
[/b]
[/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; // глобальная переменная
...
У тебя тэта в радианах, а фи в градусах, некошерно как-то меня это запутало. Впрочем всё равно спасибо, по икосаэдру всё стало на свои места.
Мне нужен не сам додекаэдр а фигура производная от него когда точка в центре каждой грани, проецируется на описанную сферу. После соединения проектируемой точки с соседними вершинами додекаэдра дугами, вместе с дугами образованными соединением смежных вершин между собой происходит триангуляция сферы на 60 сферических треугольников.
Суть в том, что для генерации планет, необходима базовая ячейка, тот же узел, с описанной вокруг областью, примерно одинаковой площади в не зависимости от размера самой планеты. Поэтому я беру фиксированный набор узлов из расчёта 20*4**n и 60*4**n подбирая подходящий к сгенерированному (взятому из жизни касаемо Солнечной системы) размеру каждой конкретно взятой планеты.
Разработка игры Вселенная: расширяя пределы. Universe: extending the frontier. (UEF)
Ха нашёл вроде бы то что нужно http://www.abitu.ru/en2002/closed/viewwork.html?work=54
Блин, но там не сферических координатах
Да и я забыл уточнить, что подбор делать можно по площади поверхности.
Разработка игры Вселенная: расширяя пределы. Universe: extending the frontier. (UEF)
Спасибо огромное, дальше наверное у меня хватит мозгов
Разработка игры Вселенная: расширяя пределы. Universe: extending the frontier. (UEF)
Разработал алгоритм поиска узла или треугольника на сфере через координату мыши на экране.
Пусть мы имеем следующий рисунок:
[attachmentid=6534]
На нем изображена фигура и ее проекция на экран монитора. Фигура расположена так, что ось y перпендикулярна плоскости экрана и смотрит из экрана.
Далее производим любое вращение сферы. Для простоты на следующем рисунке изображен поворот вокруг оси z.
[attachmentid=6535]
Далее мы должны сформировать матрицу M' точек в новой системе координат x', y', z' (ось y' по прежнему перпендикулярна плоскости экрана и смотрит из экрана). Далее создаем дополнительную матрицу M'' новых точек так, чтобы в нее входили только точки с положительными координатами y' (y'>0). Тем самым мы отбросим все ненужные точки, которые находятся "по ту сторону экрана" - "beyond the screen" - они нам пока ненужны.
Далее проецируем точки матрицы M'' на плоскость экрана, переводим их в систему координат экрана и создаем эту матрицу точек M'''. Теперь осталось перебрать все точки матрицы M''' и найти ближайшую к координате мыши на экране.
Так как точек матрицы M''' может быть достаточно много, то можно упростить задачу. Экран разбить на сектора
[attachmentid=6536]
При переходе M'' --> M''' соответственно точки нужно распределять по своим секторам. Теперь нам нужно перебирать не все точки, а для начала перебрать все сектора. И уже в данном секторе перебрать оставшиеся точки.
При необходимости сектора можно разбивать опять на сектора. Логичным кажется делать так: число разбиений сектора на сектора, сектора на сектора и т.д. связать с числом итераций.
В случае треугольника нужно создать матрицу серединных точек треугольника и оперировать с ними таким же образом.
Интересно услышать отзывы и предложения.
<div class='quotetop'>Цитата(superregistr * 28.4.2010, 17:50) [snapback]334540[/snapback]</div>Уверен?Интересно услышать отзывы и предложения.
[/b]
Тогда слушай, о тролль. При рисовании любого тайла на экране ты знаешь, что это за тайл. И ты знаешь, где ты его рисуешь. Заведи массив с размерами, равными экрану. При рисовании тайла помещай код (указатель, хэш, номер), однозначно идентифицирующий тайл, в каждый элемент этого массива, который соответствует той точке на экране, которая будет принадлежать тайлу. Тогда после отрисовки весь массив заполнится кодами тайлов. Теперь если кликнуть на экран, координаты мыши в момент клика дадут координаты по массиву, а элемент на пересечении даст код(указатель, хэш, номер) тайла.
Этой технологии - двадцать лет, если не больше. А афинные преобразования превратят твой пентиум-600 в синклер-85.
<div class='quotetop'>Цитата(sweeper * 28.4.2010, 16:03) [snapback]334541[/snapback]</div>обижаешь понятие троллинга является риторическим. в принципе любого, кто что-то говорит, можно обвинить в троллинге и самое ужасное - доказать этоТогда слушай, о тролль.
[/b]
<div class='quotetop'>Цитата(sweeper * 28.4.2010, 16:03) [snapback]334541[/snapback]</div>Хм, не знал, так действительно выходит быстрее Спасибо за совет!При рисовании любого тайла на экране ты знаешь, что это за тайл. И ты знаешь, где ты его рисуешь. Заведи массив с размерами, равными экрану. При рисовании тайла помещай код (указатель, хэш, номер), однозначно идентифицирующий тайл, в каждый элемент этого массива, который соответствует той точке на экране, которая будет принадлежать тайлу. Тогда после отрисовки весь массив заполнится кодами тайлов. Теперь если кликнуть на экран, координаты мыши в момент клика дадут координаты по массиву, а элемент на пересечении даст код(указатель, хэш, номер) тайла.
Этой технологии - двадцать лет, если не больше. А афинные преобразования превратят твой пентиум-600 в синклер-85.
[/b]
<div class='quotetop'>Цитата</div>Но здесь я знаю только три точки треугольника, остальное рассчитывает машина Непонятно как площадь треугольника перевести в пиксели экрана. К тому же я не знаю, что попадает на экран, а что нет.При рисовании тайла помещай код (указатель, хэш, номер), однозначно идентифицирующий тайл, в каждый элемент этого массива, который соответствует той точке на экране, которая будет принадлежать тайлу[/b]
<div class='quotetop'>Цитата</div>Это еще можно сообразить как сделать.Но здесь я знаю только три точки треугольника, остальное рассчитывает машина. Непонятно как площадь треугольника перевести в пиксели экрана.[/b]
Но здесь:
<div class='quotetop'>Цитата</div>я не смогу обойтись без аффинных преобразований, так как не знаю, что отображается на экране, а что нет.К тому же я не знаю, что попадает на экран, а что нет.[/b]
<div class='quotetop'>Цитата</div>Так как у меня все точки в сферической системе координат, то наверно смогу с помощью углов поворота выделять только те, что отображаются. В любом случае надо попробовать, спасибо, свиппер.я не смогу обойтись без аффинных преобразований, так как не знаю, что отображается на экране, а что нет.[/b]
Не силён в опенЖЛ, но вроде там есть функции для обработки указателя мыши, куда она приползла и так далее?
Разработка игры Вселенная: расширяя пределы. Universe: extending the frontier. (UEF)
<div class='quotetop'>Цитата(Pavel Zachesa * 28.4.2010, 18:00) [snapback]334560[/snapback]</div>В OpenGL-ской библиотеке GLUT я знаю есть функция для обработки событий мыши, но находит экранные координаты, про ту, что ты имеешь в виду - не знаю.Не силён в опенЖЛ, но вроде там есть функции для обработки указателя мыши, куда она приползла и так далее?
[/b]