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



Hubert
Binnewies
Tjaaaaaaaaaaaaaaaaaaaa....

Como se Yo sagen......

alles en anfang zurück....

en el Intento auch hier el Sinus y Cosinus wegzulassen Yo bemerkt el mi obige Rutina zwar schön funktioniert, aber por desgracia, no correcto.
a el lugar wo eigendlich 45 Grad auftauchen debería voluntad 61 Grad adecuado.
el liegt daran el el Páginas uno rechtwinkligen Dreiecks doch no en el direkten Verhältnis a Winkeln es, pero doch sólo a Sinus y Cosinus el Winkel.
Womit alles el Yo a ahora hier geschrieben habe absoluter blödsinn es.
woraus folgt: el Lob a mich war más que verfrüht....

Hubert

P.S.: Yo überlege más si uno como doch qué hacer kann, pero yo glaube no mehr 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 hier es kein Lob verfrüht porque el Erkenntnis como Solche ha doch ihren Valor! Yo irre mich auch ständig y oft auch halbwegs dadurch beabsichtig mich a uno falschen Concepto hochzuhangeln a Erfahrung a obtener woran lo letztendlich scheitert.

Wenn Usted media el Función va matemáticamente no a beschläunigen - entonces haben wir also möglicherweise ya el besten Weg hier vorliegen. Das a wissen es doch viel Valor!
 
08.12.2006  
 




Hubert
Binnewies
¡Hola IF...
lo ha mich no losgelassen, si Yo no doch schaffe zumindest deine zweite Formel a kürzen...

Hier es el Ergebniss...(y el Funktioniert , cómo sehen kann)
KompilierenMarcaSeparación
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


¿Puede sí veces versuchen el a benchen...
Bin gespannt si no doch más rápido es

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... Su zweites Prob tener Yo auch veces angesehen....
Si usted todavía el ArcSin vereinfachen würdest, debería el siempre todavía una tick más rápido ser como Deins (no sicher)...

Benche el doch veces....
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&
    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 - el Zweite hier de Usted es halb así rápidamente como Su erste Función el doppelt así rápidamente war como mi. ^ ^

Hier el BenchSource:
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 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 RETORNO T!

ENDPROC


Und ahora benche Yo veces el GetCircP
 
09.12.2006  
 



Jau Su GetCirp es doppelt así rápidamente *grins*
KompilierenMarcaSeparación
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
a 1 )Benche el no gegen mi alte routine, el rechnet doch no correcto.
Benche gegen deine bisherige Rutina, y versuche el Proc ArcSin a vereinfachen, el macht el Sache más rápido.

a2 ) siehste....ha doch qué gebracht.... ...(is aber nich bastante así genau como deine....unos pocos stellen hinterm Komma weniger)...
 
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 me entgangen el que aquí:
KompilierenMarcaSeparación
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


No correcto rechnet. Wäre muy schade war doppelt así rápidamente.
 
09.12.2006  
 



Ok hier el results 10.000 en Sekunden:

mi: 2,7
Su1: 1,6
Su2: 2,6

:--/
 
09.12.2006  
 



Versuche ahora arcsin a vereinfachen...
 
09.12.2006  
 




Hubert
Binnewies
Apéndice....

Der Gerechtigkeit halber (y meines Stolzes wegen encima meiner Verlobten) muss Yo hier todavía erwähnen, el el Formel no bastante en mi Mist gewachsen es, pero como Yo nen Hänger hatte (nein...nich así una...tztz...) mi Perle Ihre Matheunterlagen rausnahm (ellos macht gerade ihren Realschulabschluss después de) hatte ellos mich con uno pequeño Diskussion en el richtige Richtung geschubst.....

Als Dank versprach Yo ihr ellos hier dankend a erwähnen, Yo hiermit mache.

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  
 



 
- Página 7 -


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