2017-12-18 24 views
0

소스와 대상이 주어진 사각형과 같은 다각형에 대한 좌표 집합을 취하는 데 필요한 변환을 생성하는 방법을 파악하려고합니다.JS에서 수학적 변환을 생성하는 방법 4 개의 초기 점과 4 개의 최종 점

노드에서 사용하고 있으며 이미지 조작 라이브러리를 사용하는 것이 편리합니다. 정보가있는 변환을 생성 한 뒤 수학을 찾을 수 없습니다.

diagram

+0

이 링크의 도움을합니까를? https://stackoverflow.com/questions/14867878/affine-transformation-matrix-offset – ControlAltDel

+0

전적으로 회전 각도를 알 수 없기 때문에 전적으로 답을 찾고 있습니다. 나는 시작하는 세트의 코디와 마지막 세트의 코디를 가지고있다. 원근감의 변화는 단지 회전과 이동뿐만 아니라 비뚤어 짐을 포함 할 수도 있기 때문입니다. –

답변

2

당신은 소스 좌표 있고 목적지 투시 변환 행렬의 적용 후 조정한다. 그 행렬은 8 개의 독립적 인 계수를 포함합니다. 출발지와 목적지는 대응하는 좌표의 8 쌍을 형성합니다 (x1 (src)=>x1 ' (dst) 등등).

This article Paul Heckbert의 이론 - 8 개 선형 방정식의 시스템을 작성하여 원근감 변환 행렬의 계수를 계산하는 방법.

Antigrain library에는이 문제 솔루션 (파일 agg_trans_perspective.h)의 C++ 구현이 포함되어 있습니다. 나는 적절한 JS 구현이 세상에 존재한다고 확신한다.

eq. 당신은 계수 A..H이 시스템 및 필요한 시점 (x,y)=>(x',y')의 변화 찾을 수 있습니다

x' = (A * x + B * y + C)/(G * x + H * y + 1.0) 
y' = (D * x + E * y + F)/(G * x + H * y + 1.0)