Tooling
This commit is contained in:
@@ -20,7 +20,8 @@ import (
|
||||
type DataMapOptions struct {
|
||||
// Sea marks cells to render as flat water rather than data. Optional.
|
||||
Sea []bool
|
||||
// Size is the output side in pixels; the field is point-sampled down to it.
|
||||
// Size is the output width in pixels; the field is point-sampled down to it and the height follows the
|
||||
// field's own aspect.
|
||||
Size int
|
||||
// Log renders log10 of the value, for anything with a heavy tail — drainage area spans seven decades and
|
||||
// is unreadable linearly.
|
||||
@@ -64,9 +65,10 @@ func WriteDataMap(path string, f *Field, opt DataMapOptions) error {
|
||||
span = 1
|
||||
}
|
||||
|
||||
img := image.NewRGBA(image.Rect(0, 0, size, size))
|
||||
for y := 0; y < size; y++ {
|
||||
sy := y * f.H / size
|
||||
sizeH := aspectH(f, size)
|
||||
img := image.NewRGBA(image.Rect(0, 0, size, sizeH))
|
||||
for y := 0; y < sizeH; y++ {
|
||||
sy := y * f.H / sizeH
|
||||
for x := 0; x < size; x++ {
|
||||
sx := x * f.W / size
|
||||
i := sy*f.W + sx
|
||||
@@ -123,9 +125,13 @@ func WriteBasinMap(path string, w, h int, receiver []int32, sea []bool, size int
|
||||
}
|
||||
}
|
||||
|
||||
img := image.NewRGBA(image.Rect(0, 0, size, size))
|
||||
for y := 0; y < size; y++ {
|
||||
sy := y * h / size
|
||||
sizeH := int(float64(size)*float64(h)/float64(w) + 0.5)
|
||||
if sizeH < 1 {
|
||||
sizeH = 1
|
||||
}
|
||||
img := image.NewRGBA(image.Rect(0, 0, size, sizeH))
|
||||
for y := 0; y < sizeH; y++ {
|
||||
sy := y * h / sizeH
|
||||
for x := 0; x < size; x++ {
|
||||
sx := x * w / size
|
||||
i := sy*w + sx
|
||||
@@ -191,6 +197,10 @@ func sampleStops(s [][3]float64, t float64) [3]float64 {
|
||||
return [3]float64{a[0] + (b[0]-a[0])*u, a[1] + (b[1]-a[1])*u, a[2] + (b[2]-a[2])*u}
|
||||
}
|
||||
|
||||
// HSV is exported because the region map colours its regions the same way the basin map colours its basins:
|
||||
// a hash of the id straight to a hue, so neighbours get unrelated colours and a boundary is a hard edge.
|
||||
func HSV(hue, sat, val float64) [3]float64 { return hsv(hue, sat, val) }
|
||||
|
||||
func hsv(hue, sat, val float64) [3]float64 {
|
||||
h6 := hue * 6
|
||||
i := int(h6)
|
||||
|
||||
Reference in New Issue
Block a user