C++ projection 구현하기
C++,projection,구현하기,정사영
최근 그래픽스 라이브러리를 함에 오픈소스로 활동에 따라 선형대수를 공부하고 있다.
A/B의 내적을 통해 새선분의 크기를 구하고 B의 크기와 비율을 통해 proj된 성분 A/B를 구하면 쉽게 구할수 있다.
projection에서 중요한건 크기와 방향이다.
#include <iostream>
#include <array>
std::array<double, 3> vectorProjection(const std::array<double, 3>& a, const std::array<double, 3>& b) {
double dotProductB = b[0] * b[0] + b[1] * b[1] + b[2] * b[2];
double dotProductAB = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
double scalar = dotProductAB / dotProductB;
return { scalar * b[0], scalar * b[1], scalar * b[2] };
}
int main() {
std::array<double, 3> a = { 1, 2, 3 };
std::array<double, 3> b = { 4, 5, 6 };
std::array<double, 3> proj = vectorProjection(a, b);
std::cout << "Projection (" << proj[0] << ", " << proj[1] << ", " << proj[2] << ")" << std::endl;
return 0;
}