parent
3834812872
commit
d9f5b4e13a
@ -0,0 +1,64 @@ |
||||
//NOT FINISHED
|
||||
|
||||
package main |
||||
|
||||
import ( |
||||
"image" |
||||
"image/png" |
||||
"math/cmplx" |
||||
"os" |
||||
) |
||||
|
||||
type Color struct { |
||||
r uint32 |
||||
g uint32 |
||||
b uint32 |
||||
a uint32 |
||||
} |
||||
|
||||
func (c Color) RGBA() (r, g, b, a uint32) { |
||||
return c.r, c.g, c.b, c.a |
||||
} |
||||
|
||||
func green() Color { |
||||
return Color{0, 255, 0, 255} |
||||
} |
||||
|
||||
func blue() Color { |
||||
return Color{0, 0, 255, 255} |
||||
} |
||||
|
||||
func main() { |
||||
f, err := os.Create("out.png") |
||||
if err != nil { |
||||
os.Exit(1) |
||||
} |
||||
const ( |
||||
xmin, ymin, xmax, ymax = -2, -2, +2, +2 |
||||
width, height = 1024, 1024 |
||||
) |
||||
img := image.NewRGBA(image.Rect(0, 0, width, height)) |
||||
for py := 0; py < height; py++ { |
||||
y := float64(py)/height*(ymax-ymin) + ymin |
||||
for px := 0; px < width; px++ { |
||||
x := float64(px)/width*(xmax-xmin) + xmin |
||||
z := complex(x, y) |
||||
img.Set(px, py, mandelbrot(z)) |
||||
} |
||||
} |
||||
png.Encode(f, img) |
||||
f.Close() |
||||
} |
||||
|
||||
func mandelbrot(z complex128) Color { |
||||
const iterations = 200 |
||||
const contrast = 15 |
||||
var v complex128 |
||||
for n := uint8(0); n < iterations; n++ { |
||||
v = v*v + z |
||||
if cmplx.Abs(v) > 2 { |
||||
return Color{0, uint32(255 - contrast*n), 0, 255} |
||||
} |
||||
} |
||||
return blue() |
||||
} |
After Width: | Height: | Size: 6.2 KiB |
Loading…
Reference in new issue