44
41
void BLI_jitterate1(float *jit1, float *jit2, int num, float rad1)
47
44
float vecx, vecy, dvecx, dvecy, x, y, len;
49
for (i = 2*num-2; i>=0 ; i-=2) {
46
for (i = 2 * num - 2; i >= 0; i -= 2) {
50
47
dvecx = dvecy = 0.0;
53
for (j = 2*num-2; j>=0 ; j-=2) {
50
for (j = 2 * num - 2; j >= 0; j -= 2) {
55
52
vecx = jit1[j] - x - 1.0f;
56
vecy = jit1[j+1] - y - 1.0f;
57
for (k = 3; k>0 ; k--) {
58
if ( fabsf(vecx)<rad1 && fabsf(vecy)<rad1) {
59
len= sqrt(vecx*vecx + vecy*vecy);
60
if (len>0 && len<rad1) {
68
if ( fabsf(vecx)<rad1 && fabsf(vecy)<rad1) {
69
len= sqrt(vecx*vecx + vecy*vecy);
70
if (len>0 && len<rad1) {
78
if ( fabsf(vecx)<rad1 && fabsf(vecy)<rad1) {
79
len= sqrt(vecx*vecx + vecy*vecy);
80
if (len>0 && len<rad1) {
53
vecy = jit1[j + 1] - y - 1.0f;
54
for (k = 3; k > 0; k--) {
55
if (fabsf(vecx) < rad1 && fabsf(vecy) < rad1) {
56
len = sqrt(vecx * vecx + vecy * vecy);
57
if (len > 0 && len < rad1) {
65
if (fabsf(vecx) < rad1 && fabsf(vecy) < rad1) {
66
len = sqrt(vecx * vecx + vecy * vecy);
67
if (len > 0 && len < rad1) {
75
if (fabsf(vecx) < rad1 && fabsf(vecy) < rad1) {
76
len = sqrt(vecx * vecx + vecy * vecy);
77
if (len > 0 && len < rad1) {
105
102
float vecx, vecy, dvecx, dvecy, x, y;
107
for (i=2*num -2; i>= 0 ; i-=2) {
104
for (i = 2 * num - 2; i >= 0; i -= 2) {
108
105
dvecx = dvecy = 0.0;
111
for (j =2*num -2; j>= 0 ; j-=2) {
108
for (j = 2 * num - 2; j >= 0; j -= 2) {
113
110
vecx = jit1[j] - x - 1.0f;
114
vecy = jit1[j+1] - y - 1.0f;
116
if ( fabsf(vecx)<rad2) dvecx+= vecx*rad2;
118
if ( fabsf(vecx)<rad2) dvecx+= vecx*rad2;
120
if ( fabsf(vecx)<rad2) dvecx+= vecx*rad2;
122
if ( fabsf(vecy)<rad2) dvecy+= vecy*rad2;
124
if ( fabsf(vecy)<rad2) dvecy+= vecy*rad2;
126
if ( fabsf(vecy)<rad2) dvecy+= vecy*rad2;
111
vecy = jit1[j + 1] - y - 1.0f;
113
if (fabsf(vecx) < rad2) dvecx += vecx * rad2;
115
if (fabsf(vecx) < rad2) dvecx += vecx * rad2;
117
if (fabsf(vecx) < rad2) dvecx += vecx * rad2;
119
if (fabsf(vecy) < rad2) dvecy += vecy * rad2;
121
if (fabsf(vecy) < rad2) dvecy += vecy * rad2;
123
if (fabsf(vecy) < rad2) dvecy += vecy * rad2;
138
memcpy(jit1,jit2,2 * num * sizeof(float));
135
memcpy(jit1, jit2, 2 * num * sizeof(float));
142
void BLI_initjit(float *jitarr, int num)
139
void BLI_jitter_init(float *jitarr, int num)
144
141
float *jit2, x, rad1, rad2, rad3;
144
if (num == 0) return;
149
jit2= MEM_mallocN(12 + 2*sizeof(float)*num, "initjit");
150
rad1= 1.0f/sqrtf((float)num);
151
rad2= 1.0f/((float)num);
152
rad3= sqrtf((float)num)/((float)num);
146
jit2 = MEM_mallocN(12 + 2 * sizeof(float) * num, "initjit");
147
rad1 = 1.0f / sqrtf((float)num);
148
rad2 = 1.0f / ((float)num);
149
rad3 = sqrtf((float)num) / ((float)num);
154
151
BLI_srand(31415926 + num);
156
for (i=0; i<2*num; i+=2) {
157
jitarr[i]= x+ rad1*(float)(0.5-BLI_drand());
158
jitarr[i+1]= ((float)i/2)/num +rad1*(float)(0.5-BLI_drand());
153
for (i = 0; i < 2 * num; i += 2) {
154
jitarr[i] = x + rad1 * (float)(0.5 - BLI_drand());
155
jitarr[i + 1] = ((float)i / 2) / num + rad1 * (float)(0.5 - BLI_drand());
163
for (i=0 ; i<24 ; i++) {
160
for (i = 0; i < 24; i++) {
164
161
BLI_jitterate1(jitarr, jit2, num, rad1);
165
162
BLI_jitterate1(jitarr, jit2, num, rad1);
166
163
BLI_jitterate2(jitarr, jit2, num, rad2);