# Use state variables in rule expression

```fractal {
// Set region margins to left=-3.0, bottom=-1.5, right=0.0, top=1.5
// Declare state vector as [x,n,p] where x and n are built-in variables, and p is a custom variable
orbit [<-3.0,-1.5>,<0.0,1.5>] [x,n,p] {
// Initialize variable p
begin {
p = w;
}
// Iterate for n from 0 to 200 stopping when mod2(x) > 40
loop [0, 200] (mod2(x) > 40) {
// Declare orbit equation where x is a state variable and w is current point of region
x = x * x + w;
}
}
// Set background color to alpha=1, red=0, green=0, blue=0
color [(1,0,0,0)] {
// Initialize variables c1 and c2
init {
c1 = mod2(x) / 1000;
c2 = <x>;
}
// Apply rule when n > 0 and re(p) >= 0 and im(p) >= 0 and set opacity to 1.0
rule (n > 0 & re(p) >= 0 & im(p) >= 0) [1] {
// Compute alpha component
1,
// Compute red component
(1 + sin(c2 / pi)) / 2,
// Compute green component
(1 + sin(c2 / pi)) / 2,
// Compute blue component
(1 + sin(c1 / pi)) / 2
}
// Apply rule when n > 0 and re(p) >= 0 and im(p) < 0 and set opacity to 1.0
rule (n > 0 & re(p) >= 0 & im(p) < 0) [1] {
// Compute alpha component
1,
// Compute red component
(1 + sin(c1 / pi)) / 2,
// Compute green component
(1 + sin(c2 / pi)) / 2,
// Compute blue component
(1 + sin(c1 / pi)) / 2
}
// Apply rule when n > 0 and re(p) < 0 and im(p) >= 0 and set opacity to 1.0
rule (n > 0 & re(p) < 0 & im(p) >= 0) [1] {
// Compute alpha component
1,
// Compute red component
(1 + sin(c2 / pi)) / 2,
// Compute green component
(1 + sin(c1 / pi)) / 2,
// Compute blue component
(1 + sin(c2 / pi)) / 2
}
// Apply rule when n > 0 and re(p) < 0 and im(p) < 0 and set opacity to 1.0
rule (n > 0 & re(p) < 0 & im(p) < 0) [1] {
// Compute alpha component
1,
// Compute red component
(1 + sin(c2 / pi)) / 2,
// Compute green component
(1 + sin(c1 / pi)) / 2,
// Compute blue component
(1 + sin(c1 / pi)) / 2
}
}
}```

Use state variables in rule expression