如何在Android中绘制圆的直径

时间:2014-03-03 06:26:05

标签: android canvas geometry

我提到了问题Draw a circle within circle at a distance of 10 这接近我的要求。我只需要两个同心圆,一个在另一个内部,半径缩放到300米,外部半径缩小到500米。

我已经能够使用转换方法在屏幕上绘制两个以像素为单位的圆圈,该方法将距离以米为单位转换为相应的像素距离。 下一步是在圆圈内画一个加号;线条是直径。因此,他们将穿过中心并在圆圈上包含两个点。

1)我有圆心的纬线和像素细节。

2)我知道中心与圆上任一点之间的角度需要为90度。

3)我必须使用canvas.drawLine()。

但是什么是在圆上获得这些点的最佳方法,以便可以通过这三个点绘制线。

(指向顶部的圆圈,圆圈的中心,指向底部圆圈的点)。

非常感谢您的帮助。

编辑: 经过一些搜索后,我尝试了以下代码

        //double degrees = 90.0;
        //double radians = Math.toRadians(degrees);
        //int x1 = (int) (500 * Math.cos(radians) + x);
        //int y1 = (int) (500 * Math.sin(radians) + y);      
        //canvas.drawLine(x, y, x1, y1, mSelectionBrush);


        canvas.drawLine(x, y-500, x, y+500, mSelectionBrush);
    canvas.drawLine(x-500, y, x+500, y, mSelectionBrush);

x,y是中心的坐标。 500是外圆的半径。 我看到的输出就是这个。该线延伸到下方。我走对了路吗?

enter image description here

1 个答案:

答案 0 :(得分:2)

我认为你走在正确的轨道上。请注意,只有Y会更改垂直线。 假设中心由C(a,b)给出 所以终点就是 (a,b-r) and (a,b+r)

对于水平线,只有x更改: (a-r,b) and (a+r,b)将成为终点。

r是半径。