육각형 그리드 좌표는 픽셀 좌표로 좌표합니다
-
20-09-2019 - |
문제
나는 육각형 그리드로 작업하고 있습니다. 이 좌표계는 매우 우아하기 때문에 사용하기로 선택했습니다.
이 질문 좌표를 생성하는 것에 대해 이야기하고 매우 유용합니다. 내 문제는 이제 이러한 좌표를 실제 픽셀 좌표로 전환하는 것입니다. 좌표 x, y, z로 육각형의 중심을 찾는 간단한 방법을 찾고 있습니다. 픽셀 좌표의 (0,0)은 16 진 코디의 (0,0,0)에 있고 각 육각형의 길이 S가 있다고 가정합니다. x, y 및 z와 같은 것처럼 보입니다. 각각 조정을 축을 따라 일정 거리를 움직여야하지만 이상한 방식으로 상호 관련되어 있습니다.
보너스 포인트 다른 방향으로 가서 픽셀 좌표의 (x, y) 포인트를 지점에 속하는 16 진수로 변환 할 수있는 경우.
해결책
명확성을 위해 "육각형"좌표가 (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
. 각 육각형은 길이의 측면을 가진 6 개의 정형 삼각형으로 나눌 수 있습니다.s
; 한 줄의 헥사 곤의 중심은 다음 줄의 중심 위/아래의 1 반면 길이입니다 (또는 볼 수있는 더 쉽게 볼 수 있습니다. 한 행의 중심은 센터 위/아래에 2 줄 떨어져 있습니다. ), 각 변경에 대해1
안에b
,y
변화3/2 * s
, 첫 번째 공식을 제공합니다. 해결b
측면에서y
두 번째 공식을 제공합니다.주어진 hexagons
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
hexagons의 중심을 포함하는 선을 위해r
-동등 어구r
~이다y + 3/4 * s * r = sqrt(3) * (x - 3sqrt(3)/4 * s * r)
. 대체y
첫 번째 공식을 사용하고 해결x
두 번째 공식을 제공합니다. (이것은 내가 실제로 이것을 도출 한 방식이 아니지만, 내 파생은 많은 시행 착오를 가진 그래픽 이었고이 대수 방법은 더 간결합니다.)주어진 hexagons 세트
r
좌표는 그 좌표와 함께 16 진수 세트의 수평 반사이므로 공식이 무엇이든x
측면에서 조정하십시오r
그리고b
,,x
그 공식을 조정하십시오g
대신에r
반대가 될 것입니다. 이것은 세 번째 공식을 제공합니다.네 번째와 다섯 번째 공식은
b
그리고 해결r
또는g
측면에서x
그리고y
.최종 공식은 Algebra에 의해 이전 공식으로 검증 된 관찰에서 나왔습니다.