首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找要传递给Java Graphics的drawArc()的startAngle和arcAngle

查找要传递给Java Graphics的drawArc()的startAngle和arcAngle
EN

Stack Overflow用户
提问于 2015-05-10 05:03:10
回答 3查看 4.8K关注 0票数 4

因此,我有一个使用SDO_GEOMETRY创建圆弧的数据库中的查询,这些查询是使用3组点进行的:(xStart,yStart),(xCenter,yCenter),(xEnd,yEnd)

所以想象一下彩虹,中心点在最上面(如X2,Y2所示)

我现在正在尝试翻译它,这样我就可以在Java中使用drawArc()了。然而,drawArc()接受参数,我被困在startArc和arcAngle参数上,不确定如何计算它们。

我看了看周围,还有圆弧的“端点角度”或“圆心角度”,不确定它们是不是相同的东西,我也没有找到计算startArc和arcAngle的好源码。有谁对此很熟悉吗?请分享,谢谢!

EN

回答 3

Stack Overflow用户

发布于 2015-05-10 05:28:32

这应该对你的参数代码有帮助,你可以随时插入你的变量,只要它们是整型的

有用的链接:http://jdrawing.sourceforge.net/doc/0.2.5/api/org/jdrawing/graphics/DrawArc.html http://www.java-examples.com/draw-arc-applet-window-example

票数 3
EN

Stack Overflow用户

发布于 2015-05-10 05:28:59

使用drawArc的另一种方法是使用QuadCurve2D (尽管不熟悉您的几何体,但如果点没有定义对称几何体,则可能需要此方法)。您需要计算曲线的控制点,这可以使用Bezier curve方程来完成

代码语言:javascript
复制
B(t) = (1-t)^2 * P0 + 2(1-t)tP1 + t^2 P2

这里,B(t)是直线上的一个点。解算控制点:

代码语言:javascript
复制
P1 = (B(t) - (1-t)^2 * P0 - t^2 P2)/2(1-t)t

对于中心点,t= 0.5:

代码语言:javascript
复制
//example points, assuming center is at 0.5
int[] p1 = {100,50};
int[] center = {200,100};
int[] p3 = {300,50};
double x = (center[0] - Math.pow(0.5, 2) * p1[0] - Math.pow(0.5, 2) * p3[0] ) / (2*(0.5) * 0.5);
double y = (center[1] - Math.pow(0.5, 2) * p1[1] - Math.pow(0.5, 2) * p3[1] ) / (2*(0.5) * 0.5);
QuadCurve2D curve = new QuadCurve2D.Double(p1[0], p1[1], x, y, p3[0], p3[1]);
g.draw(curve);

上图明确显示了用于演示的方程式,但可以使用Math.powdenominator的常量来简化方程式。

票数 2
EN

Stack Overflow用户

发布于 2015-05-10 05:17:06

我被困在startArc和arcAngle参数上,不确定如何计算它们。

有许多不同的方法来指定这两个圆弧参数。

一种方法是使用0和180,这意味着您从终点开始,并按逆时针180度绘制一条圆弧,回到起点。(即从API文档中:角度被解释为0度在3点位置。正值表示逆时针旋转,负值表示顺时针旋转)

所以我认为一般的代码应该是:

代码语言:javascript
复制
g.drawArc (x1, y2, x3 - x1, (y2- y1) * 2, 0, 180);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30144990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档