본문 바로가기
반응형

분류 전체보기84

변환행렬 사원수 변환 코드(Matrix to Quaternion using Eigen Library) 3차원 4x4변환행렬을 알고 있을 때 사원수의 w, x, y, z를 계산하는 것을 Eigen Library에서 제공하고 있어 코드를 소개합니다. Quaternion은 우리말로 사원수라고 하는데 사원수 식은 아래와 같이 표현할 수 있습니다. q = w+xi+yj+zk 우리가 잘 알고 있는 오일러 각을 사용하면 짐벌락(Gimbal Lock) 현상이 발생하는데 이 현상을 피하기 위해서는 사원수를 사용해야 합니다. 사원수를 사용하기 위해서는 위 식의 w, x, y, z를 알아야 합니다. 참고로 i, j, k는 허수 부분을 나타내는 세 개의 가상 백터입니다. 4x4 변환행렬 입력으로 사원수의 w, x, y, z를 구하는 코드입니다.(행렬의 4행의 값은 translate에 관련된 값입니다.) Eigen::Matri.. 2024. 1. 12.
Manifold와 Nonmanifold 차이(Mesh Processing) Mesh processing에서 Manifold와 Nonmanifold는 메쉬의 토폴로지(Topology)에 관련된 용어로 사용됩니다. 토폴로지는 한글로 위상이라고 말하는데 Mesh의 vertex, face, edge 연결관계를 나타내며, 임의의 vertex에서 연결된 face들이나 edge들의 정보를 알 수 있도록 하는 게 위상 정보로 보시면 되겠습니다. Manifold는 한글로 다양체라고 부르는데, 아래 그림과 같이 한 개의 edge가 두 개의 face를 공유하거나(좌측 그림), 한 개의 점에서 연결되어 있는 점들이 1개의 집합으로 이루어졌을 때(우측 그림) manifold라고 부릅니다. 반면에 Nonmanifold는 비다양체라 부르며 한 개의 edge가 3개 이상의 face를 공유하거나(좌측 그림).. 2024. 1. 10.
3차원 삼각형 면적 계산 5가지 방법(좌표, 길이, 각도, 외적 이용) 3차원에서 삼각형의 면적을 구하는 여러 가지 방법을 알려드리겠습니다.첫 번째 방법은 삼각형의 밑변과 높이를 알았을 때 구하는 식입니다. 중고등학교 때 많이 배웠던 식입니다. 두 번째 방법은 삼각형의 두 변과 각을 알고 있을 때 구하는 식입니다. 이 식도 어렸을 때 많이 봤던 식입니다. 세 번째 방법은 세 변의 길이를 알고 있을 때 삼각형의 면적을 구하는 식입니다.위식을 풀어보면 아래와 같은 식이 됩니다. 네 번째 방법은 삼각형의 한 변과 두 각을 알고 있을 때 구하는 식입니다.마지막 다섯 번째 삼각형 면적을 구하는 방법은 외적을 이용한 방법입니다. 삼각형의 3점을 이용해서 두 백터를 만든 후 두 백터의 외적 길이의 절반이 삼각형의 면적에 해당합니다. 외적 길이가 0에 가까우면 두 백터가 한 직선에 있거나.. 2023. 12. 26.
크롬 바이러스 및 위협 방지 알림: biserka.xyz 문제의 스파이웨어며칠 전부터 chrome 웹브라우저에서 바이러스 및 위협 방지 알림이 자꾸 뜨던데 아무래도 스파이웨어가 설치된 거 같았습니다. 웹에서 검색을 해보니 크롬 설정으로 크롬에서 알람을 막는 기능이 있어서 이걸 적용하니 더 이상 바이러스 관련 알림이 뜨지 않았습니다.알림을 끄기 위해서는  1. 크롬에서 우측 상단에 점이 3개 있는 버튼을 누른 후 설정으로 갑니다.(크롬 주소 치는 곳에서 chrome://settings 을 치셔도 됩니다.) 2. 크롬 설정으로 간 후 왼쪽에 개인 정보 보호 및 보안 누른 후 사이트 설정으로 갑니다.    개인 정보 보호 및 보안 -> 사이트 설정3. 사이트 설정으로 가면 최근 활동에 알림 관련 사이트가 보일 겁니다.(저 같은 경우는 biserka.xyz 여기서 알.. 2023. 12. 18.
Openmesh Iterators(Mesh Navigation) Openmesh 라이브러리를 이용하면 mesh에 관련된 기능을 상당히 많이 활용할 수 있는데, 그중에 가장 간단한 mesh의 모든 점들을 navigation 하는 방법을 소개해드리겠습니다. Openmesh에 점(vertex), 선(edge), 면(face)을 navigation 하기 위해서는 iterator을 사용합니다. MyMesh::VertexIter    : vertex MyMesh::FaceIter      : face MyMesh::EdgeIter      : edge 이 iterator을 이용해서 mesh의 필요한 정보를 접근할 수 있습니다. 아래 코드는 sphere.stl 파일을 읽어 들여서 vertex iterator을 선언 후 mesh의 점 정보를 콘솔 창에 print 하는 코드입니다.t.. 2023. 12. 11.
AABB OBB 차이와 의미 AABB(Axis Aligned Bounding Box)와 OBB(Oriented Bounding Box)는 모두 3D 그래픽스 및 게임 프로그래밍 분야에서 주로 사용되는 Bounding Box 계산 기법입니다.  AABB는 축에 정렬된 바운딩 박스로, 3축 x(1,0,0), y(0,1,0), z(0,0,1)와 평행한 최소 크기의 상자를 object에 넣는다고 생각하시면 됩니다. 상자의 각 면이 세 축에 정렬되어 있기 때문에 "축에 정렬된"이라는 용어가 사용됩니다. 이 기법은 object에서 3축의 최대 최소만 계산하기 때문에, 계산이 간단하면서도 효과적인 충돌 감지를 위한 방법 중 하나로 사용됩니다. 두 AABB 간의 충돌을 감지하는 것은 각 축에 대해 겹침 여부를 확인함으로써 쉽게 수행할 수 있습니다.. 2023. 12. 11.
행기준 열기준 행렬 개발자 주의점(Transform Matrix) 3차원 4x4 변환 행렬에서 Rotation과 Translation 정보를 접근할 수 있습니다. 참고로 대각행렬은 Scale 수치를 알 수 있습니다.( r00 r01 r02 t03 ) ( r10 r11 r12 t13 ) ( r20 r21 r22 t23 ) (   0    0    0    1   ) 이 형태는 행기준의 행렬이고 열기준이 되면 index를 transpose 해줘야 합니다. 이것을 우리말로 전치 행렬이라고 부릅니다. 전치를 하게 되면 아래와 같이 변하게 됩니다.( r00 r10 r20 0 ) ( r01 r11 r21 0 ) ( r02 r12 r22 0 ) ( t03 t13 t23 1 )이 행렬은 열기준 행렬이고 만약 Translation 정보를 접근하려면 4행의 값들을 접근해야 합니다. 이 .. 2023. 12. 5.
Halfedge Data Structure(반모서리 자료구조) OpenMesh는 Halfedge Data Structure를 사용하고 있습니다. 우리말로 반모서리 자료구조라고 부릅니다. Edge를 절반으로 자른 형태라고 해서 반모서리라고 합니다. 이 반모서리 구조는 3D 모델링 및 Mesh 데이터 구조에서 많이 사용하고 있습니다. 많이들 사용하시는 CGAL(The Computational Geometry Algorithms Library)도 반모서리 구조를 사용하고 있습니다. Halfedge 자료 구조는 메쉬의 각 모서리(Edge)를 나타내는데 사용되며, 이를 통해 메쉬의 구조를 효율적으로 저장하고 다양한 연산을 수행할 수 있습니다. 이 자료 구조는 메쉬의 표현을 간소화하고 메쉬 조작 작업을 더 효율적으로 만드는 데 도움이 됩니다. Halfedge 자료 구조의 기본.. 2023. 11. 29.
세 점을 지나는 원 중심 계산(Eigen Library 이용한 최소자승법) 2차원에서 세 점을 지나는 원의 중심을 Eigen 라이브러리를 이용해서 구하는 방법을 알려드리겠습니다. 우리가 일반적으로 알고 있는 원의 방정식은(x-a)^2 + (y-b)^2 = r^2이며, 이 식은 표준형이라고 합니다. 이 식을 전개해서 일반형으로 바꾸게 되면x^2 + y^2 + ax + by + c = 0 이 됩니다. 이때 원의 중심은 -a/2, -b/2가 됩니다. 이 일반형의 식을 이용해서 원의 중심을 구해보도록 하겠습니다. 일반형 식에서 2차원의 점들이 주어졌을 때, 우리가 구해야 할 미지수는 a, b, c 이므로 a, b, c들만 좌변에 있도록 식을 수정해 보면ax + by + c = -x^2 - y^2이러한 식이 됩니다. Eigen 라이브러리를 이용하여 위의 식을 풀기 위해서는 Ax = B .. 2023. 11. 28.
반응형