문제

나 개발디 비디오 게임되었고 운영되는 가정이기 때문에 스틱에서 컨트롤러가 원형 범위의 운동,반환한다"원"좌표즉,데카르트 좌표 제한되는 원형 지역(의 반지름 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-의 고유성을 매핑하고 그 반대.

circular Brady bunch


squared Boston Celtics

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;

그러나,이 효과를 가질 수 있다리기 대신 정상화하고 인테리어에 대한 값..즉,당신은 같은 값을 얻을 위한 컨트롤러 밀어"완전히"으로 왼쪽 컨트롤러 밀어에 완전히 동일한 방향입니다.

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