求教,如何从一个二维数组中获取一个圆形所包含的数据

2023-03-14 14:59:54 +08:00
 coldmonkeybit

这个二维数组其实就是一张图片所包含的像素点信息

例如图片是 640 * 512 的话,二维数组长度就是 640 * 512

图片被设置为 canvas 的背景图片,这个时候用户如果在画布上画一个圆形,可以获取到的有圆心位置及半径,应该怎样计算出包含的二维数组的数据呢

实际上目前实现的只有矩形的计算,还有多边形和圆形因为才疏学浅实在想不到要怎么实现

如果不好描述的话,甩个关键字我自己搜一下也可以,感谢。

682 次点击
所在节点    问与答
7 条回复
y1y1
2023-03-14 15:03:32 +08:00
图形学 圆的算法?
Mikawa
2023-03-14 15:12:41 +08:00
学图形学的时候做过画圆的 demo ,感觉 op 的需求可以尝试做一下。

不过感觉是不是用框架更方便,用框架一通操作,最后从框架里读 buffer
dddd1919
2023-03-14 15:18:30 +08:00
简单粗暴的:为数组建立二维坐标系,定原点坐标,计算每个点到圆点坐标距离是否<=半径长度
coderluan
2023-03-14 15:28:56 +08:00
简单来说,你这个需求可以转换成取圆上的 N 条水平线。按最简单的假设,图片长度是 180*180 ,只算上半圆,那么和 “圆上和圆心构成 0 度角的点” 和 “180 度的点” 肯定能连成一条水平线,那么这个线段上的点一部分结果,同样再算 1 度和 179 度,算上个 90 次,所有结果就出来了。
MCVector
2023-03-14 16:33:57 +08:00
难道不是通过图片上坐标点到圆心距离的平方小于半径的平方这个条件,就可以判定该坐标点是否在园内了吗?
nightwitch
2023-03-14 16:50:20 +08:00
先根据圆心和半径确定外接正方形,取出这部分数据以后再逐一遍历每个像素的位置
coldmonkeybit
2023-03-14 18:03:28 +08:00
@dddd1919 感觉可以试一试,非常感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/923906

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX