Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Sin Cos Добавлено: 03.09.07 17:29  

Автор вопроса:  Sneaks
Есть такая вешь поворачиваю обьект углом (Alf) и получаю координаты и их ставлю. Если надо дальше повернуть обьет изменяю угол и опять ставлю по координатам:
alf=0.52
x=Sin(alf)
y=Cos(alf)

С эитм все ок. Только появилась задача обратная. В нужную сторону повернуть обьект а потом по координатам узнать угол. Вот с этим ни как не могу понять что делать
Грубо говоря:
x=1
y=0
alf=?
Уже все школу вспомнил и препода по геометрии :))
Должен быть арксинус и арккосинус но его нет. Помогите :)

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 el-paso



Вопросов: 0
Ответов: 56
 Профиль | | #1 Добавлено: 03.09.07 19:12
Public Function ACos#(x#)
    ACos = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)
End Function

Public Function ASin#(x#)
    ASin = Atn(x / Sqr(-x * x + 1))
End Function

Ответить

Номер ответа: 2
Автор ответа:
 udpn



Вопросов: 2
Ответов: 45
 Профиль | | #2 Добавлено: 03.09.07 19:30
это х*рня. все делается через арктангенс. http://slil.ru/24810693

Ответить

Номер ответа: 3
Автор ответа:
 Sneaks



Вопросов: 9
Ответов: 84
 Профиль | | #3 Добавлено: 03.09.07 19:37
спасибо сейчас попробую :)

Ответить

Номер ответа: 4
Автор ответа:
 udpn



Вопросов: 2
Ответов: 45
 Профиль | | #4 Добавлено: 03.09.07 20:16
нзч

Ответить

Номер ответа: 5
Автор ответа:
 Sneaks



Вопросов: 9
Ответов: 84
 Профиль | | #5 Добавлено: 03.09.07 22:23
Пример el-paso отлично работает то чно нужно :))
 udpn а твой фаил чет не качается.

Ответить

Номер ответа: 6
Автор ответа:
 udpn



Вопросов: 2
Ответов: 45
 Профиль | | #6 Добавлено: 04.09.07 19:41
угу, только скорость отличается )

Option Explicit

Private X0 As Long, Y0 As Long
Private Const Pi As Single = 3.14159

'Private Declare Function PlgBlt Lib "gdi32" (ByVal hdcDest As Long, lpPoint As POINTAPI, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long) As Long
'Private Type POINTAPI
' x As Long
' y As Long
'End Type

Private Sub Form_Load()
    Show
    X0 = ScaleWidth \ 2
    Y0 = ScaleHeight \ 2
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    X0 = x
    Y0 = y
    Form_MouseMove 0, 0, x, y
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    ;Dim r As Long
    ;Dim Phi As Single
    
    r = Sqr((x - X0) ^ 2 + (y - Y0) ^ 2)
    If y - Y0 = 0 Then
        If x - X0 = 0 Then
            Phi = -1
            GoTo draw
        Else
            Phi = Pi / 2
        End If
    Else
        Phi = Abs(Atn((x - X0) / (y - Y0)))
    End If
    If x - X0 < 0 Then
        If y - Y0 < 0 Then
            Phi = (Pi / 2 - Phi) + 3 * Pi / 2
        Else
            Phi = Phi + Pi
        End If
    Else
        If y - Y0 < 0 Then
            Phi = Phi
        Else
            Phi = Pi - Phi
        End If
    End If
    
    'A
        'Phi = Phi - Pi / 2
        'If Phi < 0 Then Phi = Phi + 2 * Pi
    'B
        If Phi > Pi Then Phi = Phi - Pi * 2
    
    Phi = Phi / Pi * 180
draw:
    Cls
    Caption = "r = " & Format(r, "0.000";) & "; Phi = " & Format(Phi, "0.000";)
    PSet (X0, Y0)
    FillStyle = 1
    Circle (X0, Y0), r
    Line (X0, Y0)-(X0 + (x - X0) * ScaleWidth, Y0 + (y - Y0) * ScaleWidth)
    FillStyle = 0
    Circle (x, y), 5
End Sub

Ответить

Номер ответа: 7
Автор ответа:
 el-paso



Вопросов: 0
Ответов: 56
 Профиль | | #7 Добавлено: 05.09.07 00:36
А чё я?..
Я ничё..
Я только функции арксинуса и арккосинуса дал..

Ответить

Страница: 1 |

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



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