倒画弧形?

4
我正在将一些Slick Graphics类移植到与AWT兼容,但我遇到了一个问题。在OpenGL上运行的Slick会顺时针绘制弧线。而AWT定义它们为逆时针绘制,就像在数学中一样。我想知道如何将Slick的弧线逆时针绘制,以匹配AWT。
我期望看到的图片:
http://i.imgur.com/mmMHjhU.png
我得到的图片:
https://istack.dev59.com/3OYW2.webp
1个回答

4

This is the function to draw an arc in Slick2D:

public void drawArc(float x1,
                    float y1,
                    float width,
                    float height,
                    float start,
                    float end)

由于 Slick 绘制这些弧是顺时针的(0-360度),因此您可以进行一些简单的算术运算以获得所需的效果。

enter image description here

A 和 B 是您希望在其之间绘制弧形的原始角度,例如 0 和 90 度。 drawArc(0,0,1,1,A,B) 将呈现从 A 到 B 的弧形,但我们希望一个从 C 到 D 的弧形,这是与 A 到 B 相同但逆时针的弧形。由于您已经知道 A 和 B 的值(例如 0 和 90),您可以使用以下内容获取 C 和 D 的值:

C = 360 - B

D = 360 - A

因此,现在我们只需使用 drawArc(0,0,1,1,C,D)

使用以下值进行测试:

A = 0

B = 90

C = 360 - 90 = 270

D = 360 - 0 = 360

这将绘制一个从 270 到 360 的弧形,这与从 0 到 90 逆时针的弧形相同。


需要用弧度吗?我目前使用的是度数,到目前为止还好。 - Octavia Togami
NVM,看起来是度数。但问题在于:负值会倒置,但它们不会改变度数;结果看起来像这样:http://prntscr.com/3co1ua 而不是这样:http://prntscr.com/3co201。 - Octavia Togami
哦,它很接近了。但是对于180度到270度的情况,Slick绘制的圆形就像你上面的那个一样,但AWT在x轴的另一侧。 - Octavia Togami
是的!它可以工作了!我没有注意到 C 使用了 B,而 D 使用了 A,现在它完美地工作了! - Octavia Togami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接