android – 计算弧心点,了解它的起点和终点

android – 计算弧心点,了解它的起点和终点,第1张

概述这个答案最快的描述是我试图找到白点的坐标.深红色是绘制圆圈上的绘制圆弧(深蓝色). 更长的解释: 我有一个正在扩展View的类,它在画布上绘制一个圆(画布具有相等的宽度和高度): canvas.drawArc(rectF, 0, 360, true, paint); // mOvals is a RectF object with 4 coordinates 然后我绘制一个N%宽的弧(在这种情况下 这个答案最快的描述是我试图找到白点的坐标.深红色是绘制圆圈上的绘制圆弧(深蓝色).

更长的解释:
我有一个正在扩展VIEw的类,它在画布上绘制一个圆(画布具有相等的宽度和高度):

canvas.drawArc(rectF,360,true,paint); // movals is a RectF object with 4 coordinates

然后我绘制一个N%宽的弧(在这种情况下假设为225).弧从-90度开始(因为画布中的0度意味着3’o时钟)并且“偏离”N度(在该示例中为225度).

我试图计算X / Y坐标或剩余弧的中心(红色弧未覆盖的区域;在N和360之间).

我有圆的半径,canvasWIDth / 2,如果有一些帮助.

这是我画红弧的方式:

long arcEnd = (360 * fractionNumber) / totalNumber;canvas.drawArc(rectF,-90,arcEnd,paint);
解决方法 (原始答案更新.现在可能有点过于冗长,但我希望它有所帮助.)

您正在寻找XY坐标(称为笛卡尔坐标),但这些坐标很难直接计算.诀窍是首先通过Polar坐标.极坐标和笛卡尔是表达同一事物的两种方式,即网格中的一个点,可以相互转换.

极坐标包括距中心点的角度和距离.您可以计算所需的角度,因为您知道需要覆盖的圆的百分比,并且您可以计算距离中心的距离,因为您知道圆的半径.

你的覆盖弧度是225度,所以剩下的是135度,一半是67.5度.因此,您要寻找的点的角度为225 67.5 = 292.5度.该点的半径是圆的半径的一半,因此是canvasWIDth / 4.

一旦确定了极坐标(292.5,canvasWIDth / 4),就可以使用conversion function将其转换为XY坐标.有一件事有点棘手:Math.cos(double)和Math.sin(double)期望他们的论点是在radians,而不是学位.在进行转换之前,将292.5 / 360表示为x /2π,通过将该值乘以π/ 180,在这种情况下得到5.1051.

假设canvasWIDth为400:

double tdeg 292.5d; // Calculated from arc percentage int r =  100;      // Calculated from canvas wIDthdouble Trad = tdeg * (Math.PI/180d); // = 5.1051int x = (int) r * Math.cos(Trad);int y = (int) r * Math.sin(Trad);
总结

以上是内存溢出为你收集整理的android – 计算弧心点,了解它的起点终点全部内容,希望文章能够帮你解决android – 计算弧心点,了解它的起点和终点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1129114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存