Kąt

0

w jaki sposob obliczyc kąt zawarty miedzy dwoma kreskami
oto te kreski :-P :-P

with canvas do
begin
moveto(0, 200);
lineto(400, 200);
moveto(200, 0);
lineto(30, 200);
end;

chodzi mi o ten kąt ostry [cya] [browar]

0

Kąt ten to Arcus tangens (30/200) ;)

0

a moglbys mi napisac procedurke np pod buttona bo nebardzo wiem jak to przerobic :-8

0

k:=arctan(30/200);

0

a w jaki sposob wyswietlic obliczony kat w stopniach ?? np 45stopni :)

0

k:=arctan(30/200);

moglbys mi podac ktore to są punkty ?? :/

0

Te "kreski" musisz potraktowąć jako wektory.
Jeżeli masz "kreski" od punkut A do B oraz od C do D, to tworzysz wektory:
V = [Bx-Ax; By-Ay]
oraz
U = [Dx-Cx; Dy-Cy]
teraz:
IlSkal := UxVx+UyVy //x i y oznaczają odpowiednio pierwszą i drugą współrzędną wektora
IlDl := Sqrt(VxVx + VyVy)Sqrt(UxUx + Uy*Uy)
cos(alfa) := IlSkal/IlDl;
a Twój kąt to:
alfa := arccos(IlSkal/IlDl); :)

A w tym konkretnym wypadku to można nawet łatwiej.
tg(alfa) := (200-0)/(200-30) = 200/170 = 20/17
alfa := arctan(20/17);
Hmm. Detox. Chyba się troszkę pomyliłeś :)

0

k := 180k/pi;
SetRoundMode(rmDown);
k_str := IntToStr(Round(k)) + '°' + IntToStr(Round(60
(k-Round(k)))) + `' + FloatToStrF(60*(60*(k-Round(k)) - Round(60*(k-Round(k)))),ffFixed,15,Prec) + ``;
SetRoundMode(rmNearest);

0

Bobik: ale ty kombinujesz. Wystarczy tak:
k := 180k/pi;
k_str := IntToStr(Trunc(k)) + '°' + IntToStr(Trunc(60
Frac(k))) + `' + FloatToStrF(60Frac(60Frac(k)), ffFixed, 15, Prec) + ``;
:)

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