반응형
유니티에서 자주 사용하는 벡터 연산은 내적과 외적이다.
내적의 결과는 스칼라다. (Vector3.Dot)
외적의 결과는 벡터이며, 삼각형의 넓이를 구하는 공식을 참고하자. (Vector3.Cross)
그렇다면 벡터의 각 성분만 곱하는 것은 뭐라고 할까?
행렬에서는 아다마르 곱(Hadamard Product)이라고 한다.
벡터는 1차원 행렬로 볼 수 있다.
두 벡터를 구성 요소별로 곱하기만 하므로 결과는 벡터다.
(Multiplies Two Vectors Component-Wise / Element Wise Product)
유니티에서 Vector3.Scale을 이용하면 된다.
생각보다 많이 쓰이지만 함수 이름이 잘 생각 안 나거나 어떻게 표현해야 할지 모르는 경우가 많다.
성분 곱이라고 검색하면 대부분 내적이 나오기 때문이다.
아래의 스크립트를 실행해서 연산 결과를 확인해보자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class VectorCalculate : MonoBehaviour
{
void Start()
{
Vector3 a = new Vector3(1, 2, 3);
Vector3 b = new Vector3(4, 5, 6);
// a1 * b1 + a2 * b2 + a3 * b3 = 1 * 4 + 2 * 5 + 3 * 6 = 32
float dot = Vector3.Dot(a, b);
// (-3, 6, -3)
Vector3 cross = Vector3.Cross(a, b);
// (a1 * b1, a2 * b2, a3 * b3) = (1 * 4, 2 * 5, 3 * 6) = (4, 10, 18)
Vector3 scale = Vector3.Scale(a, b);
Debug.Log("dot : " + dot);
Debug.Log("cross : " + cross);
Debug.Log("scale : " + scale);
}
}
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 - JsonUtility로 Json 내보내기 : (4) Export (0) | 2022.06.25 |
---|---|
유니티 - JsonUtility로 Json 파싱하기 : (3) 오브젝트 배열 파싱 (0) | 2022.06.25 |
유니티 - 비주얼 스튜디오에서 Json 파일 열기 (Open Json file in Visual Studio) (0) | 2022.06.25 |
유니티 쉐이더 - 평면의 양면 렌더링 (Double Sided Rendering) (1) | 2022.06.21 |
유니티 - 에디터 윈도우에서 블럭의 위치 Mapping 하기 (EditorWindow) (0) | 2022.06.20 |
댓글