Rysunek przestawiający problem:
Posiadam kąt oznaczony jako alpha, wektor padający na powierzchnię (w tym przypadku odcinek) oraz wektor normalny powierzchni, od której następuje odbicie. Potrzebą wyznaczyć kąt eta oraz wektor po odbiciu.
Mój algorytm:
1. Wyliczam kąt pomiędzy wektorem padającym, a wektorem normalnym powierzchni.
2. Podwajam go.
3. Początkiem wektora odbitego jest koniec wektora padającego.
4. Koniec wektora odbitego wyliczam z obrotu początku wektora padającego o wcześniej wyliczony kąt względem punktu styczności wektorów oraz powierzchni.
5. Wyliczam kąt eta wiedząc, że tg eta = wsp. a w prostej leżącej na znalezionym wektorze w poprzednim punkcie.
Niestety już w 4. punkcie mam jakiś błąd. Wiem czy to wina algorytmu, wzorów czy też kodu. Może ktoś będzie wstanie mi pomóc
Kod: Zaznacz cały
v1.x = sin(alfa) * i;
v1.z = - cos(alfa) * i;
dp1 = v1.x * v3.lx + v1.z * v3.lz;
gamma = acos(dp1 / i * 2);
#v1.B.x - dane (ostatni punkt ruchu obiektu przed detekcją kolizji)
#v1.B.z - dane (ostatni punkt ruchu obiektu przed detekcją kolizji)
v1.A.x = x - v1.x;
v1.A.z = z - v1.z;
v2.A.x = v1.B.x;
v2.A.z = v1.B.z;
v2.B.x = (v1.A.x - v2.A.x) * cos(2*gamma) + v2.A.x - (v1.A.z - v2.A.z) * sin(2*gamma) + v2.A.z;
v2.B.z = (v1.A.x - v2.A.x) * sin(2*gamma) + v2.A.x + (v1.A.z - v2.A.z) * cos(2*gamma) + v2.A.z;
v1 - wektor padający:
- v1.A - początek wektora padającego
- v1.B - koniec wektora padającego
- v1.A.x - współrzędna iksowa początku wektora padającego
- v1.A.y - współrzędna igrekowa początku wektora padającego
- v1.B.x - współrzędna iksowa końca wektora padającego
- v1.B.y - współrzędna igrekowa końca wektora padającego
- v1.x - współrzędna iksowa wektora padającego
- v1.y - współrzędna igrekowa wektora padającego
- v1.A - początek wektora odbitego
- v1.B - koniec wektora odbitego
- v1.A.x - współrzędna iksowa początku wektora odbitego
- v1.A.y - współrzędna igrekowa początku wektora odbitego
- v1.B.x - współrzędna iksowa końca wektora odbitego
- v1.B.y - współrzędna igrekowa końca wektora odbitego
- v1.x - współrzędna iksowa wektora odbitego
- v1.y - współrzędna igrekowa wektora odbitego
- v3.lx - współrzędna iksowa wektora normalnego powierzchni, od której następuje odbicie
- v3.ly - współrzędna igrekowa wektora normalnego powierzchni, od której następuje odbicie
i - długość wektora padającego oraz odbitego
szerokość powierzchni = 2