feat/pitch-roll #1
34
page.html
34
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
|
||||
|
||||
Reference in New Issue
Block a user