3x3 행렬의 역행렬을 구하는 C 소스코드는 다음과 같다.
d = m[0][0] * (m[1][1] * m[2][2] - m[2][1] * m[1][2]) - m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) + m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);
if(d!=0.)
{
id = 1 / d;
im[0][0] = (m[1][1] * m[2][2] - m[2][1] * m[1][2]) * id;
im[0][1] = (m[0][2] * m[2][1] - m[0][1] * m[2][2]) * id;
im[0][2] = (m[0][1] * m[1][2] - m[0][2] * m[1][1]) * id;
im[1][0] = (m[1][2] * m[2][0] - m[1][0] * m[2][2]) * id;
im[1][1] = (m[0][0] * m[2][2] - m[0][2] * m[2][0]) * id;
im[1][2] = (m[1][0] * m[0][2] - m[0][0] * m[1][2]) * id;
im[2][0] = (m[1][0] * m[2][1] - m[2][0] * m[1][1]) * id;
im[2][1] = (m[2][0] * m[0][1] - m[0][0] * m[2][1]) * id;
im[2][2] = (m[0][0] * m[1][1] - m[1][0] * m[0][1]) * id;
}
위에서 d가 0이면 역행렬이 존재하지 않는다.
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
Atom 파일 탭 여러 줄로 표시 (0) | 2022.07.01 |
---|---|
Call by value와 Call by reference 차이 (0) | 2022.05.22 |
오픈프레임웍스 개요 (1) | 2022.05.15 |
MFC 사용을 위한 Visual Studio 설치 (0) | 2022.05.13 |
OpenCV 함수 - RGB HSV 변환 (0) | 2022.05.05 |
댓글