python - Python-在给定距离的特定范围内创建网格位置列表
问题描述
我有 x 轴大小、y 轴大小、渲染距离、网格位置编号列表和中心网格位置。
我正在尝试创建中心网格位置的渲染距离内的所有网格位置的列表。
x 和 y 轴的大小可以独立地不同。最佳情况下,该算法不会尝试获取渲染距离超出 x 或 y 轴一侧的位置。
谢谢。
解决方案
我写这篇文章是为了帮助您以我会解决的方式回答您自己的问题。与编码中的任何事情一样,您需要做的是能够将一个大问题分解为多个较小的问题。
设计两个函数来转换 (
x
,y
) 坐标(可选,它会让你的生活更轻松,但不会那么高效,我个人会避免这种挑战)。给定
n
,size
和distance
, 计算up
,down
,left
和right
. 如果不同轴的尺寸不同,则只需提供正确的功能即可。
例如。
def right(n, size, distance):
return n + size * distance
def down(n, size, distance):
return n - distance
给定
size
,确保上述函数不会超出网格边缘。将此部分的点转换为(x, y)
坐标可能会有所帮助。现在你有了正方形的边,再次运行函数来得到边角。例如,要获得右上角,您可以执行
right(up(*args))
或up(right(*args))
有了角落,您现在可以计算出您的正方形中有什么。将点转换为
(x, y)
坐标会更容易。
推荐阅读
- java - Appium得到“错误:ENOENT:没有这样的文件或目录,scandir'/usr/local/share/android-sdk/build-tools'
- java - JSONObject 和 for 循环在 RecycleView 中不起作用
- azure-ad-b2c - 解锁 Azure AD B2C 本地帐户
- python - 将 dict 元组转换为 networkx.Graph
- antd - SELECT:在 onChange 上获取事件
- html - 复选框和单选按钮不起作用
- c# - PDFSharp 现场设计师
- ios - 如何在后台添加子视图
- elixir - Elixir 应用程序之间的共享常量
- c# - 在 ASP.NET 中使用存储过程进行更新