Soyez le premier à donner votre avis sur cette source.
Snippet vu 3 623 fois - Téléchargée 27 fois
Function coordonnées_polaires_vers_cartésiennes(ByVal origine As Vector3, ByVal angle_XY_vertical As Single, ByVal angle_XZ_equatorial As Single, ByVal rayon As Single) 'Angle vertical de 0° (haut) jusque 180°MAXIMUM (180° sont en bas) 'Angle équatorial : 0° (0° derrière 180° devant) jusque 360° 'APRES 180DEGRES L'ANGLE VERTICAL CHANGE L'ANGLE EQUATORIAL If angle_XY_vertical < 0 Then angle_XY_vertical = angle_XY_vertical + 180 angle_XZ_equatorial = angle_XZ_equatorial - 180 End If If angle_XY_vertical > 180 Then angle_XY_vertical = angle_XY_vertical - 180 angle_XZ_equatorial = angle_XZ_equatorial + 180 End If If angle_XZ_equatorial < 0 Then angle_XZ_equatorial = angle_XZ_equatorial + 360 If angle_XZ_equatorial > 360 Then angle_XZ_equatorial = angle_XZ_equatorial - 360 Dim longitude, latitude As Single If angle_XZ_equatorial > 270 Then longitude = 360 - angle_XZ_equatorial + 90 Else longitude = 90 - angle_XZ_equatorial End If If angle_XY_vertical > 270 Then latitude = 360 - angle_XY_vertical + 90 Else latitude = 90 - angle_XY_vertical End If latitude = Math.PI * latitude / 180 longitude = Math.PI * longitude / 180 Dim x, y, z As Decimal x = origine.X + rayon * Math.Cos(latitude) * Math.Cos(longitude) y = origine.Y + rayon * Math.Sin(latitude) z = origine.Z + rayon * Math.Cos(latitude) * Math.Sin(longitude) Return New Vector3(x, y, z) End Function Function coordonnées_cartésiennes_vers_polaires(ByVal vectorA As Vector3, ByVal vectorB As Vector3) As Vector2 'Angle vertical de 0° (haut) jusque 180°MAXIMUM (180°en bas) 'Angle équatorial : 0° (derrière) jusque 360° de droite vers la gauche 'Utilisation de la méthode normalize Dim c As Vector3 = vectorB - vectorA c.Normalize() Dim latitude, longitude As Single latitude = Math.Asin(c.Y) longitude = Math.Acos((c.X) / (Math.Cos(latitude) + 0.000001)) * 180 / Math.PI latitude = latitude * 180 / Math.PI If vectorB.Z - vectorA.Z < 0 Then longitude = -longitude Dim angle_XY_vertical As Single Dim angle_XZ_equatorial As Single If latitude <= 90 And latitude >= 0 Then angle_XY_vertical = 90 - latitude Else angle_XY_vertical = 360 - latitude + 90 End If If longitude <= 90 And longitude >= 0 Then angle_XZ_equatorial = 90 - longitude Else angle_XZ_equatorial = 360 - longitude + 90 End If If angle_XY_vertical < 0 Then angle_XY_vertical = angle_XY_vertical + 360 If angle_XZ_equatorial < 0 Then angle_XZ_equatorial = angle_XZ_equatorial + 360 If angle_XY_vertical > 360 Then angle_XY_vertical = angle_XY_vertical - 360 If angle_XZ_equatorial > 360 Then angle_XZ_equatorial = angle_XZ_equatorial - 360 If angle_XZ_equatorial > 0 Or angle_XZ_equatorial < 0 Or angle_XZ_equatorial = 0 Then Else angle_XZ_equatorial = 0 End If If angle_XZ_equatorial = -360 Then angle_XZ_equatorial = 0 Return New Vector2(angle_XY_vertical, angle_XZ_equatorial) End Function
illisible
Utilise la coloration syntaxique
Idente ton code
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.