1 min read

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;
}