1 |
/* Copyright (c) 1986 Regents of the University of California */ |
2 |
|
3 |
#ifndef lint |
4 |
static char SCCSid[] = "$SunId$ LBL"; |
5 |
#endif |
6 |
|
7 |
/* |
8 |
* brandom.c - blue noise function. |
9 |
* |
10 |
* 11/8/87 |
11 |
*/ |
12 |
|
13 |
#include "random.h" |
14 |
|
15 |
|
16 |
double |
17 |
brandom(l) /* blue noise function */ |
18 |
int l; /* length between 1 and 8 */ |
19 |
{ |
20 |
static float his[8] = {.5,.5,.5,.5,.5,.5,.5,.5}; |
21 |
static double avg = .5; |
22 |
static int x = 0; |
23 |
double y = frandom(); |
24 |
|
25 |
if (avg < .5) |
26 |
y = 1 - 2*y*avg; |
27 |
else |
28 |
y = 2*y*(1 - avg); |
29 |
/* update */ |
30 |
avg += (y - his[x])/l; |
31 |
his[x] = y; |
32 |
if (++x >= l) x = 0; |
33 |
|
34 |
return(y); |
35 |
} |