Показать сообщение отдельно
Старый 14.08.2011, 23:24   #242
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.



Супер функция, попозже сделаю поверхность на вид сплошной и на все вертексы.

Handle CreateSpring(double torrad, double inrad,int elements,int segments,int vitki,double shagvitka){


Handle mesh=xCreateMesh();
Handle meshsurf=xCreateSurface(mesh);
int i,h,x;
double x1,y1,z1;
//vertex creation
    for (i=0;i<=(vitki*elements);i++){
        for (h=0;h<=segments;h++){
            double deg1,deg2;
            //перевод в радианы
            /*
            1градус=3,1417/180
            */
            deg1=i*6.2834/elements;
            deg2=h*6.2834/segments;
            x1=torrad*sin(deg1)+inrad*cos(deg2)*sin(deg1);
            y1=torrad*cos(deg1)+inrad*cos(deg2)*cos(deg1);
            z1=inrad*sin(deg2)+shagvitka*i/elements;
                xAddVertex (meshsurf,x1,y1,z1,inrad*h/segments,inrad*i/elements);
            };
        };
int v0,v1,v2,v3;
int qvert = xCountVertices(meshsurf)-1;
   for (x=0;x<=(vitki*elements);x++){
        for (i=0;i<=segments;i++){
            v0=i+segments*x;
            v1=v0+1;
            v2=v0+segments;
            v3=v2+1;
            if (v3<=qvert) {
                xAddTriangle (meshsurf,v2,v0,v3);
                xAddTriangle (meshsurf,v0,v1,v3);
            };
        };
    };

xUpdateNormals (mesh);
return mesh;
};
P.s. Посоветуйте математическую либу. Щоб там оперции с векторами были, штоб много математики разной. И либу, которая синусы косинусы резко считает, пусть и с погрешностью.

предлагать решать sin(x)=x-x^3/3!+x^5/5!-x^7/7!... до полного самоудвлетворения не надо
http://alglib.sources.ru/?

Последний раз редактировалось dsd, 15.08.2011 в 00:30.
(Offline)
 
Ответить с цитированием