문제

나는 육각형 그리드로 작업하고 있습니다. 이 좌표계는 매우 우아하기 때문에 사용하기로 선택했습니다.

grid

이 질문 좌표를 생성하는 것에 대해 이야기하고 매우 유용합니다. 내 문제는 이제 이러한 좌표를 실제 픽셀 좌표로 전환하는 것입니다. 좌표 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 축에 수직 인 선 위에 중심에 있습니다. r3/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에 의해 이전 공식으로 검증 된 관찰에서 나왔습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top