
#include <pw/core/vector.hpp>
#include <pw/core/serialize.hpp>

#include <iostream>

int main(int argc,char **argv) {

    pw::vector2_<float> v2_A = { 3.2, 1.2 };
    pw::vector2_<float> v2_B = { 3.2, 1.2 };

    auto AB_lerp = pw::vector2f::lerp(v2_A,v2_B,0.5);

    pw::vector4_<float> v4;
    pw::vector3f v;

    v4.fill(1.5);

    std::cout << "v4 = " << pw::serialize::matrix(v4) << std::endl;

//    std::cout << "rows()       : " << v4.rows() << std::endl;
//    std::cout << "cols()       : " << v4.cols() << std::endl;
    std::cout << "ptr()       : " << v4.ptr() << std::endl;
    std::cout << "ptr()[0]    : " << v4.ptr()[0] << std::endl;
    std::cout << "(0,0)      : " << v4(0,0) << std::endl;

    auto v3 = v4.xyz();

    auto v3_p = v4.project();

    auto v3_h = v.homogenous();

//	auto v3_lerp = vector4f::

    std::cout << "v3 = " << pw::serialize::matrix(v3) << std::endl;

    std::cout << "v3.normalized() = " << pw::serialize::matrix(v3.normalized()) << std::endl;


    return 0;
}
