如何在圆形网格内找到特定大小的所有正方形

已经

我试图在画布的圆形区域中绘制各种不重叠的正方形。

最初我试图在圆圈内的随机位置创建正方形并检查它们是否重叠,但一段时间后我意识到它对于我需要的东西来说效率太低且太复杂。

我想要一个算法,它使用圆的中心坐标、圆的半径和正方形网格的大小,并返回网格上每个正方形位置的坐标数组,该网格的所有边缘都在圆内.

冰金属朋克

我假设您希望圆圈中有未填充的空间而不是用部分正方形填充它?如果是这样,有效的正方形将是所有四个角都在圆圈内的正方形,因此一个简单的循环会为您找到它们。下面的代码应该可以做到这一点,尽管为了清楚起见,我已经把它分开了,但你可能想要更浓缩它。

const size = 4; // The size of each square.
const squareCoords = []; // The top-left corners of each valid square.
const circle = [10, 10, 10]; // The circle, in the form [centerX, centerY, radius]

function DistanceSquared(x1, y1, x2, y2) {
    return (x2-x1) ** 2 + (y2-y1) ** 2;
}
function isInsideCircle(x, y, cx, cy, r) {
    return (DistanceSquared(x, y, cx, cy) <= r ** 2);
}

let topLeftInside = false, bottomRightInside = false, topRightInside = false, bottomLeftInside = false;
for (let xx = circle[0] - circle[2]; xx < circle[0] + circle[2]; xx += size) {
    for (let yy = circle[1] - circle[2]; yy < circle[1] + circle[2]; yy += size) {
        topLeftInside = isInsideCircle(xx, yy, circle[0], circle[1], circle[2]);
        bottomRightInside = isInsideCircle(xx + size, yy + size, circle[0], circle[1], circle[2]);
        bottomLeftInside = isInsideCircle(xx, yy + size, circle[0], circle[1], circle[2]);
        topRightInside = isInsideCircle(xx + size, yy, circle[0], circle[1], circle[2]);
        if (topLeftInside && bottomRightInside && bottomLeftInside && topRightInside) {
            squareCoords.push([xx, yy]);
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从正方形区域控制网格中的正方形大小?

来自分类Dev

如何包含来自不同矩阵的p-vlaues并更改corrplot中的圆形/正方形大小?

来自分类Dev

在固定大小的大正方形中创建动态等大小的小正方形网格

来自分类Dev

如何在Windows Phone上将正方形图像制作成圆形图像

来自分类Dev

如何在pygame中同时显示正方形和圆形?

来自分类Dev

在n * n网格中找到最大的正方形

来自分类Dev

在n * n网格中找到最大的正方形

来自分类Dev

如何为特定的CSS网格项创建完美的正方形?

来自分类Dev

如何使用pcolormesh在2D网格中绘制特定正方形的轮廓?

来自分类Dev

如何为特定的CSS网格项创建完美的正方形?

来自分类Dev

如何确定在较大网格内产生最大正方形数的布局

来自分类Dev

C ++ 2维地图找到给定索引的所有相邻正方形

来自分类Dev

如何在响应正方形网格中仅使背景图像透明?

来自分类Dev

如何在单个for循环中覆盖网格中的每个正方形?

来自分类Dev

如何在正方形网格上创建分支静脉/河流状结构

来自分类Dev

如何在不使用SVG图像的情况下使用带有内部文本的React创建圆形/正方形形状?

来自分类常见问题

带有flexbox的css正方形网格

来自分类Dev

如何计算圆触及的网格正方形?

来自分类Dev

如何正确排列网格中的(不同)正方形?

来自分类Dev

如何更改此网格上各个正方形的颜色...?

来自分类Dev

圆形图像充当正方形

来自分类Dev

如何在两个数字之间找到整个正方形

来自分类Dev

如何找到我在HTML5画布中单击的网格正方形元素

来自分类Dev

创建具有可变正方形大小的棋盘

来自分类Dev

如何使热图中的所有单元格都为正方形

来自分类Dev

如何在反应中将一些特定的字母更改为绿色正方形

来自分类Dev

所有matplotlib图形都必须是正方形吗?

来自分类Dev

作业:测试所有相等行的正方形

来自分类Dev

所有matplotlib图形都必须是正方形的吗?

Related 相关文章

  1. 1

    如何从正方形区域控制网格中的正方形大小?

  2. 2

    如何包含来自不同矩阵的p-vlaues并更改corrplot中的圆形/正方形大小?

  3. 3

    在固定大小的大正方形中创建动态等大小的小正方形网格

  4. 4

    如何在Windows Phone上将正方形图像制作成圆形图像

  5. 5

    如何在pygame中同时显示正方形和圆形?

  6. 6

    在n * n网格中找到最大的正方形

  7. 7

    在n * n网格中找到最大的正方形

  8. 8

    如何为特定的CSS网格项创建完美的正方形?

  9. 9

    如何使用pcolormesh在2D网格中绘制特定正方形的轮廓?

  10. 10

    如何为特定的CSS网格项创建完美的正方形?

  11. 11

    如何确定在较大网格内产生最大正方形数的布局

  12. 12

    C ++ 2维地图找到给定索引的所有相邻正方形

  13. 13

    如何在响应正方形网格中仅使背景图像透明?

  14. 14

    如何在单个for循环中覆盖网格中的每个正方形?

  15. 15

    如何在正方形网格上创建分支静脉/河流状结构

  16. 16

    如何在不使用SVG图像的情况下使用带有内部文本的React创建圆形/正方形形状?

  17. 17

    带有flexbox的css正方形网格

  18. 18

    如何计算圆触及的网格正方形?

  19. 19

    如何正确排列网格中的(不同)正方形?

  20. 20

    如何更改此网格上各个正方形的颜色...?

  21. 21

    圆形图像充当正方形

  22. 22

    如何在两个数字之间找到整个正方形

  23. 23

    如何找到我在HTML5画布中单击的网格正方形元素

  24. 24

    创建具有可变正方形大小的棋盘

  25. 25

    如何使热图中的所有单元格都为正方形

  26. 26

    如何在反应中将一些特定的字母更改为绿色正方形

  27. 27

    所有matplotlib图形都必须是正方形吗?

  28. 28

    作业:测试所有相等行的正方形

  29. 29

    所有matplotlib图形都必须是正方形的吗?

热门标签

归档