正在查找矩形外的网格起点
Finding grid start outside of rectangle
我有一个"无限"的点网格,列之间的间距为dx
,行之间的间距是dy
。我有一个点,它是网格和矩形中的一个点。我需要得到矩形之外的第一行/列
类似:
* * * * * * * * . . .
_____________________________
* | . . . . . . | * . 0 .
| |
* | . . . . . . | * . . .
| |
* | . . . . . . | * . . .
|_____________________________|
* * * * * * * * . . .
. . . . . . . . . . .
我需要使用矩形的坐标、0
的坐标和行/列的间距来获得*
。所有内容都是浮点值。我试着用模量来做这件事,但它变得非常混乱和复杂,我宁愿不发布它。
我如何在c++中做到这一点?(我可以而且更喜欢使用c++11(
我需要它对它进行迭代,以获得矩形内的所有点(当我在点之间画线时,我也需要矩形外的点,并将线剪裁到矩形上(。
如果左下角坐标是(x,y(,那么您可以首先通过计算来重新调整它们的基准
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((获得"to"网格点。当dx和dy不同于1时,您首先除以它们以输入一个重新基准的坐标系,在该坐标系中,您可以使用floor((和ceil((来获取晶格点,然后映射回来。
要计算大于Y的X的最低倍数(假设X和Y为正int
s:视情况而定(:
((Y / X) + 1) * X
如果你在开始之前加上奥利关于调整原点的建议,你就消除了否定的问题。
最后,您可以扩展上面的计算,以允许通过适当的投射进行浮点运算:
((int)(Y / X) + 1) * X
这现在返回浮点X大于浮点Y的第一个倍数。
相关文章:
- 使用对象文件读取三角形数据网格
- 如何从 Skia 路径几何体中获取网格?
- 是否可以在 OpenGL 中的同一调用中呈现两个具有不同索引起点的不同缓冲区?
- CGAL:如何创建填充边界曲线的曲面网格?
- 检查 2D 网格的某个元素是否与另一个元素共享对角线、水平线或垂直线
- 创建具有两个视口的Qt3D C++场景,其中显示适当的不同网格
- 如何从 3D 曲面网格中删除自相交三角形?
- 在均匀网格中处理碰撞
- 更改高度贴图,使其在 4x4 网格上显示 16 个 hieghtmap
- 用于查找网格中最短路径的算法
- 循环通过网格获取温度,但不知道如何告诉程序停止循环
- 定义/预设NURBS起点和终点的方向
- 如何设置QTreeView的起点目录?
- 使用 glvertex4i 传递网格面索引时的顶点着色器错误
- 如何使用 sdl2 快速绘制像素网格?
- 如何使用条件计算 3D 网格中从一个点到另一个点的所有路径
- 使用 MFC 的表/网格
- 是否可以制作没有内部分割的cgal 3d多多马因网格?
- 获取网格中心的屏幕位置
- 正在查找矩形外的网格起点