Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/08/2006, 21:53
Avatar de [EX3]
[EX3]
 
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
Antigüedad: 19 años, 1 mes
Puntos: 1
Exactamente que necesitas saber? el angulo dado entre dos puntos? por que de ser asi la solucion seria mas sencilla. Este el codigo que tengo implementado en la dx_lib32 para calcular el angulo entre dos puntos:

Código:
'Calcula en angulo entre dos puntos:
Public Function MATH_GetAngle(X1 As Long, Y1 As Long, X2 As Long, Y2 As Long) As Single
    MATH_GetAngle = CSng(MATH_Atan2(CDbl(Y2) - CDbl(Y1), CDbl(X2) - CDbl(X1)) * 180 / PI)

End Function

'Devuelve el arco tangente en radianes de dos números:
Public Function MATH_Atan2(X As Double, Y As Double) As Double
    On Error GoTo ErrOut
    Dim Theta As Double

    If (Abs(X) < 0.0000001) Then
         If (Abs(Y) < 0.0000001) Then
              Theta = 0#

         ElseIf (Y > 0#) Then
               Theta = 1.5707963267949

         Else
               Theta = -1.5707963267949

         End If

    Else
         Theta = Atn(Y / X)
  
         If (X < 0) Then
              If (Y >= 0#) Then
                   Theta = 3.14159265358979 + Theta

               Else
                  Theta = Theta - 3.14159265358979

               End If

            End If

     End If
    
    MATH_Atan2 = Theta

ErrOut:

End Function
No sera el metodo mas optimo quizas pero igual podria servirte para lo que estas intentando hacer.

Salu2...
__________________
Proyecto dx_lib32 (http://dxlib32.se32.com) Libreria DLL ActiveX para el desarollo de juegos y programas multimedia en Visual Basic 6.0 con la potencia de DirectX

Dice un dicho que "el que calla otorga". En internet tenemos otro que dice "nunca alimentes a un troll" que viene a decir "dejale hablar solo que se ya se cansara de incordiar". Solo los necios creen tener la razon con la ultima palabra.