tak wygląda funkcja

VOID XMVector3ComponentsFromNormal(
  [out]  XMVECTOR *pParallel,
  [out]  XMVECTOR *pPerpendicular,
  [in]   XMVECTOR V,
  [in]   XMVECTOR Normal
);
Parameters

pParallel [out]
    Address of the component of V that is parallel to Normal.

pPerpendicular [out]
    Address of the component of V that is perpendicular to Normal.

V [in]
    3D vector to break into components.

Normal [in]
    3D reference normal vector.

o co chodzi z dwoma pierwszymi parametrami??
chodzi o przekształcenie wektora V tak żeby był równoległy a w drugim prostopadły do normal??

w książce jest podane że pierwsz to jest wynik proj_n(V) gnie n to normal
a drugie prep_n(V)

jak mam dwa wektory
t1(4,2) oraz t2(1,2)
to proj_t2(t1) = (1,6; 3,2) funkcja zwraca = (8, 16)
ale 5 * (1,6; 3,2) = (8, 16) więc jakie on robi przekształcenie ??

a to drugie to nie wiem jak policzyć pierwszy raz widze ten zapis prep i nie moge tego nigdzie znaleźć

XMVECTOR projW;
XMVECTOR perpW;

XMVECTOR t1 = XMVectorSet(4.0f, 2.0f, 0.0f, 0.0f);
XMVECTOR t2 = XMVectorSet(1.0f, 2.0f, 0.0f, 0.0f);

XMVector3ComponentsFromNormal(&projW, &perpW, t1, t2);

cout << "projW = " << projW << endl;
cout << "perpW = " << perpW << endl;

projW = (8,16, 0), a perpW =(-4, -14, 0);
projW się nakłada na t2 więc jest równoległy
perpW jest nieprostopadły do t1,t2,projW

więc co to jest za wektor??