본문 바로가기
Computation Geography

6. 면 (Plane)

by SimonLee 2023. 9. 11.

Plane을 만들수 있는 방법은 다음과 같다.

1> Point 3개로 이루어진 면

2> Point 1개와 Line 2개

3> Line 2개

Line 을 만들때 Point 2개가 필요하므로, Point 1개가 추가로 더 필요하다.

 

면을 기하적으로 표현하면 아래와 같다.

Point 3개로 이루어진 면

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을 내부적으로 저장할때는 normal vector와 d 값을 저장합니다.

 

assignment 1>
점 q(1, 1, 1)을 통과하고 평면 x + 2y + 4z = 4에 평행한 평면에 대한 방정식을 구합니다.

public class Plane
{
    private Vector3f normal;
    private float d;
    public Plane()
    {
        d = 0;
        normal = Vector3f.zero;
    }

    public Plane(Vector3f normal, float constant)
    {
        this.normal = normal;
        this.d = constant;
    }

    public Plane(Point3d p1, Point3d p2, Point3d p3)
    {
        var v12 = p2 - p1;
        var v13 = p3 - p1;
        this.normal = Vector3f.CrossProduct3D(v12, v13);
        this.d = Vector3f.DotProduct(this.normal, p3);
    }
}