Короче, вот вам решение: Код (Text): #define MAX_POINTS 4000 #define RADIUS 1.0 typedef struct point_t { float x, y, z, r, g, b; } point_t; point_t points[MAX_POINTS]; float square(float x) { return x*x; } point_t *finalize_p(point_t *p) { p->r = gen_random()*0.75+0.25; p->g = gen_random()*0.75+0.25; p->b = gen_random()*0.75+0.25; return ++p; } void GenMesh() { srand(clock()); float x=-1; for (point_t *p = &points[0]; p<&points[MAX_POINTS]; ) { float x = gen_random()*2-1; float max_r = sqrt(1 - square(x)); p->x = x*RADIUS; float angle = gen_random() * 2 * M_PI; p->y = max_r*RADIUS*cosf(angle); //* cosf(gen_random() * 2 * M_PI) * RADIUS;//y; p->z = max_r*RADIUS*sinf(angle);//sqrt(1-square(p->x)-square(p->y)); p = finalize_p(p); } } float gen_random() { return float(rand())/(RAND_MAX-1); }
SadKo Молодец, возьми с полки пирожок - за неоценимый вклад в реализацию алгоритма, озвученного aa_dav 5 днями и 2 страницами ранее в #30 и #46