0
我有方形,我知道(A,B,C,D)的X,Y座標分別爲(E,F,G,H)和圓的位置在第一個盒子裏(I,J)。在傾斜方塊中找到移位座標
所以..
我想找到的所有數據對第二個盒子裏面同一個圓..基地的座標。
我有方形,我知道(A,B,C,D)的X,Y座標分別爲(E,F,G,H)和圓的位置在第一個盒子裏(I,J)。在傾斜方塊中找到移位座標
所以..
我想找到的所有數據對第二個盒子裏面同一個圓..基地的座標。
你需要找到* A
,所以你需要找到t內是3×3矩陣,如果這是在從第一箱轉換到第二
B =ŧ飛機
求解方程此頁所示http://andrew.gibiansky.com/blog/image-processing/image-morphing/
和他有過計劃 - 你LY需要從第一四邊形的三個點和對應的三分在第二四邊形
private static float[] calculateTransform(Polygon pOriginal, Polygon pFinal){
float a = pFinal.xpoints[0];
float b = pFinal.ypoints[0];
float c = pFinal.xpoints[1];
float d = pFinal.ypoints[1];
float e = pFinal.xpoints[2];
float f = pFinal.ypoints[2];
float A = pOriginal.xpoints[0];
float B = pOriginal.ypoints[0];
float C = pOriginal.xpoints[1];
float D = pOriginal.ypoints[1];
float E = pOriginal.xpoints[2];
float F = pOriginal.ypoints[2];
float x = ((B-D)*(e-c) - (a-c)*(F-D))/((B-D)*(E-C) - (A-C)*(F-D));
float y = (a*(E-C) + A*(c-e) - c*E + e*C)/(A*(D-F) + B*(E-C) + C*F - D*E);
float t = c - x*C - y*D;
float z = ((B-D)*(f-d) - (b-d)*(F-D))/((B-D)*(E-C) - (A-C)*(F-D));
float w = (b*(E-C) + A*(d-f) - d*E + f*C)/(A*(D-F) + B*(E-C) + C*F - D*E);
float s = d - z*C - w*D;
float[] transform = {x, y, z, w, t, s};
return transform;
}
然後應用噸至任何點上A到B上的對應點
private static float[] applyTransform(float x, float y, float[] transform){
float a = transform[0];
float b = transform[1];
float c = transform[2];
float d = transform[3];
float t = transform[4];
float s = transform[5];
float p = a * x + b * y + t;
float q = c * x + d * y + s;
float[] result = {p, q};
return result;
}
謝謝你..我會嘗試它,你有4個座標不是3的功能! –