본문 바로가기

Computation Geography14

9. Vector Collinear, Corplaner Check 벡터들이 동일선상에 있는지, 동일 평면상에 있는지 확인하는 방법 입니다. 1) Vector의 동일 선상에 있는지 확인. 단위 벡터에 k배를 곱했을때, 만들수 있는 좌표이면 동일선상에 있다고 할수 있다. 이런 좌표들을 동차 좌표라고도 한다. 단위벡터에서 K배의 곱셈으로 좌표로 만들수 있는 것들은 전부 동일 선상에 있으므로 K를 없다고 봅니다. 3차원 좌표이니 x, y 대신 a, b를 사용해서 식으로 표현하면 다음과 같이 표현 가능하다. 코드입니다. public bool Collinear(Vector3f a, Vector3f b) { var v1 = a.x * b.y - a.y * b.x; var v2 = a.y * b.z - a.z * b.y; var v3 = a.x * b.z - a.z * b.x; re.. 2023. 9. 15.
8. Line, Plane간 Angle 구하기 Line, Plane 간 Angle을 구해봅시다. 삼각함수를 사용하여 각도를 계산하는데, 삼각함수에서 사용하는 세타 값은 호도법을 사용한 각도 이므로, 이를 육십분법으로 변환하는 과정이 필요합니다. 그래서 호도법에 대해서 먼저 알아야 합니다. 호도법은 원의 호를 사용하여 각도를 표시하는 방법입니다. 변환하는 과정만 알면 되므로 이를 코드로 변환하면 다음과 같습니다. 라디안 --> 디그리(도) 변환시 사용 - 1 rad = (180 / 파이) 디그리(도) --> 라디안 변환시 사용 - 1 degree = (파이 / 180) public static float DegreeToRadian(float angle) { return angle * ((float)Math.PI / 180.0f); } public st.. 2023. 9. 14.
7. 두 점(Point)의 교점 구하기 두직선의 교점을 구해보자. 다음과 같이 Point A, B로 이루어진 Line A과 Point C, D로 이루어진 Line B가 있다고 가정하자. 여기서 Line은 Line segment가 아닌 양방향으로 무한대로 뻗어나가는 직선입니다. P라는 교차점 있습니다. P점은 AB Line 위에 존재 합니다. AB라인의 식을 사용해서 P점을 나타내면 P(t) = (B - A) * t + A 또한 P점은 CD Line 위에 존재 합니다. CD라인의 식을 사용해서 P점을 나타내면 P(t) = (D - C) * t + C 여기서 CD의 법선벡터 N이 있다고 가정합니다. CD 라인과 법선벡터 N은 서로 수직(Perpendicular)이며, 내적(dotproduct)의 성질인 서로 수직인 벡터를 내적하면 0 임을 이용하.. 2023. 9. 13.
6. 면 (Plane) Plane을 만들수 있는 방법은 다음과 같다. 1> Point 3개로 이루어진 면 2> Point 1개와 Line 2개 3> Line 2개 Line 을 만들때 Point 2개가 필요하므로, Point 1개가 추가로 더 필요하다. 면을 기하적으로 표현하면 아래와 같다. Plane 방정식 다음과 같다. - P, Q는 Plane에 포함된 서로 다른 Point. - n은 P, Q와 수직인 노멀 벡터 평면의 방정식을 좌표를 넣어서 풀어보면 ax + by + cz = d 형태의 식으로 나타낼 수 있습니다. - a, b, c 는 normal vector(n)의 구성 요소 입니다. - d의 상수값은 normal vector(n)과 point (q)의 내적으로 이루어짐을 알 수 있습니다. 코드에서는 Plane을 내부적으.. 2023. 9. 11.