Español
Foro

Mathe: Winkelberechnung

 
- Página 1 -


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  
 



 
- Página 4 -



Hubert
Binnewies
Usted hast bastante....du konntest con meiner Gleichung nix anfangem porque ellos schlichtweg falso war....

El korrekte Formel siehst du unten en el Bild.

Woraus se folgendes Listing ergibt...übergangs- y sprunglos...
KompilierenMarcaSeparación
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


¿Puede du así qué anfangen??

Hubert

3 kB
Kurzbeschreibung: Gleichung
Hochgeladen:06.12.2006
Ladeanzahl100
Descargar
 
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
Usted hast bastante....du konntest con meiner Gleichung nix anfangem porque ellos schlichtweg falso war....

El korrekte Formel siehst du unten en el Bild.

Woraus se folgendes Listing ergibt...übergangs- y sprunglos...
KompilierenMarcaSeparación
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

    RETORNO T!

ENDPROC


¿Puede du así qué anfangen??

Hubert

3 kB
Kurzbeschreibung: Gleichung
Hochgeladen:06.12.2006
Ladeanzahl138
Descargar
 
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  
 



Klar super! Im prinzip si yo ahora beide Comparar - hast Usted mein ArcTang en una Sqrt getauscht - veces así grob dijo.

Yo glaub - habs aber sólo übersprungen - Su Formel son una falschen Valor si xx-x oder yy-y igual Null es. Pero Nebensache y por una >=0 en lugar de >0 a bebehen.

Jetzt muss Yo sólo todavía rausbekommen si Su Variante mehr Performance en XProfan ha.

Ah tener grad gesehen hast el Formel otra vez überarbeitet - Yo schau mal...
 
06.12.2006  
 




Hubert
Binnewies
[quote:93643e9b90=iF]Su Formel son una falschen Valor si xx-x oder yy-y igual Null es. Pero Nebensache y por una >=0 en lugar de >0 a bebehen.

[/quote:93643e9b90]
sería Yo no tun....porque si yy-y=0 se y du 0*90 machst restos lo 0...
y si du entonces versuchst el 0 a teilen erhälst du una ungültigen Funktionswert..

mostrar en el zweite listing...el erste es desafortunadamente una Unfall beim reinsetzen en el Foro...
como Yo el problema 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! Su Formal benötigt 9% wniger Tiempo en me

Hier el SpeedTestCode:
KompilierenMarcaSeparación
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> RETORNO T! ENDPROC
 
06.12.2006  
 



So ahora versuche Yo soy tu Formel otra vez bisl programmablauftechnisch a optimieren...
 
06.12.2006  
 




Hubert
Binnewies
[quote:ed547f9469=iF]So ahora versuche Yo soy tu Formel otra vez bisl programmablauftechnisch a optimieren...[/quote:ed547f9469]
Hab Yo ya...verliert dadurch zwar algo a übersichtlichkeit, pero verschwinden algunos zeitaufwendige IF Abfragen...
KompilierenMarcaSeparación
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 después de meiner Optimierung es Su Variante doppelt así rápidamente como mi Variante! Hier el Endergebnis:
KompilierenMarcaSeparación
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 Arbeit puede ser como sólo sagen!

Gracias!
 
06.12.2006  
 




Hubert
Binnewies
jep....du hast sí nochn haufen subtraktionen y variablen benennungen rausgenommen....

Bist du porque así zufrieden? oder muss aún más rápido??

(Yo hatte sí versprochen el Yo qué ü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  
 



Also doppelt así rápidamente como mein Ergebnis es ungefähr el Yo me vorstellte

Geht esta Función ähnlich umzustellen?
KompilierenMarcaSeparación
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:0fce4dc459=iF]Erstklassige Arbeit puede ser como sólo sagen!

Gracias! [/quote:0fce4dc459]
Bitte Bitte....
Gerne gemacht...

[offtopic] entonces kannste dir sí denken qué 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  
 




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