⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multi.c

📁 [Game.Programming].Academic - Graphics Gems (6 books source code)
💻 C
字号:
#include <math.h>#define RAN_DOUBLE(l, h)    (((double) random()/0x80000000U)*((h) - (l)) + (l))#define RAN_INT(l, h)	    ((int) (RAN_DOUBLE(0, (h)-(l)+1) + (l)))typedef struct {    double x, y;} Point2;unsigned long random();	    /* expected to return a random int in [0, 2^31-1] *//* * MultiJitter() takes an array of Point2's and the dimension, and fills the * the array with the generated sample points. * *    p[] must have length m*n. *    m is the number of columns of cells. *    n is the number of rows of cells. */voidMultiJitter(Point2 p[], int m, int n) {    double subcell_width;    int i, j;    subcell_width = 1.0/(m*n);    /* Initialize points to the "canonical" multi-jittered pattern. */    for (i = 0; i < m; i++) {	for (j = 0; j < n; j++) {	    p[i*n + j].x = i*n*subcell_width + j*subcell_width	     + RAN_DOUBLE(0, subcell_width);	    p[i*n + j].y = j*m*subcell_width + i*subcell_width	     + RAN_DOUBLE(0, subcell_width);	}    }    /* Shuffle x coordinates within each column of cells. */    for (i = 0; i < m; i++) {	for (j = 0; j < n; j++) {	    double t;	    int k;	    k = RAN_INT(j, n - 1);	    t = p[i*n + j].x;	    p[i*n + j].x = p[i*n + k].x;	    p[i*n + k].x = t;	}    }    /* Shuffle y coordinates within each row of cells. */    for (i = 0; i < n; i++) {	for (j = 0; j < m; j++) {	    double t;	    int k;	    k = RAN_INT(j, m - 1);	    t = p[j*n + i].y;	    p[j*n + i].y = p[k*n + i].y;	    p[k*n + i].y = t;	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -