벡터의 내적과 외적의 성질을 사용
마우스 휠을 돌리면 카메라로부터 녹색 선이 나타나고, 그 선의 끝이 큐브와 닿으면 선이 붉게 변한다.
위의 외적의 성질을 통해, 두 벡터의 외적의 정규화=법선 벡터이고, 점 P가 삼각형 ABC 내부에 있다면 각 변의 정점에서 점 P로의 벡터로 법선 벡터를 구해도 같은 법선벡터가 나와야 한다.
아니라면, 법선벡터의 방향은 반전된다.
Mesh mesh = pivot.gameObject.GetComponent<MeshFilter>().mesh;
// mesh : 폴리곤 메시의 정점 좌표 배열
for (int i = 0; i < mesh.vertices.Length; i++)
{
if (triangleVertices.Count < 3) {
triangleVertices.Add(mesh.vertices[i]);
}
}
Vector3 edge1 = triangleVertices [1] - triangleVertices [0];
Vector3 edge2 = cameraPoint - triangleVertices [1];
Vector3 edge3 = triangleVertices [2] - triangleVertices [1];
Vector3 edge4 = cameraPoint - triangleVertices [2];
Vector3 edge5 = triangleVertices [0] - triangleVertices [2];
Vector3 edge6 = cameraPoint - triangleVertices [0];
Vector3 cp1 = Vector3.Cross (edge1, edge2);
Vector3 cp2 = Vector3.Cross (edge3, edge4);
Vector3 cp3 = Vector3.Cross (edge5, edge6);
if (Vector3.Dot (cp1, cp2) > 0 && Vector3.Dot (cp1, cp3) > 0) {
//두 벡터의 부호가 같으면 한 평면에 있는 것 = 빨간 선으로 표시
Debug.DrawLine (transform.position, cameraPoint, Color.red);
} else {
Debug.DrawLine (transform.position, cameraPoint, Color.green);
}
행렬 계산 기능을 시험하는 간이 계산기
Determinant(3x3) : 3x3 행렬식
RHS : 4차원 열벡터
[CustomEditor( typeof(Chapter04) )] //클래스 정의를 해줌으로써 커스터마이징 클래스로 만듦
public class Chapter04Editor : Editor {
...
}
클래스 코드는 Editor 클래스를 상속하고, 클래스 정의를 추가해준다.