나는 어떻게 변환 좌표 사각형을 좌표를 원?
-
06-07-2019 - |
문제
나 개발디 비디오 게임되었고 운영되는 가정이기 때문에 스틱에서 컨트롤러가 원형 범위의 운동,반환한다"원"좌표즉,데카르트 좌표 제한되는 원형 지역(의 반지름 1)입니다.사실,좌표는"스퀘어";예를 들어,상단 오른쪽 스틱의 위치는 레지스터로 x=1,y=1.로 변환할 때 좌표에서 얼마,크기를 초과할 수 있습 1-는 효과가 있는 플레이어로 이동할 수 있습 빠르게 대각선으로 그들보다 수 있습니다.
그래서,명확히,나는 원하는 위치를 기록하는 아날로그 스틱의 관점에서의 방향 및 크기가 크기가 0 과 1 사이입니다.이 스틱의 반환 좌표 사각형 비행기,그래서 단순히 변환하 좌표에서 얼는 것으로는 충분하지 않습니다.나는 변환해야 좌표 공간, 지만,그러한 제한 나의 원숭이의 두뇌.
해결책
보 매핑하기 위해 광장 원.또한 좋은 시각화에 대한 매핑을 사용합니다.당신이 얻을:
xCircle = xSquare * sqrt(1 - 0.5*ySquare^2)
yCircle = ySquare * sqrt(1 - 0.5*xSquare^2)
다른 팁
매핑을 고유하지 않습니다.많은 다른 솔루션을 이 질문입니다.
예를 들어,이 매핑을 것입니다 또한 작업
u=x√(x2+y2-x2y2)/√(x2+y2)
v=y√(x2+y2-x2y2)/√(x2+y2)
가 (u,v) 원형 디스크 좌표 (x,y) 은 스퀘어 좌표입니다.
는 이 단어를,그래서 여기에 몇 가지 이미지를 설명하기 위해 non-의 고유성을 매핑하고 그 반대.
For a C++ implementation
이 다른 맵핑을 이동
http://squircular.blogspot.com/2015/09/fg-squircle-mapping.html
보 http://squircular.blogspot.com 더 많은 이미지에 대한 매핑의 결과입니다.
또한 참조 "분석 방법을 제곱 디스크" 종이에 대한 논의하고 다른 방정식을 매핑과 함께 교정 및 파생.
각 가치에 의하여 크기를 정상화하는 모든 값을 단위 벡터,예를 들어,
magn = sqrt(x * x + y * y);
newx = magn > 1.0 ? x / magn : x;
newy = magn > 1.0 ? y / magn : y;
그러나,이 효과를 가질 수 있다리기 대신 정상화하고 인테리어에 대한 값..즉,당신은 같은 값을 얻을 위한 컨트롤러 밀어"완전히"으로 왼쪽 컨트롤러 거 밀어에 완전히 동일한 방향입니다.