V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coldmonkeybit
V2EX  ›  问与答

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

  •  
  •   coldmonkeybit · 2023-03-14 14:59:54 +08:00 · 780 次点击
    这是一个创建于 639 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    7 条回复    2023-03-14 18:03:28 +08:00
    y1y1
        1
    y1y1  
       2023-03-14 15:03:32 +08:00   ❤️ 1
    图形学 圆的算法?
    Mikawa
        2
    Mikawa  
       2023-03-14 15:12:41 +08:00   ❤️ 1
    学图形学的时候做过画圆的 demo ,感觉 op 的需求可以尝试做一下。

    不过感觉是不是用框架更方便,用框架一通操作,最后从框架里读 buffer
    dddd1919
        3
    dddd1919  
       2023-03-14 15:18:30 +08:00
    简单粗暴的:为数组建立二维坐标系,定原点坐标,计算每个点到圆点坐标距离是否<=半径长度
    coderluan
        4
    coderluan  
       2023-03-14 15:28:56 +08:00
    简单来说,你这个需求可以转换成取圆上的 N 条水平线。按最简单的假设,图片长度是 180*180 ,只算上半圆,那么和 “圆上和圆心构成 0 度角的点” 和 “180 度的点” 肯定能连成一条水平线,那么这个线段上的点一部分结果,同样再算 1 度和 179 度,算上个 90 次,所有结果就出来了。
    MCVector
        5
    MCVector  
       2023-03-14 16:33:57 +08:00
    难道不是通过图片上坐标点到圆心距离的平方小于半径的平方这个条件,就可以判定该坐标点是否在园内了吗?
    nightwitch
        6
    nightwitch  
       2023-03-14 16:50:20 +08:00 via Android
    先根据圆心和半径确定外接正方形,取出这部分数据以后再逐一遍历每个像素的位置
    coldmonkeybit
        7
    coldmonkeybit  
    OP
       2023-03-14 18:03:28 +08:00
    @dddd1919 感觉可以试一试,非常感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1245 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 17:31 · PVG 01:31 · LAX 09:31 · JFK 12:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.