본문 바로가기
반응형

3D Algorithm42

라디안 각도 변환과 개념(Radian Degree) - 쉽게 그림으로 설명 라디안과 각도 변환 식은 아래와 같습니다.- radian to degree: rad*180/3.14- degree to radian: degree*3.14/1803.14를 pi 수치(3.14xxxxxxxxx)로 적용해야 좀 더 정확한 계산이 될 겁니다. 식을 보면 pi(3.14..)와 180도 값을 이용해서 식을 만들었습니다. 어렸을 때 pi는 180도라고 배웠는데 라디안 pi가 왜 180도인지 그림을 통해서 한번 보도록 하겠습니다. 라디안 1은 원의 반지름 r과 호의 길이가 같을때를 말합니다. 이때 1 라디안 각도는 57.29(1radian * 180/3.14) 도 입니다. 라디안 2는 호의 길이가 반지름 2배 한 것과 같을 때를 말합니다.(114.59도 = 2 radian  * 180/3.14)  라.. 2023. 10. 26.
3차원 직선 계산 및 벡터 표현(개발자 관점) 어렸을 때 배웠던 2차원 직선의 방정식은 y = ax+b 선언하여, 두 점을 이 식에 대입한 후 미지수 a, b를 구하여 직선의 방정식을 구했습니다. 3차원에서 직선은 다음과 같이 3가지로 표현할 수 있습니다. 두 점 p1과 p2를 알고 있을 때 1. 첫 번째 방법은 두 점의 차이 벡터를 이용해서 직선을 표현하는 것입니다. 차이 벡터를 dv라고 하면, dv = p2 - p1  이며 이 두 점 사이에 있는 점들은  p(t) = p1 + dv*t,       0 이렇게 표현할 수 있습니다. t가 0이면 p1에 해당하고 t가 1이면 p2라고 보시면 됩니다. 2. 두 번째 방법은 차이 벡터를 사용하지 않고 t만 사용하는 직선입니다. 이 식은  p(t) = (1-t)*p1 + t*p2,      0 로 표현 할 .. 2023. 10. 26.
stl, obj 3D 파일 포멧 기본 정보(3D File Format) 3D 파일로 주로 쓰이는 stl과 obj 파일 포맷의 기본적인 geometry 정보(에니메이션, 텍스쳐, 포인트 색상정보 제외)를 알려드리겠습니다. 이 두 파일 뿐만 아니라 대부분의 3D 파일(volume이 아닌 surface drawing을 목적으로 하는 파일)은 점의 좌표와 면의 정보를 저장하고 있습니다. 두 파일이 점의 좌표와 면의 정보를 어떻게 저장하는지 간략히 보도록 하겠습니다. 우선 아래의 3D 데이터는 점 4개와 2개의 삼각형으로 이루어져 있습니다. 이 데이터를 stl 파일과 obj 파일의 저장 방식과 차이점을 보도록 하겠습니다. stl 파일은 두가지 바이너리(Binary)와 아스키(ASCII)로 나누어 집니다. Binary는 컴퓨터 언어로 써져있어 우리들이 보기 힘들고, ASCII는 우리들.. 2023. 10. 23.
평면 방정식 의미(개발자 관점) 평면의 방정식은 3점이 주어지거나 평면의 노말, 한 점이 주어지면 구할 수 있습니다. 일반적으로평면의 방정식을 ax+by+cz+d = 0 이라고 나타낼 수 있는데, 여기서 a,b,c는 평면의 노말로 볼 수 있고, x,y,z는 평면의 한 점이라고 볼 수 있습니다. 이를 그림으로 나타내면 아래와 같습니다. 평면의 방정식의 d를 우변으로 넘기면 ax+by+cz = -d로 나타낼 수 있는데, ax+by+cz 를 자세히 보면 어디서 많이 봤던 식의 형태가 나옵니다. 바로 내적을 구하는 식입니다. 따라서 ax+by+cz = (a,b,c)•(x,y,z)로 볼 수 있습니다. 그래서 평면방정식은 (a,b,c)•(x,y,z) = -d로 바꿔 쓸 수 있고, 이 식의 의미는 평면의 한 점과 평면의 노말을 내적 한 값이 -d라.. 2023. 10. 20.
3차원 점 직선 투영(Point Line Projection) 방법1 3차원에서 lineP를 지나고 백터가 lineDir인 직선에 점 p를 수직으로 투영하는 문제입니다.여러 가지 방법이 있겠지만, 간단하게 하려면 점 p를 투영하기 위한 위 그림의 빨간색의 백터와 길이를 구하면 될 것으로 보입니다.백터와 길이를 구하게 된다면 p + distance*vector로 투영 점의 위치를 구할 수 있습니다. 우선 아래 그림의 Dist는 내적을 이용하여 구할 수 있습니다. Dist = (lineP-P) • lineDir                      • : 내적  Dist를 구하면 p를 p'위치로 이동할 수 있고 linep-p'를 이용해서 vector를 구할 수 있습니다.그리고 linep와 p'의 거리를 구하게 되면 투영에 필요한 distance도 구할 수 있습니다.p' = p.. 2023. 10. 13.
직선 평면 교차점(Line Plane Intersection) 직선과 평면이 만나는 교차점을 계산하는 식에 대해 알아보도록 하겠습니다. 직선의 방정식은 직선을 지나는 한 점과 직선의 방향을 알면 아래와 같이 나타낼 수 있습니다.Line(t) = lineP + t*lineDir여기서 t는 lineP에서 얼마만큼 떨어졌는지(거리)를 나타냅니다. lineP: 직선 위의 한점 lineDir: 직선의 방향백터 평면 위의 두 점 차를 평면의 노말로 내적 하면 0이 됩니다. 평면 위의 두 점 차는 평면 위의 벡터로 보시면 됩니다. 이것을 식으로 작성하면 아래와 같습니다. planeNom • (planeP1 - planeP2) = 0                  • : 내적  planeNom:평면의 노말 planeP1, planeP2: 평면 위의 두 점 평면 위의 한점 plan.. 2023. 10. 11.
반응형