HSL(360,1,1)) 关于圆盘,-6ren">
gpt4 book ai didi

c# - 计算 "Pie Segment"和 "sub areas"区域的边界点

转载 作者:行者123 更新时间:2023-11-30 16:36:22 25 4
gpt4 key购买 nike

背景:

我最近在玩弄 GDI+ 来绘制一个显示 360 度全面颜色变化的“圆盘”。 (我挖出了一些 HSL 到 RGB 的代码来循环 HSL(1,1,1) -> HSL(360,1,1))

关于圆盘,我首先用上面的方法画了一个完整的实心圆,然后在中心上方用灰色画了第二个圆,得到以下内容

alt text

所以这一切都很好...但我意识到 GDI+ 通过 FillPie 方法将我们与这里发生的许多棘手的匹配隔离开来。此外,FillPie 要求您为饼图提供边界矩形而不是半径长度。它还会执行完整的段填充,并且不允许您仅指定该段的一部分。

问题:

任何人都可以指出一些数学函数的方向或对我需要什么论坛来计算以下“绿色填充区域”的面积和绘图点给出任何解释:

Point `c` - an x,y co-ordinate
Angle `A` - an angle from horizontal
Angle `B - an angle from horizontal where `B` - `A` == the sweep angle
Length `r` - a distance from `c`
Length `r2` - a distance from `c` where `r2` - `r` == the `height` of the segment to be filled.

alt text

数学资源的链接很好,但我已经快速谷歌并查看了 Wolfram Math,可以找到我要找的东西。此外,如果有某种方法可以生成一系列边界 (x,y) 坐标,可以将其作为 Point[] 传递给 Graphics.FillPolygon,那也很酷。

最佳答案

面积是外圆盘部分和内圆盘部分的差值。圆盘部分的面积与扫角成正比:

area = (b-a)*((r+r2)^2-r^2)/2

ab 必须以弧度表示。对于b-a = 2*Piarea = Pi*(r+r2)^2 - Pi*r^2 是外圆盘和内圆盘面积之差.

您可以在内/外圆上使用生成点

x = cx + r * cos(t)     /     x = cx + (r+r2) * cos(t)
y = cy + r * sin(t) / y = cy + (r+r2) * sin(t)

其中 tab

关于c# - 计算 "Pie Segment"和 "sub areas"区域的边界点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/931807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com