gpt4 book ai didi

math - 六边形网格坐标到像素坐标

转载 作者:行者123 更新时间:2023-12-04 15:45:49 25 4
gpt4 key购买 nike

我正在使用六边形网格。我选择使用这个坐标系是因为它非常优雅。 grid
This question谈论自己生成坐标,并且非常有用。我现在的问题是将这些坐标与实际像素坐标相互转换。我正在寻找一种简单的方法来找到坐标为 x、y、z 的六边形的中心。假设像素坐标中的 (0,0) 位于十六进制坐标中的 (0,0,0) 处,并且每个六边形都有一个长度为 s 的边。在我看来,x、y 和 z 都应该将我的坐标沿轴移动一定距离,但它们以一种奇怪的方式相互关联,我无法完全理解它。

如果您可以转到另一个方向并将像素坐标中的任何 (x,y) 点转换为该点所属的十六进制,则可以获得奖励积分。

最佳答案

为清楚起见,让“六边形”坐标为 (r,g,b)哪里r , g , 和 b红色 , 绿色 , 和 蓝色坐标,分别。坐标(r,g,b)(x,y)有以下关系:

y = 3/2 * s * b
b = 2/3 * y / s
x = sqrt(3) * s * ( b/2 + r)
x = - sqrt(3) * s * ( b/2 + g )
r = (sqrt(3)/3 * x - y/3 ) / s
g = -(sqrt(3)/3 * x + y/3 ) / s

r + b + g = 0

推导:
  • 我首先注意到任何水平的六边形行(应该有一个常数 y -坐标)都有一个常数 b坐标,所以 y仅依赖于 b .每个六边形可以分成六个边长为s的等边三角形;一排六边形的中心是下一行中心上方/下方的一个半边长(或者,也许更容易看到,一行中的中心是两排中心上方/下方的 3 个边长),因此对于 1 的每次更改在 b , y变化 3/2 * s ,给出第一个公式。求解by 方面给出第二个公式。
  • 具有给定 r 的六边形所有坐标的中心都在垂直于 r 轴的线上 r 上的点上轴是 3/2 * s从起源(类似于上述 y 的推导 b )。 r轴有斜率 -sqrt(3)/3 ,所以垂直于它的直线有斜率 sqrt(3) ;点上r轴和线上有坐标 (3sqrt(3)/4 * s * r, -3/4 * s * r) ;所以 x 中的方程和 y对于包含 r 的六边形中心的线-坐标ry + 3/4 * s * r = sqrt(3) * (x - 3sqrt(3)/4 * s * r) .代替 y使用第一个公式并求解 x给出第二个公式。 (这不是我实际推导的方式,但我的推导是图形化的,经过大量反复试验,这种代数方法更简洁。)
  • 具有给定 r 的六边形集合坐标是具有该 g 坐标的六边形集的水平反射,因此无论公式是什么 x坐标 rb , x该公式的坐标与 g代替 r将相反。这给出了第三个公式。
  • 第四个和第五个公式来自用第二个公式代替b并求解 rgx 方面和 y .
  • 最终公式来自观察,通过代数与早期公式验证。
  • 关于math - 六边形网格坐标到像素坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2459402/

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