diff --git a/page.html b/page.html index 3b15b9d..2fa4274 100644 --- a/page.html +++ b/page.html @@ -126,10 +126,10 @@ // Исходные углы изображения 1000x1000 const sourceCorners = [ - [-500, -500, 0], // Верхний левый - [500, -500, 0], // Верхний правый - [500, 500, 0], // Нижний правый - [-500, 500, 0] // Нижний левый + [-500, -500, 1], // Верхний левый + [500, -500, 1], // Верхний правый + [500, 500, 1], // Нижний правый + [-500, 500, 1] // Нижний левый ]; // Функция умножения матриц @@ -229,19 +229,33 @@ // R = Rz * Ry * Rx const R_temp = multiplyMatrices(Rz, Ry); const _R = multiplyMatrices(R_temp, Rx); - _R[0][2] = _R[1][2] = 0; - _R[2][2] = 1; - const R = inv(_R); - + // _R[0][2] = _R[1][2] = 0; + // _R[2][2] = 1; + const R = _R; + console.log(_R, R) + const K = [ + [375, 0, 375], + [0, 375, 375], + [0, 0, 1] + ]; + const T = [ + [0.5, 0, 375], + [0, 0.5, 375], + [0, 0, 1], + ] + const H = multiplyMatrices(K, multiplyMatrices(R, inv(K))); + const Z = multiplyMatrices(H, T) // Трансформация углов const transformedCorners = sourceCorners.map(corner => { - const rotated = multiplyMatrixVector(R, corner); + const rotated = multiplyMatrixVector(Z, corner); const scaled = [ rotated[0], rotated[1], rotated[2] ]; - return project3Dto2D(scaled, height); + console.log(K, R, H, rotated); + return [rotated[0] / rotated[2], rotated[1] / rotated[2]]; + // return project3Dto2D(scaled, height); }); // Очистка canvas