| |
|
|
- 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éparationCLS
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
|
|
|
| |
|
|
|
| |
|
- 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! |
|
|
| |
|
|
|
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éparationCLS
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éparationCLS
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éparationDECLARE 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 |
|
|
| |
|
|
|
| Jau Dein GetCirp ist doppelt so vite *grins* KompilierenMarqueSéparationDECLARE 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 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 pas richtig rechnet. Wäre très tant pis était doppelt so vite. |
|
|
| |
|
|
|
| Ok ici qui results 10.000 dans Sekunden:
mon: 2,7 Votre1: 1,6 Votre2: 2,6
:--/ |
|
|
| |
|
|
|
| Versuche maintenant arcsin trop simplifier... |
|
|
| |
|
|
|
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 - |
|
|
| |
|
| |
|
|