В бытность свою студентом стройфака я всегда оптимистично в течении семестра полагал, что: так этот, тот и вот тот предмет с нехилыми курсачами я куплю, и пребывая в полном спокойствии не появлялся ни на лекциях ни на практических занятиях. А затем, внезапно, при неожиданном наступлении зачетной недели выяснялось, что вот эти восемьсот рублей надо растянуть до начала экзаменов(и дело происходит не в общаге, и интернета нет, и писать поясниловку надо от руки, а картинки рисовать от руки по госту пару-тройку а1, а право выполнять все на компе можно было заслужить только истовым навязчивым ботанизмом). А планируемые покупки в бюджет не влазят и кредита никто не даст. Пробовали ли вы когда-нибудь делать курсовую работу не зная даже теории и имея в руках только !неправильный! пример сляпанный каким-то дебилом прошлых лет из нескольких работ? Пробовали ли вы сдать результат враждебно настроенному преподу постепенно осознающему, что вот это перед ним сидящее тело передумало дать ему пару-тройку тыщь? К четвертому курсу я развил навык до уровня сочинения теории из примера расчета

А как я весело передумал 27 мая заказывать диплом в виду финансовых затруднений. И как я его подписал за три дня до конца срока, и как надо мной ржали преподы на защите, когда выяснилось, что он сделан так, что проходит по всем кафедрам. Эмм... О чем это я? У меня прокачан скилл нахрапа :D.
Насчет великов, лежащие в инете реализация редко иначе как анальными назвать нельзя, это те в которых я по коду могу вообразить, что примерно там происходит. А чаще вся информация сводится к паре рисунков либо примитивного уровня либо художественного.
Возможно я недооцениваю матричные операторы(проще сказать, что я о них не имею представления) Но вполне очевидно, что они(операторы) могут каким-либо(весьма разнообразным) образом изменить существующие данные, но вот превратить нолики в 4 миллиона не повторяющихся набора данных со связанными краями, это вряд ли, я не верю в это.
ЗЫ: Походу никто не осознает что у меня внутри класса происходит на самом деле, ну и ладно.
Кстати как эти матричные операторы можно применить к этому:

void Surface_Switcherm(int flag){
Handle temp[3*number];
if(flag==0){ for(int i=0;i<3*number;i++){temp[i]=surfm[0][i];
for(int k=0;k<3*number-1;k++) {surfm[k][i]=surfm[k+1][i];}
surfm[3*number-1][i]=temp[i];
int qvert=xCountVertices(temp[i]);
for(int j=0;j<qvert;j++){xVertexCoords(temp[i],j,xVertexX(temp[i],j)+3*number*resolution,xVertexY(temp[i],j),xVertexZ(temp[i],j));}}
for(int i=0;i<3*number;i++){Surface_Monolitizerm(3*number-1,i);}
for(int i=number;i<2*number;i++){surfm[number-1][i]=surfm[2*number-1][i];int qvert=xCountVertices(surfm[number-1][i]);
for(int j=0;j<qvert;j++){xVertexCoords(surfm[number-1][i],j,xVertexX(surfm[number-1][i],j)-number*resolution,xVertexY(surfm[number-1][i],j),xVertexZ(surfm[number-1][i],j));}}
for(int i=number;i<2*number;i++){Surface_Monolitizerm(number-1,i);}
}
if(flag==1){ for(int i=0;i<3*number;i++){temp[i]=surfm[3*number-1][i];
for(int k=3*number-1;k>0;k--) {surfm[k][i]=surfm[k-1][i];}
surfm[0][i]=temp[i];
int qvert=xCountVertices(temp[i]);
for(int j=0;j<qvert;j++){xVertexCoords(temp[i],j,xVertexX(temp[i],j)-3*number*resolution,xVertexY(temp[i],j),xVertexZ(temp[i],j));}}
for(int i=0;i<3*number;i++){Surface_Monolitizerm(0,i);}
for(int i=number;i<2*number;i++){surfm[2*number][i]=surfm[number][i];int qvert=xCountVertices(surfm[2*number][i]);
for(int j=0;j<qvert;j++){xVertexCoords(surfm[2*number][i],j,xVertexX(surfm[2*number][i],j)+number*resolution,xVertexY(surfm[2*number][i],j),xVertexZ(surfm[2*number][i],j));}}
for(int i=number;i<2*number;i++){Surface_Monolitizerm(2*number,i);}
}
if(flag==2){ for(int i=0;i<3*number;i++){temp[i]=surfm[i][0];
for(int k=0;k<3*number-1;k++) {surfm[i][k]=surfm[i][k+1];}
surfm[i][3*number-1]=temp[i];
int qvert=xCountVertices(temp[i]);
for(int j=0;j<qvert;j++){xVertexCoords(temp[i],j,xVertexX(temp[i],j),xVertexY(temp[i],j),xVertexZ(temp[i],j)+3*number*resolution);}}
for(int i=0;i<3*number;i++){Surface_Monolitizerm(i,3*number-1);}
for(int i=number;i<2*number;i++){surfm[i][number-1]=surfm[i][2*number-1];int qvert=xCountVertices(surfm[i][number-1]);
for(int j=0;j<qvert;j++){xVertexCoords(surfm[i][number-1],j,xVertexX(surfm[i][number-1],j),xVertexY(surfm[i][number-1],j),xVertexZ(surfm[i][number-1],j)-number*resolution);}}
for(int i=number;i<2*number;i++){Surface_Monolitizerm(i,number-1);}
}
if(flag==3){ for(int i=0;i<3*number;i++){temp[i]=surfm[i][3*number-1];
for(int k=3*number-1;k>0;k--) {surfm[i][k]=surfm[i][k-1];}
surfm[i][0]=temp[i];
int qvert=xCountVertices(temp[i]);
for(int j=0;j<qvert;j++){xVertexCoords(temp[i],j,xVertexX(temp[i],j),xVertexY(temp[i],j),xVertexZ(temp[i],j)-3*number*resolution);}}
for(int i=0;i<3*number;i++){Surface_Monolitizerm(i,0);}
for(int i=number;i<2*number;i++){surfm[i][2*number]=surfm[i][number];int qvert=xCountVertices(surfm[i][2*number]);
for(int j=0;j<qvert;j++){xVertexCoords(surfm[i][2*number],j,xVertexX(surfm[i][2*number],j),xVertexY(surfm[i][2*number],j),xVertexZ(surfm[i][2*number],j)+number*resolution);}}
for(int i=number;i<2*number;i++){Surface_Monolitizerm(i,2*number);}
}
}
void Data_Switcherm(int flag){
float **temp[3*number+2];
if(flag==0){
for(int i=0;i<3*number+2;i++){
temp[i]=stripm[0][i];
for(int k=0;k<3*number+1;k++) {stripm[k][i]=stripm[k+1][i];}
stripm[3*number+1][i]=temp[i];
Diamond_Squarem(3*number+1,i,sharpness,smothing);}}
if(flag==1){
for(int i=0;i<3*number+2;i++){
temp[i]=stripm[3*number+1][i];
for(int k=3*number+1;k>0;k--) {stripm[k][i]=stripm[k-1][i];}
stripm[0][i]=temp[i];
Diamond_Square2m(0,i,sharpness,smothing);}}
if(flag==2){
for(int i=0;i<3*number+2;i++){
temp[i]=stripm[i][0];
for(int k=0;k<3*number+1;k++) {stripm[i][k]=stripm[i][k+1];}
stripm[i][3*number+1]=temp[i];
Diamond_Squarem(i,3*number+1,sharpness,smothing);}}
if(flag==3){
for(int i=0;i<3*number+2;i++){
temp[i]=stripm[i][3*number+1];
for(int k=3*number+1;k>0;k--) {stripm[i][k]=stripm[i][k-1];}
stripm[i][0]=temp[i];
Diamond_Square3m(i,0,sharpness,smothing);}}
}