使用 AddArc 创建一个 "pie element" with RasterX 包

Create a "pie element" with RasterX package using AddArc

我正在为 Fyne 开发图表小部件,我使用 rasterx 程序包 (https://github.com/srwiley/rasterx),它运行良好。但是我花了几个小时尝试制作圆弧(创建饼图元素)但没有成功。

让我们以此为出发点:

cx, cy := float64(w/2.0), float64(h/2.0)
r := float64(w / 3.0)
angle := 45.0
rot := angle * math.Pi / 180.0

我拿https://github.com/srwiley/rasterx/blob/master/shapes.go#L99处的AddArc函数来理解原理,做:

points := []float64{r, r, angle, 1, 0, px, py}

stroker.Start(rasterx.ToFixedP(px, py))
rasterx.AddArc(points, cx, cy, px, py, stroker)
stroker.Stop(false)
stroker.Draw()

结果是圆,不是圆弧。

由于 rasterx 包是基于 SVG 2.0 规范的,所以我可能漏掉了什么。你能帮我看看如何为给定角度创建“饼图元素”吗?

非常感谢。

PS: 除了rasterx,我不应该使用其他包,请不要告诉我使用其他包。

这只是一个猜测,但 AddArc 不想要弧度角而不是度数吗?

points 中的 px、py 需要与传递给 AddArc 的不同。这对我有用:

        angle := 45.0
        rot1 := angle * math.Pi / 180.0
        rot2 := (angle - 90) * math.Pi / 180.0

        p1x := cx + r*math.Cos(rot1)
        p1y := cy + r*math.Sin(rot1)
        p2x := cx + r*math.Cos(rot2)
        p2y := cy + r*math.Sin(rot2)

        points := []float64{r, r, angle, 1, 0, p2x, p2y}

...

        stroker.Start(rasterx.ToFixedP(p1x, p1y))
        rasterx.AddArc(points, cx, cy, p1x, p1y, stroker)