Страница: 1 |
Страница: 1 |
Вопрос: [Math]Задачка на нахождение угла (не олимпиада)
Добавлено: 11.03.05 16:25
Автор вопроса: Morpheus | Web-сайт:
Всем дарова!
Вот математик дал задачки, блин, вроде трёхметровый список прорешал, а на этой застрял блиин.
------------
Короче задана функция f(x)=-0.4|2x+6|+4
Нужно найти угол, образуемый лучами функции.
------------
У меня кончно была идея найти три точки (даже две, вершина уже известна) а потом найти между ними расстояние и через теорему косинусов... блин дык кто мне на экзамне таблицы с с углами даст? И время... если др. решения нет, то ладно, если есть очень прошу помочь :-)
Желательно с решением, ответ есть.
Кстати, если кому интерестно, вот оригинальный текст задачи:
------------
An absolute value function is defined by the rule
f(x)=-0.4|2x-6|+4.
What is the degree measure of the angle contained by the rays forming its graph?
------------
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #1
Добавлено: 11.03.05 16:57
опа, нашёл решение через арктангенс (a=2*atn(1/|a|) где А в нашем случае =-0.4*2, хочешь не хочешь пришлось тригонометрию приплести
Номер ответа: 2
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #2
Добавлено: 11.03.05 17:47
Условие задачи не очень понятно, но как найти разность углов между двумя лучами, я знаю. Для этого я сделал функции IntAngle и IntSubtractAngle (в полном обороте здесь 65536 градусов):
Public Const pi = 3.14159265358979
Public Const pi_AMapp = 65536 / (pi * 2)
Function IntAngle(ByVal X1&, ByVal Y1&, ByVal X2&, ByVal Y2& As Long
Dim X&, Y&
X = X2 - X1
Y = Y2 - Y1
If X = 0 Then
If Y >= 0 Then IntAngle = CLng(pi * pi_AMapp) Else IntAngle = 0
Else
If X > 0 Then
IntAngle = CLng((Atn(Y / X) + pi * 0.5) * pi_AMapp)
ElseIf Y >= 0 Then
IntAngle = CLng((Atn(Y / X) + pi * 1.5) * pi_AMapp)
Else
IntAngle = CLng((Atn(Y / X) - pi * 0.5) * pi_AMapp)
End If
End If
End Function
Function IntSubtractAngle(ByVal A1&, ByVal A2& As Long
Dim R&
R = A2 - A1
If R > 32768 Then R = R - 65536
If R < -32768 Then R = R + 65536
IntSubtractAngle = R
End Function
Номер ответа: 3
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #3
Добавлено: 11.03.05 22:00
spasibo za kod a tak eto zadacha po matematike...
Nado prikolots'a.... ya perepishu etot kod v tetradku i sdam....tipa resheniye. posmotru na ego litso
Номер ответа: 4
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #4
Добавлено: 12.03.05 12:10
%O
Номер ответа: 5
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #5
Добавлено: 12.03.05 12:22
Решение будет таким:
Function GetVectorAngleDiff(L1X1&, L1Y1&, L1X2&, L1Y2&, L2X1&, L2Y1&, L2X2&, L2Y2& As Long
GetVectorAngleDiff = IntSubtractAngle(IntAngle(L1X1&, L1Y1&, L1X2&, L1Y2&, IntAngle(L2X1&, L2Y1&, L2X2&, L2Y2&)
End Function