вообщем всякий там гемор мы проходим
и в лом мне было расписовать его...
и было так зделано что произошла мысля
)
короче алгоритм я свел к другому представлению треугольника
тоесть стандарт
---1
--1-1
-1-2-1
1-3-3-1
а я свел к
1
11
121
1331
что дало очень быстрое нахождение любой точки на линии
сначала думал ето зделать на блице - гемороя много, особено с линиями и масивами
ООП рулит , и масивы от irrlichtа ваще отпад
правда потом оказалось что преобразование такого треугольника в обратный - довольно геморойная чтука, и она у меня больше самого алгоритма получения треугольника
вообщем : прога генерит до тругольник до заданой глубины, раставляет все по местам и сохраняет в csv
#include <irrlicht.h>
class binom
{
public:
irr::core::array<int> line;
void generate_line (irr::core::array<int> line2)
{
line.push_back(1);
for (int pos = 1; pos < (int)line2.size(); pos ++ ){line.push_back(line2[pos-1] + line2[pos]);}
line.push_back(1);
}
};
void main()
{
int num = 30;
binom pas[255];
pas[0].line.push_back(1);
for (int pos = 1; pos < num; pos++){pas[pos].generate_line(pas[pos-1].line);}
FILE * out = fopen ("test.csv","wb");
for (int pos = 0; pos < num; pos++)
{
for (int x = 0; x<pas[num-1].line.size()-pos-1;x++){fwrite(new char(59),sizeof(char),1,out);}
for(int xx = 0; xx <pas[pos].line.size();xx++)
{
irr::core::stringc st;
st+=pas[pos].line[xx];
fwrite(st.c_str(),st.size(),1,out);
fwrite(new char(59),sizeof(char),1,out);
fwrite(new char(59),sizeof(char),1,out);
}
fwrite(new char(13),sizeof(char),1,out);
fwrite(new char(10),sizeof(char),1,out);
}
fclose(out);
return;
}
песемисты - напишите прогу меньше