KRIGSSVIN
930 постов
Карма: 53
#71 22 ноября 2008 в 17:19
Проще говоря - от более высокой версии языка руки программиста не выпрямляются.
<br />И то верно&nbsp; :D<br /><br />
Удобнее-то да, удобнее, но только при правильном раскладе.
<br />А неправильный делать не надо&nbsp; ;D Про удобство - мне лично было бы удобней. Каждый делает по-своему, и выдавать проблемы какой-то конкретной архитектуры за невозможность грамотного написания рендера несколько неуместно ;)<br /><br />Кармак, кстати, в D3 предпочёл рендер-бэкэнд (непосредственно выполняющий отрисовку, установку стейтов и т.д.) писать на С. На С++ у него фронт-энд (всякий куллинг, инициализация...).
VorteX
341 постов
Карма: 60
#72 24 ноября 2008 в 06:07
KRIGSSVIN пишет:<br />
и выдавать проблемы какой-то конкретной архитектуры за невозможность грамотного написания рендера несколько неуместно ;)
<br />Мягко выразился :)<br />С++ является расширением языка С, т.е. основан на его ядре (и совместимость с С - один из его принципов) . Так что просто глупо пытаться писать на ООП все, что можно. Это будет похоже на закрывание от самого себя солидной части возможностей C++, который разработан как универсальный язык, сочетающий в себе поддержку большого количества различных методов программирования.<br /><br />
SupLisEr Fox
51 постов
Карма: 5
#73 24 ноября 2008 в 15:23
В математику я сегодня встроил свою версию CRC-таблиц. CRC32, проще говоря.<br /><br /><br /><br /> static uint32 crc_table[256] = {<br />&nbsp; 0x00000000, 0x77073096, 0xEE0E612C, <br />&nbsp; ...,<br />&nbsp; &nbsp;0x5A05DF1B, 0x2D02EF8D<br />};<br /><br />#define STEPCRC(crc,byte) crc = crc_table[((int)crc ^ (byte)) &amp; 0xff] ^ (crc &gt;&gt; 8 )<br /><br />class crc32<br />{<br /> uint32 Start(void)<br /> {<br /> return (~((uint32)0));<br /> }<br /><br /> uint32 Finish(uint32 crc)<br /> {<br /> return (~crc);<br /> }<br /><br />uint32 AddByte(uint32 crc,uint8 b) <br /> {<br /> STEPCRC(crc,b);<br /> return(crc); <br /> }<br /><br />uint32 AddWord(uint32 crc,uint16 w) <br />{ <br />uint8 *ptr;<br /> ptr = (uint8 *)&amp;w;<br /> STEPCRC(crc,ptr[0]);<br /> STEPCRC(crc,ptr[1]);<br />return(crc); <br />}<br /><br />uint32 AddLong(uint32 crc,uint32 l) <br />{<br />uint8 *ptr;<br /> ptr = (uint8 *)&amp;l;<br /> STEPCRC(crc,ptr[0]);<br /> STEPCRC(crc,ptr[1]);<br /> STEPCRC(crc,ptr[2]);<br /> STEPCRC(crc,ptr[3]);<br />return(crc); <br />}<br /><br /> uint32 Array(const uint8 * buf,uint32 buflen)<br /> {<br /> uint32 crc = (~((uint32)0));<br /><br /> if (!buf ) return 0;<br /><br /> while( (buflen&amp;0xF) != 0 )<br /> {<br /> STEPCRC(crc,*buf); buf++;<br /> buflen--;<br /> }<br /><br /> buflen&gt;&gt;=4;<br /><br /> while(buflen--)<br /> {<br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /><br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /><br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /><br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /> STEPCRC(crc,*buf); buf++;<br /> }<br /><br /> crc ^= 0xFFFFFFFF;<br /><br /> return crc;<br /> }<br /><br />};<br /><br /><br /><br />Индексы решил все не выкладывать - объем информации большой. Потом, как-нибудь, попробую реализовать CRC64. Для справки:<br /><br />typedef signed __int64 int64;<br />typedef signed long int32;<br />typedef signed short int16;<br />typedef signed char int8;<br /><br />typedef unsigned __int64 uint64;<br />typedef unsigned long uint32;<br />typedef unsigned short uint16;<br />typedef unsigned char uint8;<br />
Каждый из нас ничто без себя, как эго ничтожно без своего обладателя, и лишь высшее эго является совокупностью всех прочих эго. Оно ничто, оно все, оно - Бог.
SupLisEr Fox
51 постов
Карма: 5
#74 27 декабря 2008 в 12:46
Вчера вот меня осенило, и я придумал такой механизм интересный построения брашей в редакторе. По принципу бесконечного удлинения. Алгоритм пока не разработал. Вкратце суть такова:<br /><br />Мы начинаем создавать стандартный браш типа &quot;блок&quot;. Во вьюпорте редактора рисуем, по сути, сначала полигон, с которого начнет строительство браша. Когда нарисуем, делаем или правый мышеклик, чтобы перейти к дальнейшей работе с брашем, или два мышеклика, чтобы закончить строительство браша на плоском полигоне. Если идем далее, то лучше перейти в другой вьюпорт, там мы начнем вытягивать сегмент браша. Когда уже все, по нашему мнению, готово с этим сегментом браша, то или два мышеклика, либо один, чтобы продолжить тянуть сегменты. При желании, можно такое делать с любой стороной браша. Фишка в том, что новый сегмент ориентируется в пространстве, следуя за курсором мышки, что может позволить из одного блока вытягивать самые разные, а порой и довольно причудливые формы, в зависимости от того, как будет развита такая техника строительства брашей. Чисто теоретически, при применении такой техники, из брашей можно научиться вытягивать полые внутри трубы, не паря себе мозги по поводу сочленений и изгибов, проблемой создания которых тогда станет исключительно прямота рук дизайнера уровней.<br /><br />Как идея?
Каждый из нас ничто без себя, как эго ничтожно без своего обладателя, и лишь высшее эго является совокупностью всех прочих эго. Оно ничто, оно все, оно - Бог.
KRIGSSVIN
930 постов
Карма: 53
#75 27 декабря 2008 в 15:06
Смотри Google SketchUp, там именно такой инструментарий.
GT-Agressor
321 постов
Карма: 42
#76 27 декабря 2008 в 19:29
В большинстве 3дредакторов что-то подобное есть :)<br /><br />работаю в unigraphics, там тоже часто нужно похожее делать<br />сначала 2д эскиз, потом вытягивать по направляющей (произвольно расположенной в 3д), так имхо удобнее, но дольше делать (<br />
http://gt-team.blog.ru - мой блог :)
http://q3bers.nm.ru - элементы ретекстура для Q3Bers
SupLisEr Fox
51 постов
Карма: 5
#77 09 января 2009 в 17:05
На днях решил переделать уже переработанную математику. Получается довольно-таки интересная штука, с применением деления вектора на вектор, матрицы на матрицу. Пока я почленное деление вектора на вектор применил для альтернативного скейла вектора. То деление вектора, что применяется обычно (вычисление длин векторов, и их непосредственное деление), я тоже реализовал, но пока не нахожу им достойного применения. Может быть, кто-нибудь подскажет, в каких случаях эти действия необходимо применять?<br />
Каждый из нас ничто без себя, как эго ничтожно без своего обладателя, и лишь высшее эго является совокупностью всех прочих эго. Оно ничто, оно все, оно - Бог.
GT-Agressor
321 постов
Карма: 42
#78 10 января 2009 в 07:28
Может объяснишь непосвященному, зачет это нужно и что дает?<br /><br />интересно :)
http://gt-team.blog.ru - мой блог :)
http://q3bers.nm.ru - элементы ретекстура для Q3Bers
SupLisEr Fox
51 постов
Карма: 5
#79 10 января 2009 в 09:04
цитирую:<br /><br /> Деление вектора на вектор. Операция деления вектора<br />на вектор возможна только для коллинеарных векторов.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c<br />&nbsp; &nbsp; Частным&nbsp; &nbsp; &nbsp; = c ÷ a от деления вектора с на<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a<br />коллинеарный ему вектор а≠0 называется число х,<br />произведение которого с делителем а дает делимый вектор<br /> c ÷ x ⋅a = c.<br />&nbsp; &nbsp; Частное от деления коллинеарных векторов равно<br />частному от деления их длин, взятому со знаком «+» или «–»,<br /><br /><br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 9<br /><br /><br />в зависимости от того, одинаково или противоположно<br />направлены векторы:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c&nbsp; &nbsp; c<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = + , если с↑↑а,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a&nbsp; &nbsp; a<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c&nbsp; &nbsp; c<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = − , если с↑↓а.<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a&nbsp; &nbsp; a<br />&nbsp; &nbsp; Деление коллинеарных векторов обладает свойствами:<br />&nbsp; &nbsp; &nbsp; λ ⋅a&nbsp; &nbsp; a a&nbsp; &nbsp; &nbsp; a<br />&nbsp; 1)&nbsp; &nbsp; &nbsp; = λ⋅ , ÷μ =&nbsp; &nbsp; (сочетательность),<br />&nbsp; &nbsp; &nbsp; c&nbsp; &nbsp; &nbsp; c c&nbsp; &nbsp; μ⋅c<br />&nbsp; &nbsp; &nbsp; a+b a b<br />&nbsp; 2)&nbsp; &nbsp; &nbsp; = + (распределительность).<br />&nbsp; &nbsp; &nbsp; &nbsp; c&nbsp; c c
Каждый из нас ничто без себя, как эго ничтожно без своего обладателя, и лишь высшее эго является совокупностью всех прочих эго. Оно ничто, оно все, оно - Бог.
KRIGSSVIN
930 постов
Карма: 53
#80 10 января 2009 в 11:01
Он про другое спросил&nbsp; ;D