Matematyka - obliczanie kąta w tym przypadku

0

Mógłby ktoś pomóc mi z obliczaniem kąta w takich przypadkach:
user imageuser image

Alfę umiem (tak myślę) robię sobie z tego trójkąt, liczę sinus, a potem z arcusa wyznaczam kąt.
Bety już nie wiem jak tu się nie da tak jak w alfie. Chodzi mi oto żeby to w kod wklepać, bo chciałbym zrobić obracanie textury do danego punktu (od osi Y). I jak to zrobić? Czy jest uniwersalny wzór w takim przypadku czy dla każdego kierunku punktu względem drugiego muszę pisać osobną funkcję do obliczania kąta?

0

http://zapodaj.net/images/846df6a47b84.png
http://zapodaj.net/images/cf40ac2d7e82.png

uses
  Math;

const
  Pi = 3.1415;

function Odleglosc(A, B : TPoint): Extended;
 {Funkcja oblicza odległość od punktu A do B}
begin
  Result := Sqrt(Sqr(B.X - A.X) + Sqr(B.Y - A.Y));
end;

function Oblicz_Kat(A, B : TPoint): Extended; overload;
{^^^^^^^^^^^^^^^^^^^^^^^^^^}
{     X                    }
{     |                    }
{     |                    } {X - OŚ X}
{     |          B         }
{     |       _/           } {A - Punkt1}
{     |     _/             }
{     |  _/                } {B - Punkt2}
{     A/                   }
{                          }
{__________________________}
begin

Result := 180 - (ArcCos((B.Y - A.Y)/Odleglosc(A, B))) * 180 /Pi;
if B.X < A.X then Result := 360 - Result;
end;

function Oblicz_Kat(A, B, C : TPoint): Extended; overload;
{^^^^^^^^^^^^^^^^^^^^^^^^^^}
{                          }
{                          }
{         A                }
{        /                 }
{       /                  }   {Wynik: Kat ABC}
{      /                   }
{     /                    }
{     B--------------C     }
{                          }
{__________________________}
begin
  Result := Oblicz_Kat(B, C) - Oblicz_Kat(B, A);
end; 

Zaznaczam że jestem autorem tych funkcji i nie życzę sobie umieszczania ich gdziekolwiek bez mojej wiedzy lub bez podania autora.

0

Spoko, ale mógłbyś wytłumaczyć jak głupiemu o co dokładnie chodzi? Chciałbym bardziej to zrozumieć niż mieć w kodzie.

Nowe zdjęcia:
user image
user image

0

Otóż wszystko wychodzi z takiego prostego kodu.

A.X := B.X + Odleglosci * Sin(Kat / 180 *Pi);
A.Y := B.Y + Odleglosci * Cos(Kat / 180 *Pi);

Teraz zmienna A zawiera współrzędne punktu postawionego na obwodzie koła o promieniu Odleglosc, którego środkiem jest punkt B pod kątem Kat.

Reszta jest tylko przerobionym kodem.

0

Pod kątem, ale do osi X, czyli do pionu?

Nie wiem, z tego kodu nic nie kapuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0