| |
|
|
- 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 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ó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&
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 |
|
|
| 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ó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&
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 |
|
|
| 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... |
|
|
| |
|
|
|
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ó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 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
|
|
|
| |
|
|
|
| So ahora versuche Yo soy tu Formel otra vez bisl programmablauftechnisch a optimieren... |
|
|
| |
|
|
|
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ó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&
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 |
|
|
| |
|
|
|
| Erstklassige Arbeit puede ser como sólo sagen!
Gracias! |
|
|
| |
|
|
|
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 >
|
|
|
| |
|
|
|
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 ▲ |
|
|
|