2014-11-17 2 views
2

현재 게임을 프로그래밍 중이며 도움을 많이 주시면 감사하겠습니다. 요점을 바로 이해할 것입니다 : 유한 선의 점을 원 원 (0, 0)으로 변환하는 데 사용할 수있는 공식은 무엇입니까?Line to Circle 변환

예 :

 Matrix A contains points: (0, 2), (1, 2), (2, 2), (3, 2) 
    Matrix T is the standard transformation matrix (an equation is equally as helpful) 
    Matrix B is the transformation where AT = B so that B contains points: 
           (0, 2), (2, 0), (0, -2), (-2, 0) 
    Where vector (0, 2) is the eigenvector. 

내가 꾸게 문제는 변환 포인트 (아마도 정상 N-곤 poylgon의 포인트로 변환?)의 수에 내 제한에 의존하고 있다는 점이다 지식, 나는 이것에 접근하는 방법을 모른다. 적어도이 문제를 읽어 주셔서 감사합니다.

편집 : 첫 번째 점의 왼쪽에있는 값과 마지막 점의 오른쪽에있는 값이 누락되어 이에 대한 변형이 있는지 확실하지 않습니다. 따라서 데이터가 손실됩니다.

답변

2

행렬 변환은 선형 (또는 동종 좌표에서 선형)입니다. 이것은 다시 말하면

((p1 + p2)/2)M = ((p1 M) + (p2 M))/2 

p1p2와의 중간 점과 p1p2의 변화의 중간으로 변환되어, 예를 들어을 의미한다.

4 개의 동일 선상의 점이있는 경우 행렬은 동일 직선 상에없는 점으로 매핑 할 수 없습니다.

일반적인 매핑을 찾고 있다면 더 복잡한 수식이 필요합니다. 구현하기 쉬운 (작은 크기의 입력 용) 매우 좋은 속성이있는 것은 radial basis function (RBF) interpolator입니다.

이 경우 지점 P[i]의 임의 목록을 지정하고 각각의 대상을 Q[i]으로 지정할 수 있습니다. 모든 점을 다른 점에 매핑하고 모든 지정된 점에 대해 T(P[i]) = Q[i] 인 부드러운 함수 T으로 끝납니다.

원본 지점이 일반이 아닌 일반 격자에 있으면 간단한 입체 스플라인 그물로 멋진 부드러운 보간자를 얻을 수 있습니다 (대부분의 이미지 모핑 소프트웨어에서 사용되는 것 같습니다).