Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26160
Рейтинг: 2127
#76: 2012-03-13 13:23:34 ЛС | профиль | цитата
Tad писал(а):
Ни Alliance, ни нового конструктора программ по подобию HiASM, ни "нейросети"

Нельзя объять необъятное. Надо уметь соизмерять свои желания со своими возможностями
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#77: 2012-03-13 13:31:29 ЛС | профиль | цитата
nesco писал(а):
Нельзя объять необъятное. Надо уметь соизмерять свои желания со своими возможностями
Вот и я о том же.
По любой теме (из трёх перечисленных) жизни не хватит, даже если работать по 20 часов в сутки.
А найти пару (и не одну) свободных ушей и по3.14здеть это можно.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1061
Рейтинг: 22
#78: 2012-03-13 13:38:30 ЛС | профиль | цитата
Tad писал(а):
и по3.14здеть это можно.

Ладно хоть это можно! Чтобы я тогда делал?

nesco писал(а):
Нельзя объять необъятное. Надо уметь соизмерять свои желания со своими возможностями

Вот я и хочу соизмерить свои возможности с желаниями! Пока, я чувствую, что смогу это сделать, хоть и на примитивном уровне!
карма: 0

0
Ответов: 1429
Рейтинг: 50
#79: 2012-03-13 15:06:30 ЛС | профиль | цитата
Хочется привести пример когда код проигрывает схеме

Вот схема:
ftcg_shema1.png

А это код который она генерирует:

#pas
for i882 := 1 to result2883 do
begin
result3883:= Length(ArrayItem[0,0]) - 1;
for i884 := 1 to result3883 do
begin
if ArrayItem[name_x152,i882,i884,4] = 1 then
begin
if ArrayItem[name_x152,i882,i884,15] = 0 then
begin
if ArrayItem[name_x152,i882,i884,3] = 1 then
begin
tmp1891 := ArrayItem[name_x152,i882,i884,7] + ArrayItem[name_x152,i882,i884,5];
tmp2891 := ArrayItem[name_x152,i882,i884,8] + ArrayItem[name_x152,i882,i884,6];
sk891 := 3;
if ArrayItem[name_x152,i882,i884,8] < 25 then
begin
sk891 := 1;
end;
glBegin (GL_QUAD_STRIP);
glColor3f(ArrayColors[ArrayItem[name_x152,i882,i884,9],6], ArrayColors[ArrayItem[name_x152,i882,i884,9],7], ArrayColors[ArrayItem[name_x152,i882,i884,9],8]);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + 0 ,tmp2891 - sk891 - 0 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + 0 ,ArrayItem[name_x152,i882,i884,6] + sk891 + 0, 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk891 + 0 ,tmp2891 - 0, 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk891 + 0,ArrayItem[name_x152,i882,i884,6] + 0, 0);
glVertex3f(tmp1891 - sk891 - 0,tmp2891 - 0, 0);
glVertex3f(tmp1891 - sk891 - 0,ArrayItem[name_x152,i882,i884,6] + 0, 0);
glVertex3f(tmp1891 - 0,tmp2891 - sk891 - 0, 0);
glVertex3f(tmp1891 - 0,ArrayItem[name_x152,i882,i884,6] + sk891 + 0, 0);
glEnd;
tmp1896 := ArrayItem[name_x152,i882,i884,7] + ArrayItem[name_x152,i882,i884,5];
tmp2896 := ArrayItem[name_x152,i882,i884,8] + ArrayItem[name_x152,i882,i884,6];
sk896 := 3;
if ArrayItem[name_x152,i882,i884,8] < 25 then
begin
sk896 := 1;
end;
glBegin (GL_LINE_LOOP);
glColor3f(ArrayColors[ArrayItem[name_x152,i882,i884,9],9], ArrayColors[ArrayItem[name_x152,i882,i884,9],10], ArrayColors[ArrayItem[name_x152,i882,i884,9],11]);
glVertex3f(ArrayItem[name_x152,i882,i884,5] ,tmp2896 - sk896 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] ,ArrayItem[name_x152,i882,i884,6] + sk896 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk896 ,ArrayItem[name_x152,i882,i884,6] , 0);
glVertex3f(tmp1896 - sk896 ,ArrayItem[name_x152,i882,i884,6] , 0);
glVertex3f(tmp1896 ,ArrayItem[name_x152,i882,i884,6] + sk896 , 0);
glVertex3f(tmp1896 ,tmp2896 - sk896 , 0);
glVertex3f(tmp1896 - sk896 - 1 ,tmp2896 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk896 ,tmp2896 , 0);
glEnd;
end
else
begin
tmp1899 := ArrayItem[name_x152,i882,i884,7] + ArrayItem[name_x152,i882,i884,5];
tmp2899 := ArrayItem[name_x152,i882,i884,8] + ArrayItem[name_x152,i882,i884,6];
sk899 := 3;
if ArrayItem[name_x152,i882,i884,8] < 25 then
begin
sk899 := 1;
end;
glBegin (GL_QUAD_STRIP);
glColor3f(ArrayColors[ArrayItem[name_x152,i882,i884,9],0], ArrayColors[ArrayItem[name_x152,i882,i884,9],1], ArrayColors[ArrayItem[name_x152,i882,i884,9],2]);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + 0 ,tmp2899 - sk899 - 0 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + 0 ,ArrayItem[name_x152,i882,i884,6] + sk899 + 0, 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk899 + 0 ,tmp2899 - 0, 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk899 + 0,ArrayItem[name_x152,i882,i884,6] + 0, 0);
glVertex3f(tmp1899 - sk899 - 0,tmp2899 - 0, 0);
glVertex3f(tmp1899 - sk899 - 0,ArrayItem[name_x152,i882,i884,6] + 0, 0);
glVertex3f(tmp1899 - 0,tmp2899 - sk899 - 0, 0);
glVertex3f(tmp1899 - 0,ArrayItem[name_x152,i882,i884,6] + sk899 + 0, 0);
glEnd;
tmp1901 := ArrayItem[name_x152,i882,i884,7] + ArrayItem[name_x152,i882,i884,5];
tmp2901 := ArrayItem[name_x152,i882,i884,8] + ArrayItem[name_x152,i882,i884,6];
sk901 := 3;
if ArrayItem[name_x152,i882,i884,8] < 25 then
begin
sk901 := 1;
end;
glBegin (GL_LINE_LOOP);
glColor3f(ArrayColors[ArrayItem[name_x152,i882,i884,9],3], ArrayColors[ArrayItem[name_x152,i882,i884,9],4], ArrayColors[ArrayItem[name_x152,i882,i884,9],5]);
glVertex3f(ArrayItem[name_x152,i882,i884,5] ,tmp2901 - sk901 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] ,ArrayItem[name_x152,i882,i884,6] + sk901 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk901 ,ArrayItem[name_x152,i882,i884,6] , 0);
glVertex3f(tmp1901 - sk901 ,ArrayItem[name_x152,i882,i884,6] , 0);
glVertex3f(tmp1901 ,ArrayItem[name_x152,i882,i884,6] + sk901 , 0);
glVertex3f(tmp1901 ,tmp2901 - sk901 , 0);
glVertex3f(tmp1901 - sk901 - 1 ,tmp2901 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk901 ,tmp2901 , 0);
glEnd;
end;
end
else
begin
tmp1904 := ArrayItem[name_x152,i882,i884,7] + ArrayItem[name_x152,i882,i884,5];
tmp2904 := ArrayItem[name_x152,i882,i884,8] + ArrayItem[name_x152,i882,i884,6];
sk904 := 3;
if ArrayItem[name_x152,i882,i884,8] < 25 then
begin
sk904 := 1;
end;
glBegin (GL_QUAD_STRIP);
glColor3f(ArrayColors[ArrayItem[name_x152,i882,i884,9],12], ArrayColors[ArrayItem[name_x152,i882,i884,9],13], ArrayColors[ArrayItem[name_x152,i882,i884,9],14]);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + 0 ,tmp2904 - sk904 - 0 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + 0 ,ArrayItem[name_x152,i882,i884,6] + sk904 + 0, 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk904 + 0 ,tmp2904 - 0, 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk904 + 0,ArrayItem[name_x152,i882,i884,6] + 0, 0);
glVertex3f(tmp1904 - sk904 - 0,tmp2904 - 0, 0);
glVertex3f(tmp1904 - sk904 - 0,ArrayItem[name_x152,i882,i884,6] + 0, 0);
glVertex3f(tmp1904 - 0,tmp2904 - sk904 - 0, 0);
glVertex3f(tmp1904 - 0,ArrayItem[name_x152,i882,i884,6] + sk904 + 0, 0);
glEnd;
tmp1906 := ArrayItem[name_x152,i882,i884,7] + ArrayItem[name_x152,i882,i884,5];
tmp2906 := ArrayItem[name_x152,i882,i884,8] + ArrayItem[name_x152,i882,i884,6];
sk906 := 3;
if ArrayItem[name_x152,i882,i884,8] < 25 then
begin
sk906 := 1;
end;
glBegin (GL_LINE_LOOP);
glColor3f(ArrayColors[ArrayItem[name_x152,i882,i884,9],15], ArrayColors[ArrayItem[name_x152,i882,i884,9],16], ArrayColors[ArrayItem[name_x152,i882,i884,9],17]);
glVertex3f(ArrayItem[name_x152,i882,i884,5] ,tmp2906 - sk906 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] ,ArrayItem[name_x152,i882,i884,6] + sk906 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk906 ,ArrayItem[name_x152,i882,i884,6] , 0);
glVertex3f(tmp1906 - sk906 ,ArrayItem[name_x152,i882,i884,6] , 0);
glVertex3f(tmp1906 ,ArrayItem[name_x152,i882,i884,6] + sk906 , 0);
glVertex3f(tmp1906 ,tmp2906 - sk906 , 0);
glVertex3f(tmp1906 - sk906 - 1 ,tmp2906 , 0);
glVertex3f(ArrayItem[name_x152,i882,i884,5] + sk906 ,tmp2906 , 0);
glEnd;
end;
end;
end;
end;

Всё так упаковано, человек бы рехнулся. И размер и сложность кода против схемы - несопоставимы.
(особенно доставляет еще и то, что все нижние точки массивов имеют простые понятные имена)
карма: 0

0
файлы: 1ftcg_shema1.png [33.6KB] [402]
Ответов: 16884
Рейтинг: 1239
#80: 2012-03-13 15:14:34 ЛС | профиль | цитата
login писал(а):
Хочется привести пример когда код проигрывает схеме

#pas
glVertex3f(tmp1891 - sk891 - 0,ArrayItem[name_x152,i882,i884,6] + 0, 0);
login писал(а):
Всё так упаковано, человек бы рехнулся.

Ага. Только чокнутый будет отнимать и прибавлять 0. Каждая операция + 0, - 0 требует ~20-30 тактов процессора. Это выполнение команды ADD.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:login
Ответов: 1429
Рейтинг: 50
#81: 2012-03-13 15:15:03 ЛС | профиль | цитата
Tad, нажмите на ссылку внизу поста
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#82: 2012-03-13 15:23:33 ЛС | профиль | цитата
login, да, я уже увидел схему.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1429
Рейтинг: 50
#83: 2012-03-13 15:32:58 ЛС | профиль | цитата
Элементы openGL еще сырые. В них еще нет проверок дефолтных свойств. Чтобы не печатался этот ноль.
[offtop]ноль - отступ рамки обьекта, вместо нуля там будет стоять число (или массив ) [/offtop]

Главную мысль я, надеюсь, смог Вам передать.
Аналогично при работе с мультимассивами (с ними только и приходится работать) выглядят условия:

#pas
if ((ArrayItem[name_x152,i721,i723,2]+ArrayItem[name_x152,i721,i723,1]) <= ArrayItem[name_x152,1,i708,1]) or (ArrayItem[name_x152,i721,i723,1] >= (ArrayItem[name_x152,1,i708,2]+ArrayItem[name_x152,1,i708,1])) then
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#84: 2012-03-13 17:00:26 ЛС | профиль | цитата
А вот так я бы напсал руками
#pas
result3883:= Length(ArrayItem[0,0]) - 1; // включать неизменяемый result3883 в цикл for i882 - извини ...
for i882 := 1 to result2883 do
begin
for i884 := 1 to result3883 do
begin
if ArrayItem[name_x152,i882,i884,4] = 1 then
begin
if ArrayItem[name_x152,i882,i884,15] = 0 then
begin
if ArrayItem[name_x152,i882,i884,3] = 1 then
begin
tmp1891 := ArrayItem[name_x152,i882,i884,7] + ArrayItem[name_x152,i882,i884,5];
tmp2891 := ArrayItem[name_x152,i882,i884,8] + ArrayItem[name_x152,i882,i884,6];
if ArrayItem[name_x152,i882,i884,8] < 25 then sk891 := 1 else sk891 := 3;
glBegin (GL_QUAD_STRIP);
//......................
// и т.д...
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1429
Рейтинг: 50
#85: 2012-03-13 17:38:27 ЛС | профиль | цитата
Tad, точно! Спасибо! Вы внимательный. Я забыл оптимизировать элемент работающий с размерами массивов SetLength.

Там не должно быть


#pas
result3883:= Length(ArrayItem[0,0])
for i884 := 1 to result3883 do

Должно было быть:

#pas
for i884 := 1 to Length(ArrayItem[0,0]) - 1 do
Как и во всех остальных случаях в этом коде.

Tad писал(а):
А вот так я бы написал руками

Я потратил на эту схему 2 минуты. Руками я бы потратил день на написание, еще день на ошибки. И еще день на отдых после этого . Соотношение скорости и усилий 1 к - сколько раз помещается, в трех сутках, по 2 минуты

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

А так выглядит эта функция среди других функций, если в мультике выйти на уровень выше:
verh1.png

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

Я очень уважительно отношусь к программистам "в коде", они более битые и более дисциплинированные, именно потому, что код, сцуко, сложный )
карма: 0

0
файлы: 1verh1.png [30.1KB] [402]
Ответов: 16884
Рейтинг: 1239
#86: 2012-03-13 17:54:50 ЛС | профиль | цитата
login писал(а):
Там не должно быть
Там вообще не должно быть Length(ArrayItem[0,0]) и любого другого Array. Как только ты сделал SetLength сразу присваивай переменной значение
xx := Length(ArrayItem[0,0])-1 (там скорость не важна), тогда во время, если важна скорость, опроса масивов не будешь тратить время на вычисление этого Length(ArrayItem)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:login
Ответов: 1061
Рейтинг: 22
#87: 2012-03-16 21:39:56 ЛС | профиль | цитата
GraphCode.up1
А вот и простенький анализатор кода! Немного не доделан, но принцип полностью изложен!
карма: 0

0
Ответов: 1376
Рейтинг: 197
#88: 2012-03-16 21:44:33 ЛС | профиль | цитата
[flood]Щас nesco увидит применение EventFromData схема с ужасающим вирусом[/flood]
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#89: 2012-03-16 22:13:07 ЛС | профиль | цитата
RinniX писал(а):
Немного не доделан
напоминает "чуть-чуть беременна"
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1821
Рейтинг: 168
#90: 2012-03-16 22:17:34 ЛС | профиль | цитата
RinniX, дабы легче было! HiLightMemo
------------ Дoбавленo в 22.17:
Вот меня убивают такие жуткие конструкции
shockconstruction.png
карма: 5

0
файлы: 1shockconstruction.png [1KB] [326]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)