본문 바로가기
반응형

3D Algorithm42

Mesh Laplacian Laplace-Beltrami Operator Two-dimensional manifold triangle mesh에서 Laplace-Beltrami operator는 아래 식을 통해서 계산이 됩니다.라플라스는 2차 미분과 깊은 연관이 있습니다. 라플라스와 관련된 자료를 보면 gradient, divergence 단어가 많이 나오는데 gradient(기울기)는 1차 미분, divergence(발산)는 2차 미분으로 이해하시면 됩니다.  발산량으로 triangle mesh 형상이 얼마나 굽혀졌는지 파악을 할 수 있습니다. 그래서 라플라스 연산자는 곡률과 연관이 있습니다.   위에서 계산된 Laplace-Beltrami operator는 곡률의 법선(curvature normal)으로 볼 수 있습니다. 아래.. 2024. 12. 11.
삼각메쉬 부피 계산(Triangle Mesh Volume Calculation) Triangle Mesh 부피 계산Mesh 데이터의 부피를 계산하는 기능이 필요해서 조사를 해봤더니, Mesh의 삼각형을 사면체로 생각해서 각 사면체를 모두 더하면 Mesh의 체적이 계산된다고 하네요. 사면체는 한 개의 꼭짓점에 세 개의  면이 만나고, 6개의 변, 네 개의 삼각형 면으로 이루어진 다면체를 말하며 삼각뿔이라고도 불립니다. 사면체 부피는 아래와 같은 식으로 구할 수 있습니다. V = (1/6) | a ⋅ (b × c) | 여기서 a, b, c는 사면체 3개의 변을 나타내는 벡터입니다. 절대값을 씌운 이유는 bc의 외적 방향이 a와 반대방향일 때 음수가 나오는 걸 방지하기 위함입니다.  사면체 부피 구하는 식을 이용해서 mesh의 volume를 구할 수 있습니다.  아래와 같이 각 삼각형의 .. 2024. 10. 8.
세 점을 지나는 평면 방정식 계산(3점 평면) 평면 방정식일반적으로 두 점을 알고 있을 때는 직선을 알 수 있고, 세 점을 알고 있을 때는 면을 정의할 수 있습니다. 그래서 평면을 계산하기 위해서는 최소 3 점이나 평면의 법선과 한 점을 알아야 합니다. 평면의 방정식은 ax+by+cz+d = 0 으로 표현합니다. a, b, c는 평면의 법선을 나타내며 d는 원점으로부터 평면 거리를 나타냅니다. ax+by+cz는 평면의 점들과 평면의 법선의 내적을 나타낸다고 이전 글에서 설명했었습니다.2023.10.20 - [3D Algorithm] - 평면 방정식 의미(개발자 관점) 평면 방정식 의미(개발자 관점)평면의 방정식은 3점이 주어지거나 평면의 노말, 한 점이 주어지면 구할 수 있습니다. 일반적으로평면의 방정식을 ax+by+cz+d = 0 이라고 나타낼 수.. 2024. 9. 26.
비율(ratio)을 이용한 3차원 점 이동 - 두번째 비율을 이용한 점 이동점 p1(0,0,0), 점 p2(10,0,0), 벡터(1,0,0)를 알고 있을 때, 점 p2를 점 p1까지의 거리의 80%에 해당하는 지점으로 이동해 보도록 하겠습니다. 그림은 아래와 같습니다. 그림상으로는 점p1, p2만 주어지면 벡터와 dist는 모두 구할 수 있겠네요. 벡터는 p2-p1, dist는 두 점 거리 계산식이나 벡터 내적으로 구할 수 있습니다. 벡터와 관련된 내용은 아래글 참고하세요.2024.09.11 - [3D Algorithm] - 벡터 계산과 단위벡터 벡터 계산과 단위벡터벡터(Vector)벡터는 어릴 때 학교에서 크기와 방향을 가진 물리량이라고 배웠습니다. 벡터 계산은 두 점 p1(x1, y1), p2(x2, y2)가 있을 때 벡터 방향이 p1으로 향한다고 한다.. 2024. 9. 25.
삼각함수 표와 계산 및 활용 * 삼각함수는 직각삼각형에서 각도와 변의 길이 사이의 관계를 나타내는 함수로 삼각함수의 특별한 각의 값 표는 아래와 같습니다.* 기본적인 삼각함수는 sin, cos, tan 세 가지가 있으며, 이들의 정의는 직각삼각형에서 다음과 같습니다.- sinA = a/h - cosA = b/h - tanA = a/b  * 삼각함수의 그래프는 사인, 코사인, 탄젠트 함수의 주기성과 패턴을 시각적으로 보여줍니다. 각 함수의 그래프는 독특한 모양을 가지고 있으며, 이들의 주기성과 대칭성, 변화를 관찰할 수 있습니다.* 삼각함수 기타 활용 - 두 벡터를 알 때 사이각은 cos으로 구할 수 있습니다. cos(θ) = (A · B) / (|A| |B|)2024.01.17 - [3D Algorithm] - 두 벡터 사이각(내적.. 2024. 9. 23.
특정 좌표 중심에서 3차원 점 회전 원점에서의 3차원 회전글은 아래글을 통해서 설명했습니다.2024.09.13 - [3D Algorithm] - 3차원 회전 3차원 회전3차원 회전 변환행렬은 xy평면(z축 회전), xz평면(y축 회전), yz평면(x축 회전)으로 분류하여 아래와 같습니다.이러한 변환행렬을 쉽게 계산해 주는 라이브러리들이 많이 있습니다. 그darkrock.tistory.com 특정 좌표 중심에서 특정 각만큼 점을 회전하는 방법을 알려드리겠습니다. 아래와 같이 θ, vdir, hdir을 알 때 dir을 구하는 식은(vdir, hdir, dir 모두 단위 벡터입니다.)dir = hdir*cos(θ) + vdir*sin(θ) 로 계산할 수 있습니다. 참고로 단위벡터 의미는 아래글을 보시면 됩니다.2024.09.11 - [3D Al.. 2024. 9. 13.
3차원 회전 3차원 회전 변환행렬은 xy평면(z축 회전), xz평면(y축 회전), yz평면(x축 회전)으로 분류하여 아래와 같습니다.이러한 변환행렬을 쉽게 계산해 주는 라이브러리들이 많이 있습니다. 그 중 glm(OpenGL Mathematics)을 예로 설명드리면, z축으로 45도로 회전의 변환 행렬 계산 코드는 아래와 같습니다.glm::rotate(glm::radians(45.0f), glm::vec3(0.0f,0.0f,1.0f));아래는 위 코드를 적용해서 cube를 회전시키는 그림입니다.만약 큐브 중심에서 z축으로 45도로 회전시키고 싶다면, 큐브를 원점으로 옮기고 45도로 회전한 후 다시 큐브의 위치로 옮겨야 합니다.회전을 하기 위해서는 각도와 회전축, 중심점을 알아야 하지만 기본적으로 중심점은 원점으로 되.. 2024. 9. 13.
벡터 계산과 단위벡터 벡터(Vector)벡터는 어릴 때 학교에서 크기와 방향을 가진 물리량이라고 배웠습니다. 벡터 계산은 두 점 p1(x1, y1), p2(x2, y2)가 있을 때 벡터 방향이 p1으로 향한다고 한다면 벡터 계산은 v = p1-p2로 합니다. 계산된 벡터 v는 크기와 방향을 갖게 됩니다.  벡터 v는 원점(0,0)으로부터 v(x, y)까지 향하는 직선으로 표시할 수 있습니다. 이 직선의 길이가 벡터 v의 크기라고 말할 수 있습니다. 벡터 크기 계산은 √ (x-0)²+(y-0)² 이고 두 점의 길이 계산식과 같습니다. 3차원도 z를 추가해서 같은 방식으로 벡터 크기를 계산 할 수 있습니다. 단위벡터(Unit Vector)단위벡터는 벡터 크기 혹은 길이가 1인 벡터입니다. 벡터의 크기를 1로 변환하는 작업을 정규.. 2024. 9. 11.
3차원 두 직선 교차점(Two Line Intersection) 3차원에서 두 직선 교차점을 찾는 방법 2가지를 소개하겠습니다.1. 첫 번째 행렬식을 이용한 교차점 계산입니다. 점 4개 p1, p2, p3, p4가 있고 직선의 두 벡터 d1(p2-p1), d2(p4-p3)가 있을 때(두 벡터는 길이 1로 정규화)직선 1 : p1+td1 직선 2:  p3+sd2 로 볼 수 있으며, 교차점 있다는 것은  p1+td1 = p3+sd2 이 식으로 표현이 가능합니다. 이때 t와 s를 구하면 됩니다.직선 식 참고는 아래글에서 확인하세요.2024.04.24 - [3D Algorithm] - 3차원 직선 계산 및 벡터 표현(개발자 관점) 3차원 직선 계산 및 벡터 표현(개발자 관점)어렸을 때 배웠던 2차원 직선의 방정식은 y = ax+b 선언하여, 두 점을 이 식에 대입한 후 미지.. 2024. 9. 10.
반응형