const eps = 0.001; // точность
var x0, y0, x, y, R, F, a: real;
function arcsin(x: real): real;
begin
if abs(x) > 1 then arcsin := 0
else arcsin := arctan( x / sqrt((1 - sqr(x))) ) / pi * 180.0
end;
function angle(x0, y0, x, y, R: real): real;
var l: real;
begin
l := sqrt( sqr(x-x0)+sqr(y-y0) );
angle := 2 * arcsin(R/l)
end;
begin
readln(x0, y0, x, y, R, F);
a := angle(x0, y0, x, y, R);
if abs(a-F) < eps then
writeln('yes')
else
writeln('no')
end.
Геометрические задачи
Помогите плиз...
1. На плоскости задана окружность с центром в т.О(x0,y0) радиуса R. Составьте программу, определяющую, принадлежит ли заданная точка Z(x,y) множеству таких точек на плоскости, что касательные, проведенные из этой точек к данной окружности, образуют между собой угол F.
2. Длина основания равнобедренного треугольника равна A, величина угла при вершине F. Составьте программу вычисления длины наибольшей высоты треугольника.
1. На плоскости задана окружность с центром в т.О(x0,y0) радиуса R. Составьте программу, определяющую, принадлежит ли заданная точка Z(x,y) множеству таких точек на плоскости, что касательные, проведенные из этой точек к данной окружности, образуют между собой угол F.
[/QUOTE]
Код:
[QUOTE=Fieldy]
2. Длина основания равнобедренного треугольника равна A, величина угла при вершине F. Составьте программу вычисления длины наибольшей высоты треугольника.
[/QUOTE]
Код:
h := A * max( sin(F), 2 * tan(F) )
Вроде бы так...
З.Ы. Заранее хочу предупредить о возможных ошибки в синтаксисе ;)
Код:
h := A * max( sin(F), 2 * tan(F) )
[/QUOTE]
если так, то в этом случае F должно быть в радианах, а если F задано в градусах, то надо так:
Код:
sin(F*pi/180)
или
tan(F*pi/180)
или
tan(F*pi/180)
[/QUOTE]
В данном случае F - в радианах
я то понял, просто человеку пояснил.
спасибо