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 6 -



Hubert
Binnewies
Tjaaaaaaaaaaaaaaaaaaaa....

comment soll je es dire......

alles sur anfang zurück....

chez dem Versuch aussi ici den Sinus et Cosinus wegzulassen habe je bemerkt cela mon obige Routine zwar joli funktioniert, mais malheureusement pas richtig.
à qui lieu wohin eigendlich 45 Grad auftauchen devrait volonté 61 Grad angezeigt.
cela liegt daran cela qui Seiten eines rechtwinkligen Dreiecks doch pas im direkten Relations le Winkeln steht, mais doch seulement le Sinus et Cosinus qui Winkel.
Womit alles cela quoi je jusqu'à maintenant ici geschrieben habe absoluter blödsinn ist.
woraus folgt: cela Lob à mich était plus que verfrüht....

Hubert

P.S.: je überlege plus si on là doch quoi faire peux, mais je crois pas plus daran.
 
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!"
08.12.2006  
 



Neinnein ici ist ne...aucune Lob verfrüht car qui Erkenntnis comme Solche hat doch ihren Wert! je irre mich aussi ständig et souvent aussi halbwegs dadurch beabsichtig mich à einer falschen concept hochzuhangeln à Erfahrung trop conservé woran es letztendlich scheitert.

si Du meinst qui Funktion allez mathématique pas trop beschläunigen - ensuite avons wir alors möglicherweise déjà den besten Weg ici vorliegen. cela trop savons mais est viel Wert!
 
08.12.2006  
 




Hubert
Binnewies
allô IF...
es hat mich pas losgelassen, si je es pas doch schaffe zumindest deine zweite Formel trop kürzen...

ici ist cela Ergebniss...(et cela Funktioniert , comment on voyons peux)
KompilierenMarqueSéparation
CLS
Declare OUTPX!,OUTPY!
OUTPX!=0
OUTPY!=0

WHILELOOP 0,359

    GETCIRCP(100,100,50,&LOOP)
    SETPIXEL OUTPX!,OUTPY!,0
    GETCIRCP(300,100,&LOOP/10,&LOOP*3)
    SETPIXEL OUTPX!,OUTPY!,0

ENDWHILE

WAITKEY
END

proc GETCIRCP

    PARAMETERS XP!,YP!,R!,W!
    OUTPX!=(R!*(@Sin(0.0174532925199433*W!)))+XP!
    OUTPY!=YP!-(R!*(@Sin(0.0174532925199433*(90-W!))))

endproc


peux oui la fois versuchen cela trop benchen...
suis gespannt si es pas doch plus rapide ist

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




Hubert
Binnewies
So... Dein zweites Prob hab je mir aussi la fois angesehen....
si Du encore den ArcSin simplifier würdest, sollte cela toujours une tick plus rapide son comment Deins (pas sûrement)...

Benche cela doch la fois....
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&
    LINE X&,Y& - X&+100,Y&+100

    if xx&-x&>0

        if yy&-y&=0

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

        elseif yy&-y&>0

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

        elseif yy&-y&<0

            T! = 180-(57.29577951*@ArcSin((((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-(57.29577951*@ArcSin(((yy& - y&)/sqrt(((xx& - x&)*-1)^2 + (yy& - y&)^2))))+90

        elseif yy&-y&=0

            T! = 180

        elseif yy&-y&<0

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

        endif

    endif

    RETURN T!

endproc

Proc ArcSin

    Parameters Angle!
    Declare Ergebnis!

    If @Abs(Angle!) = 1

        Ergebnis! = Angle! * (@Pi() / 2)

    Else

        Ergebnis! = @ArcTan(Angle! / @Sqrt(1 - @Sqr(Angle!)))

    EndIf

    Return<
gebnis! ENDPROC

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



Zum WNK - cela Zweite ici de Dir ist demie so vite comment Votre erste Funktion qui doppelt so vite était comment mon. ^ ^

ici qui BenchSource:
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 X&,Y&,XX&,YY&

    IF XX&-X&>0

        IF YY&-Y&=0

            T!=0

        ELSEIF YY&-Y&>0

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

        ELSEIF YY&-Y&<0

            T!=180-(57.29577951*@ARCSIN((((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-(57.29577951*@ARCSIN(((YY& - Y&)/SQRT(((XX& - X&)*-1)^2 + (YY& - Y&)^2))))+90

        ELSEIF YY&-Y&=0

            T!=180

        ELSEIF YY&-Y&<0

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

        ENDIF

    ENDIF

    RETURN T!

endproc

proc ARCSIN

    PARAMETERS ANGLE!
    DECLARE ERGEBNIS!

    IF @ABS(ANGLE!)=1

        ERGEBNIS!=ANGLE! * (@PI() / 2)

    ELSE

        ERGEBNIS!=@ARCTAN(ANGLE! / @SQRT(1 - @SQR(ANGLE!)))

    ENDIF

    RETURN ERGEBNIS!

endproc

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 RETOUR T!

endproc


et maintenant benche je la fois cela GetCircP
 
09.12.2006  
 



Jau Dein GetCirp ist doppelt so vite *grins*
KompilierenMarqueSéparation
DECLARE COS_OUTPX!,COS_OUTPY!,OUTPX!,OUTPY!
RANDOMIZE
CLS
var TME&=&GETTICKCOUNT

WHILELOOP 10000

    MYGETCIRCP(100,100,RND(100),RND(360))

ENDWHILE

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

WHILELOOP 10000

    HBGETCIRCP(100,100,RND(100),RND(360))

ENDWHILE

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

proc HBGETCIRCP

    PARAMETERS XP!,YP!,R!,W!
    OUTPX!=(R!*(@SIN(0.0174532925199433*W!)))+XP!
    OUTPY!=YP!-(R!*(@SIN(0.0174532925199433*(90-W!))))

endproc

proc MYGETCIRCP

    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!)

endproc

 
09.12.2006  
 




Hubert
Binnewies
@IF
trop 1 )Benche cela pas vers mon vieille routine, qui rechnet doch pas richtig.
Benche vers deine bisherige Routine, et versuche cela Proc ArcSin trop simplifier, cela fait qui l'affaire plus rapide.

trop2 ) siehste....hat doch quoi gebracht.... ...(is mais nich entier so oui c'est ca comment deine....un paire se mettre hinterm Komma moins)...
 
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!"
09.12.2006  
 



oje habs verstanden! Ist mir entgangen cela que voici:
KompilierenMarqueSéparation
proc WNK

    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

endproc


pas richtig rechnet. Wäre très tant pis était doppelt so vite.
 
09.12.2006  
 



Ok ici qui results 10.000 dans Sekunden:

mon: 2,7
Votre1: 1,6
Votre2: 2,6

:--/
 
09.12.2006  
 



Versuche maintenant arcsin trop simplifier...
 
09.12.2006  
 




Hubert
Binnewies
Nachtrag....

qui Gerechtigkeit halber (et meines Stolzes à cause de sur meiner Verlobten) muss je ici encore erwähnen, cela qui Formel pas entier sur meinem Mist gewachsen ist, mais comme je nen Hänger hatte (non...nich so une...tztz...) mon perle ses Matheunterlagen rausnahm (vous pouvoir justement ihren Realschulabschluss pour) hatte vous mich avec einer kleinen Diskussion dans qui richtige direction geschubst.....

comme Dank versprach je son vous ici dankend trop erwähnen, quoi je hiermit fais.

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



 
- page 7 -


 
12.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

4.742 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