Español
Fuente/ Codesnippets

ArcTan2, atan2 "In Richtung schauen" (+Icons como OpenGL Texturen)

 

Sven
Bader
¡Hola!

Eigentlich una Basisfunktion en el Spieleentwicklung: ArcTan2 o atan2 (php/js). Hiermit lässt se el Winkel zwischen zwei Punkten, ermitteln en así z.B. una Gegner en Richtung Spieler schauen oder laufen que se.

Yo habe mich algo gewundert, dass Yo no Entsprechung en Profano gefunden habe, evtl. Yo lo sólo übersehen?

Es letztendlich el ArcTan Función con uno Quadranten-Abfrage.
Lo sería mich freuen, si la Función el Weg en Profano o math.inc encontrar sería.

In uno zweiten Función, Yo nenne ellos Arctan4, Aprovecho auch todavía el Berechnung el Vektoren y el Umwandlung de Bogenmaß en Grad de.

Als Abfallprodukt ha el Code todavía Profano-Icons como OpenGL Textur.

Descargar


Windowtitle "ArcTan2, ArcTan4 y Icon Texturen"
windowstyle 1+4+8+16
window (%maxx * 0.5 - 200), (%maxy * 0.5 - 150)  - 400,300'kompatible schreibweise
Declarar tex&, hPic&, zrot!, oglX&, oglY&
oGL("init",%hWnd,1,1,1,0)
oGL("posmode",1)
'Texture de Icons
Mcls 32,32
startpaint -1
DrawIcon "GESICHT", 0,0
endpaint
hPic&=create("HPIC",0,"& MEMBMP")
tex&=ogl("getTextureBmp",hPic&,1)
DeleteObject hPic&
'de math.inc

Proc Rad2Deg

    Parámetros Angle!
    Volver (180 / Pi()) * Angle!

ENDPROC

Proc ArcTan2

    'Winkel de Position Bilden
    'Wenn Objeto 1 a Objeto 2 schauen se, es el Winkel esta:
    'ArcTan2(x1 - x2, y1 - y2)
    'Um el Bogenmaß en Grad umzuwandeln kann ArcTan2 verwendet voluntad
    Parámetros x!, y!
    Declarar resultado!

    if (y! > 0.0)

        resultado! = ArcTan(x!/y!)

    elseif (y! < 0.0) & (x! >= 0.0)

        resultado! = ArcTan(x!/y!) + Pi()

    elseif (y! < 0.0) & (x! < 0.0)

        resultado! = ArcTan(x!/y!) - Pi()

    elseif (y! = 0.0) & (x! > 0.0)

        resultado! = Pi() / 2.0

    elseif (y! = 0.0) & (x! < 0.0)

        resultado! = 0.0 - (Pi() / 2.0 )

    elseif (y! = 0.0) & (x! = 0.0)

        'Kein Abstand, no Richtung, kann en Bedarf abgefangen voluntad
        resultado! = -1000

    endif

    Volver resultado!

ENDPROC

Proc ArcTan4

    'ArcTan4: Un Neuschöpfung -) alles en un inklusive Performance Tweaks
    'El Vektoren necesario no incluso berechnet voluntad, lo voluntad
    'simplemente sólo zwei Punkte transferencia, el Ergebnis es ya en Grad
    Parámetros x1!, y1!, x2!, y2!
    Declarar resultado!, x!, y!
    x! = x1! - x2!
    y! = y1! - y2!

    if (y! > 0.0)

        resultado! = ArcTan(x!/y!) * 57.2957795131

    elseif (y! < 0.0) & (x! >= 0.0)

        resultado! = (ArcTan(x!/y!) + 3.1415926535897932) * 57.2957795131

    elseif (y! < 0.0) & (x! < 0.0)

        resultado! = (ArcTan(x!/y!) - 3.1415926535897932) * 57.2957795131

    elseif (y! = 0.0) & (x! > 0.0)

        resultado! = 1.57079632679 * 57.2957795131

    elseif (y! = 0.0) & (x! < 0.0)

        resultado! = -1.57079632679 * 57.2957795131

    elseif (y! = 0.0) & (x! = 0.0)

        'Kein Abstand, no Richtung, kann en Bedarf abgefangen voluntad
        resultado! = -1000

    endif

    Volver resultado!

ENDPROC

Mientras que isKey(27) = 0

    sleep 10
    oGL("clear")
    oGL("move",0,0,-2)
    'Mittelpunkt des Gesichts
    oGL("2D", 0, 0, -2, oglX&, oglY&)
    'Das Gesicht (oglX&, oglY&) schaut a Mausposition (%mousex, %mousey)
    'zRot! = rad2deg(ArcTan2(%mousex - oglX&, %mousey - oglY&))
    'oder
    zRot! =ArcTan4(%mousex, %mousey, oglX&, oglY&)
    oGL("rotate",0,0,zRot!)
    oGL("texture",1,1)
    oGL("quad",1,1)
    oGL("show")

EndWhile


9 kB
Bezeichnung:ArcTan2 OpenGL
Hochgeladen:11.08.2021
Ladeanzahl63
Descargar
99 kB
Bezeichnung:Programm als EXE
Hochgeladen:11.08.2021
Ladeanzahl67
Descargar
 
11.08.2021  
 




p.specht

Ohne Berücksichtigung de oGL gab lo veces una Snippet dazu: [...] 
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
11.08.2021  
 




Sven
Bader
Nach atan y arctan Yo gesucht, después de "arcus" no Su Contribución es incluso bastante neu.

Yo sería sí una C++ DLL de esta Dingen hacer aber erfahrungsgemäß kostet el DLL Aufruf así viel Tiempo cómo por el schnellere Ausführung gewonnen hätte.
 
11.08.2021  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

2.475 Views

Untitledvor 0 min.
H.Brill04.06.2024
Sven Bader05.08.2023
Ernst29.05.2022
p.specht18.11.2021
Más...

Themeninformationen

Dieses Thema ha 2 subscriber:

Sven Bader (2x)
p.specht (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie