| |
|
|
- 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ónCLS
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
|
|
|
| |
|
|
| |
|
- Página 6 - |
|
|
| Also para Teamwork war Yo ya siempre a haben! |
|
|
| |
|
|
|
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! |
|
|
| |
|
|
|
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ónCLS
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ónCLS
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ónDECLARE 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 |
|
|
| |
|
|
|
| Jau Su GetCirp es doppelt así rápidamente *grins* KompilierenMarcaSeparaciónDECLARE 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
|
|
|
| |
|
|
|
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 No correcto rechnet. Wäre muy schade war doppelt así rápidamente. |
|
|
| |
|
|
|
| Ok hier el results 10.000 en Sekunden:
mi: 2,7 Su1: 1,6 Su2: 2,6
:--/ |
|
|
| |
|
|
|
| Versuche ahora arcsin a vereinfachen... |
|
|
| |
|
|
|
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 ▲ |
|
|
|