Français
Forum

Mathe: Winkelberechnung

 
- page 1 -


Hey pourrait mir s'il te plaît einer qui deutlich plus mathématique gebildeten XProfaner sur qui Sprünge aider ? je vois den forêt avant Bäumen pas plus

Alles quoi je veux ist une schnelle Funktion qui aus qui Strecke xy,xxyy mir den winkel (360°!) zurückliefert.

mon Code funktioniert déjà - bof presque.
KompilierenMarqueSéparation
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  
 



 
- page 4 -



Hubert
Binnewies
tu as droite....du konntest avec meiner Gleichung nix anfangem weil vous schlichtweg faux était....

qui korrekte Formel vois du unten im Bild.

Woraus sich folgendes Listing ergibt...übergangs- et sprunglos...
KompilierenMarqueSéparation
CLS
declare T!,DX!,DY!

WHILE 1

    CLS
    PRINT WNK(400,200,%MOUSEX,%MOUSEY)
    SLEEP 50

ENDWHILE

WAITKEY

proc WNK

    PARAMETERS X&,Y&,XX&,YY&
    LINE X&,Y& - XX&,YY&

    if xx&-x&>0

        if yy&-y&>0

            T! = (90*(yy& - y&))/sqrt((xx& - x&)^2 + (yy& - y&)^2)

        endif

    endif

    if xx&-x&<0

        if yy&-y&>0

            T! = 90-((90*(yy& - y&))/sqrt(((xx& - x&)*-1)^2 + (yy& - y&)^2))+90

        endif

    endif

    if xx&-x&<0

        if yy&-y&<0

            T! = 180+((90*((yy& - y&)*-1))/sqrt(((xx& - x&)*-1)^2 + ((yy& - y&)*-1)^2))

        endif

    endif

    if xx&-x&>0

        if yy&-y&<0

            T! = 180-((90*((yy& - y&)*-1))/sqrt((xx& - x&)^2 + ((yy& - y&)*-1)^2))+180

        endif

    endif

    RETURN T!

./../funktionsreferenzen/XProfan/endproc/'>endproc


peux du avec cela quoi anfangen??

Hubert

3 kB
Kurzbeschreibung: Gleichung
Hochgeladen:06.12.2006
Downloadcounter100
Download
 
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!"
06.12.2006  
 




Hubert
Binnewies
tu as droite....du konntest avec meiner Gleichung nix anfangem weil vous schlichtweg faux était....

qui korrekte Formel vois du unten im Bild.

Woraus sich folgendes Listing ergibt...übergangs- et sprunglos...
KompilierenMarqueSéparation
CLS
declare T!,DX!,DY!

WHILE 1

    CLS
    PRINT WNK(400,200,%MOUSEX,%MOUSEY)
    SLEEP 50

ENDWHILE

WAITKEY

proc WNK

    PARAMETERS X&,Y&,XX&,YY&
    LINE X&,Y& - XX&,YY&

    if xx&-x&>0

        if yy&-y&=0

            T! = 0

        endif

    endif

    if xx&-x&>0

        if yy&-y&>0

            T! = (90*(yy& - y&))/sqrt((xx& - x&)^2 + (yy& - y&)^2)

        endif

    endif

    if xx&-x&=0

        if yy&-y&>0

            T! = 90

        endif

    endif

    if xx&-x&<0

        if yy&-y&>0

            T! = 90-((90*(yy& - y&))/sqrt(((xx& - x&)*-1)^2 + (yy& - y&)^2))+90

        endif

    endif

    if xx&-x&<0

        if yy&-y&=0

            T! = 180

        endif

    endif

    if xx&-x&<0

        if yy&-y&<0

            T! = 180+((90*((yy& - y&)*-1))/sqrt(((xx& - x&)*-1)^2 + ((yy& - y&)*-1)^2))

        endif

    endif

    if xx&-x&=0

        if yy&-y&<0

            T! = 270

        endif

    endif

    if xx&-x&>0

        if yy&-y&<0

            T! = 180-((90*((yy& - y&)*-1))/sqrt((xx& - x&)^2 + ((yy& - y&)*-1)^2))+180

        endif

    endif

    RETOUR T!

endproc


peux du avec cela quoi anfangen??

Hubert

3 kB
Kurzbeschreibung: Gleichung
Hochgeladen:06.12.2006
Downloadcounter138
Download
 
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!"
06.12.2006  
 



bien sûr super! Im prinzip si je maintenant beide vergleiche - la hâte Du mon ArcTang dans un Sqrt getauscht - la fois so grob dit.

je glaub - habs mais seulement übersprungen - Votre Formel gibt une falschen Wert si xx-x ou bien yy-y juste zéro ist. Ist mais Nebensache et par un >=0 statt >0 trop bebehen.

maintenant muss je seulement encore rausbekommen si Votre variante plus Performance dans XProfan hat.

Ah hab grad gesehen la hâte qui Formel nochmal révisée - je exposition la fois...
 
06.12.2006  
 




Hubert
Binnewies
[quote-part:93643e9b90=iF]Votre Formel gibt une falschen Wert si xx-x ou bien yy-y juste zéro ist. Ist mais Nebensache et par un >=0 statt >0 trop bebehen.

[/quote-part:93643e9b90]
serait je pas 1faire....car si yy-y=0 wird et du 0*90 fais bleibt es 0...
et si du ensuite versuchst qui 0 trop partager erhälst du une ungültigen Funktionswert..

exposition dans cela zweite listing...cela erste ist malheureusement un Unfall beim reinsetzen ins Forum...
là habe je cela Problem gelöst...

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!"
06.12.2006  
 



Yeha! Votre Formal nécessaire 9% wniger Zeit chez mir

ici qui SpeedTestCode:
KompilierenMarqueSéparation
DECLARE T!,DX!,DY!
RANDOMIZE
CLS
var TME&=&GETTICKCOUNT

WHILELOOP 10000

    WNK(100,100,RND(200),RND(200))

ENDWHILE

TME&=&GETTICKCOUNT-TME&
var TME2&=&GETTICKCOUNT

WHILELOOP 10000

    WNK2(100,100,RND(200),RND(200))

ENDWHILE

TME2&=&GETTICKCOUNT-TME2&
PRINT TME&
PRINT TME2&
WAITKEY

proc WNK

    PARAMETERS X1!,Y1!,X2!,Y2!,MODE%
    var DX!=X2!-X1!
    var DY!=Y2!-Y1!

    IF (DX!<0) AND (DY!<0)

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

    ENDIF

    IF DX!<0

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

    ENDIF

    IF DY!<0

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

    ENDIF

    IFNOT DX!

        DX!=0.0000001

    ENDIF

    IFNOT DY!

        DY!=0.0000001

    ENDIF

    var W!=ARCTAN(DY!/DX!)*57.295779513082320876798154814105

    IF (MODE%=1)

        W!=90+(90-W!)

    ELSEIF (MODE%=2)

        W!=360-W!

    ELSEIF (MODE%=3)

        W!=180+W!

    ENDIF

    RETURN W!

endproc

proc WNK2

    PARAMETERS X&,Y&,XX&,YY&

    IF XX&-X&>0

        IF YY&-Y&=0

            T!=0

        ENDIF

    ENDIF

    IF XX&-X&>0

        IF YY&-Y&>0

            T!=(90*(YY& - Y&))/SQRT((XX& - X&)^2 + (YY& - Y&)^2)

        ENDIF

    ENDIF

    IF XX&-X&=0

        IF YY&-Y&>0

            T!=90

        ENDIF

    ENDIF

    IF XX&-X&<0

        IF YY&-Y&>0

            T!=90-((90*(YY& - Y&))/SQRT(((XX& - X&)*-1)^2 + (YY& - Y&)^2))+90

        ENDIF

    ENDIF

    IF XX&-X&<0

        IF YY&-Y&=0

            T!=180

        ENDIF

    ENDIF

    IF XX&-X&<0

        IF YY&-Y&<0

            T!=180+((90*((YY& - Y&)*-1))/SQRT(((XX& - X&)*-1)^2 + ((YY& - Y&)*-1)^2))

        ENDIF

    ENDIF

    IF XX&-X&=0

        IF YY&-Y&<0

            T!=270

        ENDIF

    ENDIF

    IF XX&-X&>0

        IF YY&-Y&<0

            T!=180-((90*((YY& - Y&)*-1))/SQRT((XX& - X&)^2 + ((YY& - Y&)*-1)^2))+180

        ENDIF

    E
a> RETOUR T! endproc
 
06.12.2006  
 



So maintenant versuche je Votre Formel nochmal bisl programmablauftechnisch trop optimaliser...
 
06.12.2006  
 




Hubert
Binnewies
[quote-part:ed547f9469=iF]So maintenant versuche je Votre Formel nochmal bisl programmablauftechnisch trop optimaliser...[/quote-part:ed547f9469]
Hab je déjà...verliert dadurch zwar quelque chose à übersichtlichkeit, mais es verschwinden quelques zeitaufwendige IF Abfragen...
KompilierenMarqueSéparation
CLS
declare T!,DX!,DY!

WHILE 1

    CLS
    PRINT WNK(400,200,%MOUSEX,%MOUSEY)
    SLEEP 50

ENDWHILE

WAITKEY

proc WNK

    PARAMETERS X&,Y&,XX&,YY&
    LINE X&,Y& - XX&,YY&

    if xx&-x&>0

        if yy&-y&=0

            T! = 0 <---können auch 360 Grad sein

        elseif yy&-y&>0

            T! = (90*(yy& - y&))/sqrt((xx& - x&)^2 + (yy& - y&)^2)

        elseif yy&-y&<0

            T! = 180-((90*((yy& - y&)*-1))/sqrt((xx& - x&)^2 + ((yy& - y&)*-1)^2))+180

        endif

    endif

    if xx&-x&=0

        if yy&-y&>0

            T! = 90

        elseif yy&-y&<0

            T! = 270

        endif

    endif

    if xx&-x&<0

        if yy&-y&>0

            T! = 90-((90*(yy& - y&))/sqrt(((xx& - x&)*-1)^2 + (yy& - y&)^2))+90

        elseif yy&-y&=0

            T! = 180

        elseif yy&-y&<0

            T! = 180+((90*((yy& - y&)*-1))/sqrt(((xx& - x&)*-1)^2 + ((yy& - y&)*-1)^2))

        endif

    endif

    RETURN T!

 href='./../../funktionsreferenzen/XProfan/endproc/'>endproc


Besser??
 
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!"
06.12.2006  
 



So pour meiner Optimierung ist Votre variante doppelt so vite comment mon variante! ici cela Endergebnis:
KompilierenMarqueSéparation
proc WNK2

    PARAMETERS X!,Y!,XX!,YY!
    var DX!=XX!-X!
    var DY!=YY!-Y!

    IF DX!>0

        IF DY!>0

            RETURN (90*(DY!))/SQRT((DX!)^2 + (DY!)^2)

        ELSEIF DY!<0

            RETURN 180-((90*((DY!)*-1))/SQRT((DX!)^2 + ((DY!)*-1)^2))+180

        ELSE

            RETURN 0

        ENDIF

    ELSEIF DX!<0

        IF DY!>0

            RETURN 90-((90*(DY!))/SQRT(((DX!)*-1)^2 + (DY!)^2))+90

        ELSEIF DY!<0

            RETURN 180+((90*((DY!)*-1))/SQRT(((DX!)*-1)^2 + ((DY!)*-1)^2))

        ELSE

            RETURN 180

        ENDIF

    ELSE

        IF DY!>0

            RETURN 90

        ELSEIF DY!<0

            RETURN 270

        ELSE

            RETURN 0

        ENDIF

    ENDIF

    RETURN T!

/../funktionsreferenzen/XProfan/endproc/'>endproc

 
06.12.2006  
 



Erstklassige travail peux on là seulement dire!

merci!
 
06.12.2006  
 




Hubert
Binnewies
jep....tu as oui nochn haufen subtraktionen et variablen benennungen rausgenommen....

es du car so zufrieden? ou bien muss encore plus rapide??

(je hatte oui versprochen le moi mir quoi überlege)....

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!"
06.12.2006  
 



alors doppelt so vite comment mon Ergebnis ist ungefähr cela quoi je mir vorstellte

allez cet Funktion ähnlich umzustellen?
KompilierenMarqueSéparation
proc GETCIRCP

    PARAMETERS XP!,YP!,R!,W!
    COS_OUTPX!=((((R!*SIN(((-1*(((-1+W!)*3.1415926535897932384626433832795)+3.1415926535897932384626433832795))/180))))*-1)+XP!)
    COS_OUTPY!=((((R!*COS(((-1*(((-1+W!)*3.1415926535897932384626433832795)+3.1415926535897932384626433832795))/180))))*-1)+YP!)

endp
>
 
06.12.2006  
 




Hubert
Binnewies
[quote-part:0fce4dc459=iF]Erstklassige travail peux on là seulement dire!

merci! [/quote-part:0fce4dc459]
s'il te plaît s'il te plaît....
Gerne gemacht...

[offtopic] ensuite kannste dir oui penser quoi hierdrin abgeht--->  [...]  [/offtopic]
 
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!"
06.12.2006  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

6.925 Views

Untitledvor 0 min.
Michael W.23.12.2016
Julian Schmidt25.11.2013
holmol9310.05.2013
Andreas Koch07.11.2012
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie