Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Офф-топ

Страница: 1 |

 

  Вопрос: [Math]Задачка на нахождение угла (не олимпиада) Добавлено: 11.03.05 16:25  

Автор вопроса:  Morpheus | Web-сайт: xury.zx6.ru
Всем дарова!
Вот математик дал задачки, блин, вроде трёхметровый список прорешал, а на этой застрял блиин.
------------
Короче задана функция 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-сайт: xury.zx6.ru
 Профиль | | #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-сайт: xury.zx6.ru
 Профиль | | #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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам