【发布时间】:2014-02-04 13:13:56
【问题描述】:
我正在尝试根据两个给定点和一个给定高度来描述一个圆弧段。为此,我将使用 java.awt.Graphics 中的以下方法。
drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
首先我观察到 x、y、宽度和高度值描述了一个包含圆的矩形。
圆弧的中心是矩形的中心,其原点为 (x, y),其大小由宽度和高度参数指定。 (http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html)
首先我从计算 x、y、宽度和高度值开始。下图描述了我将如何做到这一点。
第一张图片显示了我已经获得的价值观。第一张图片中的弧线正是我想要画的。在第二张图片中,我计算了两点之间的线的长度。我执行此步骤的代码如下所示:
int dx = p1.x- p2.x;
int dy = p1.y - p2.y;
double len = Math.sqrt(Math.pow((double)dx, 2) + Math.pow((double)dy, 2));
如图三所示,我现在可以使用以下函数计算圆的半径。
radius = h/2 + len^2 / 8h
我遇到的第一个问题是计算圆的CenterPoint。这部分是我需要帮助的地方。
如果我要计算中心点,我可以轻松找到 x、y、whith 和高度坐标。
x = centerPoint.x - radius;
y = centerPoint.y - radius;
width = radius * 2;
height = radius * 2;
最后一部分是根据我们已经计算的值来计算 startAngle 和 arcAngle。
TL;DR我需要帮助来计算角度和中心点。
提前致谢!
【问题讨论】:
-
少一点 Java 问题,多一点数学问题。
-
一开始我也是这么想的。但这并不是真正的几何问题,而是坐标系统让一切变得混乱..
标签: java graphics geometry trigonometry segment