径向渐变带

时间:2019-07-27 19:32:31

标签: go radial-gradients

我使用以下代码生成径向渐变:

func GenerateGradient(center ds.Coord, radius int, dMethod string) *[]GradientRecord {
var r []GradientRecord
for y := center.Y - radius; y <= center.Y+radius; y++ {
    for x := center.X - radius; x <= center.X+radius; x++ {
        d := float64(DCalc(center, ds.Coord{X: x, Y: y}, dMethod))
        p := ds.Coord{X: x, Y: y}
        var v float64
        v = Lerp(float64(radius), d, 1)
        record := GradientRecord{Point: p.Wrap("t"), Value: v}
        r = append(r, record)
    }
}
return &r

}

DCalc使用的是欧几里得距离。

产生这个:

enter image description here

如您所见,它很平滑。但是我希望渐变结束于半径的位置,因此在Lerp线中将其更改为:

    v = 1 - Lerp(float64(radius), d/float64(radius), 1)

产生这个:

enter image description here

如您所见,有一个十字形的条带。想知道是否有办法将其删除吗?我实际上不需要生成图像,只需生成用于其他内容的平滑渐变过渡数组即可。我做了一张照片以更好地说明问题。

谢谢!

func Lerp(v0, v1, t float64) float64 {
return (1-t)*v0 + t*v1

}

0 个答案:

没有答案