gpt4 book ai didi

c++ - 查找矩形外的网格起点

转载 作者:太空狗 更新时间:2023-10-29 23:08:48 25 4
gpt4 key购买 nike

我有一个“无限”点网格,列之间的间距为 dx,行之间的间距为 dy。我有一个点,它是该网格中的一个点和一个矩形。我需要获取矩形外的第一行/列。
喜欢:

*    *    *    *    *    *    *    *    .    .    .
_____________________________
* | . . . . . . | * . 0 .
| |
* | . . . . . . | * . . .
| |
* | . . . . . . | * . . .
|_____________________________|
* * * * * * * * . . .

. . . . . . . . . . .

我需要使用矩形的坐标、0 的坐标以及行/列的间距来获取 *。一切都是浮点值。我尝试使用模数来做到这一点,但它确实变得困惑和复杂,我宁愿不发布它。
我怎么能在 C++ 中做到这一点? (我可以而且更喜欢使用 c++11)。
我需要它对其进行迭代以获取矩形内的所有点(因为我在点之间画线,所以我也需要矩形外的点并将线剪到矩形内)。

最佳答案

如果左下角坐标为(x,y),那么可以先通过计算rebase

double xb = x / dx;
double yb = y / dy;

然后你只需发言就可以到达这个重新定位的坐标系中的网格点:

xb = floor(xb);
yb = floor(yb);

最后,您映射回原始坐标:

xb = xb * dx;
yb = yb * dy;

现在这是原始坐标系中位于矩形左下角之外的左下网格点。

如果这没有意义,请考虑在 dx=1、dy=1 的特殊情况下,网格点对应于整数,您可以通过 floor() 和 ceil() 获得“到”网格点。当 dx 和 dy 不等于 1 时,您首先除以它们以进入一个 rebased 坐标系,您可以在其中使用 floor() 和 ceil() 得到格点,然后映射回来。

关于c++ - 查找矩形外的网格起点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8145150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com