Español
Foro

Mathe: Winkelberechnung

 
Hey podría me Por favor, uno el deutlich mehr matemáticamente gebildeten XProfan en el Sprünge helfen ? Yo sehe el Wald antes Bäumen no mehr

Alles Yo voluntad es una schnelle Función de el Strecke xy,xxyy me el winkel (360°!) zurückliefert.

Mein Code funktioniert ya - naja fast.
KompilierenMarcaSeparación
CLS

WHILE 1

    CLS
    PRINT WNK(100,100,%MOUSEX,%MOUSEY)
    SLEEP 100

ENDWHILE

WAITKEY

proc WNK

    PARAMETERS X&,Y&,XX&,YY&
    var T!=0

    IF XX&<X&

        RETURN WNK(XX&,Y&,X&,YY&)

    ENDIF

    IF YY&<Y&

        RETURN WNK(X&,YY&,XX&,Y&)

    ENDIF

    LINE X&,Y& - XX&,YY&
    var DX!=XX&-X&
    var DY!=YY&-Y&
    T!=(SQRT(DX!*DX!+DY!*DY!))

    IF YY&<XX&

        T!=RAD2DEG(SINH(DY!/T!))

    ELSE

        T!=45+(45-RAD2DEG(SINH(DX!/T!)))

    ENDIF

    RETURN T!

endproc

proc RAD2DEG

    PARAMETERS ANGLE!
    RETURN (180 / @PI()) * ANGLE!

endproc

proc SINH

    PARAMETERS ANGLE!
    RETURN (@EXP(ANGLE!) - @EXP(-ANGLE!)) / 2

./../function-references/XProfan/ENDPROC/'>ENDPROC

 
05.12.2006  
 




Hubert
Binnewies
¡Hola IF

also...en Mathe bin Yo bien en él...aber en el verstehen deine Codes no tan bueno...

debería el el Sinussatz ser???

macht me doch veces ne Gleichung oder Formel en y yo Denk me qué de..oki??

Hubert..
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
05.12.2006  
 




Carlo
Keil
Hola si,
si yo el correcto verstehe, suchst du el Winkel zwischen uno Strecke o. deren Verlängerung y x-Achse.
Das debería con sólo uno Winkelfunktion ir:
(mangels Profano y Testmöglichkeit sólo una Pseudocode)

Winkel en el Bogenmaß = Arcustangens(abs((y2 - y1) / (x2 - x1)))

Üblicherweise son el Winkelfunktionen no übermäßig rápidamente. Wenn lo dir en Performance ankommt sehe Yo sólo zwei Möglichkeiten: Ensamblador oder beim Programmstart una propio Arcustangenstabelle inicializar, el du entonces sin Berechnung direkt abgreifst (deren Größe hängt natürlich de el deseado Genauigkeit de ).

HTH
Carlo
 
05.12.2006  
 



@Hubert: Lo va me sólo por lo tanto de uno cada Linie el Winkel ermitteln a puede. Yo tue mich schwer lo que el Umsprünge betrifft si z.B. xx&<x& es etc.

@Carlo: Tabellen, klar, tener hier auch ya solche Nuevo - aber el Genauigkeit debería ya möglichst hoch ser - Tabellen fallen hier de.

An Winkel en el Bogenmaß = Arcustangens(abs((y2 - y1) / (x2 - x1))) kann Yo mich auch erinnern - el Yo oben sí angewandt.

Wenn Yo obiges aber laufen lasse hay zw. 160° y 200° una Problema - y yo bin betriebsblind.

Natürlich werd ego el Performance wegen después de ASM übertragen.
 
05.12.2006  
 



Hm also me schenkt keiner solch una Proc wa?
 
05.12.2006  
 




Jac
de
Lad
Yo erlaube me mich a matemáticamente gebildeten Personen hier en el Foro a zählen...

Aber Yo verstehe el Fragestellung no. Kannste el otra vez ausführen? Auch de el Code voluntad Yo no schlau...
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
05.12.2006  
 



Ok klar!

Yo male una Linie de 100,100 después de mousex,mousey

Alles Yo gerne hätte es el Winkel el Linie!

----> 0°

<--- 180°

^
|
270°

Halt una Proc el me simplemente siempre el richtigen Winkel son después de que ihr x,y - xx,yy transferencia habe.
 
05.12.2006  
 




Jac
de
Lad
Aso, kein Problema, kriegst bald ne Antwort! Muss ahora aber grad qué más hacer...
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
05.12.2006  
 



Wow!
 
05.12.2006  
 



Ach lol Yo dussel - Yo habs. Hey aber tal vez es Deins más rápido? Yo poste meins igual veces...
 
05.12.2006  
 




KompilierenMarcaSeparación
 {$cleq}
const myPi=3.1415926535897932384626433832795
cls

while 1

    cls
    print int(wnk(100,100,mousex,mousey,false)),"°  "
    sleep 50

wend

waitkey

proc wnk(float x1,y1,x2,y2,int mode)

    float x= sub ( x2! , x1! )
    float y= sub ( y2! , y1! )
    line x1,y1 - x2,y2
    case (x<0) and (y<0) : return wnk(x2,y2,x1,y1,3)
    case x<0 : return wnk(x2,y1,x1,y2,1)
    case y<0 : return wnk(x1,y2,x2,y1,2)
    casenot x : x=0.0000001
    casenot y : y=0.0000001
    float w=arctan(y/x)*180/myPi

    if (mode==1)

        w:=90+(90-w)

    elseif (mode==2)

        w:=360-w

    elseif (mode==3)

        w:=180+w

    endif

    return w

ENDPROC


KompilierenMarcaSeparación
CLS

WHILE 1

    CLS
    PRINT INT(WNK(100,100,%MOUSEX,%MOUSEY,0)),"°  "
    SLEEP 50

ENDWHILE

WAITKEY

proc WNK

    PARAMETERS X1!,Y1!,X2!,Y2!,MODE%
    var X!=SUB ( X2! , X1! )
    var Y!=SUB ( Y2! , Y1! )
    LINE X1!,Y1! - X2!,Y2!

    IF (X!<0) AND (Y!<0)

        RETORNO WNK(X2!,Y2!,X1!,Y1!,3)

    ENDIF

    IF X!<0

        RETORNO WNK(X2!,Y1!,X1!,Y2!,1)

    ENDIF

    IF Y!<0

        RETORNO WNK(X1!,Y2!,X2!,Y1!,2)

    ENDIF

    IFNOT X!

        X!=0.0000001

    ENDIF

    IFNOT Y!

        Y!=0.0000001

    ENDIF

    var W!=ARCTAN(Y!/X!)*180/3.1415926535897932384626433832795

    IF (MODE%=1)

        W!=90+(90-W!)

    ELSEIF (MODE%=2)

        W!=360-W!

    ELSEIF (MODE%=3)

        W!=180+W!

    ENDIF

    RETORNO W!

ENDPROC

 
05.12.2006  
 




Jac
de
Lad
Probier veces el:
KompilierenMarcaSeparación
proc Winkel

    Parameters x1!,y1!,x2!,y2!
    declare dx!,dy!
    dx!=x2!-x1!
    dy!=y1!-y2!

    if Abs(dx!)<Abs(dy!)

        Return Pi()/2-ArcTan(dx!/dy!)+If((dx!<0) | (dy!<0),Pi(),0)

    else

        Return ArcTan(dy!/dx!)+If((dx!<0) | (dy!<0),Pi(),0)

    endif

Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
05.12.2006  
 




Respuesta


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

4.789 Views

Untitledvor 0 min.
Michael W.23.12.2016
Julian Schmidt25.11.2013
holmol9310.05.2013
Andreas Koch07.11.2012
Más...

Themeninformationen



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