| |
|
|
| 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
|
|
|
| |
|
|
|
Hubert Binnewies | allô IF
alors...dans Mathe suis je bien sur elle...mais im comprendre deine Codes pas si bien...
sollte cela qui Sinussatz son???
pouvoir mir doch la fois ne Gleichung ou bien Formel sur et je Denk mir quoi aus..oki??
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!" | 05.12.2006 ▲ |
|
|
|
|
Carlo Keil | allô iF, si je cela richtig verstehe, cherches du den Winkel entre einer Strecke bzw. en Verlängerung et qui x-Achse. cela sollte avec seulement einer Winkelfunktion aller: (mangels Profan et Testmöglichkeit seulement un Pseudocode)
Winkel im Bogenmaß = Arcustangens(abs((y2 - y1) / (x2 - x1)))
Üblicherweise sommes qui Winkelfunktionen pas übermäßig vite. si es dir sur Performance ankommt vois je seulement deux Opportunités: Assembler ou bien beim Programmstart une eigene Arcustangenstabelle initialisieren, qui du ensuite sans Berechnung direct abgreifst (en Taille hängt naturellement de qui gewünschten Genauigkeit ab ).
HTH Carlo |
|
|
| |
|
|
|
| @Hubert: und dir mir arrêt tout autor de einer jeden ligne number den Winkel ermitteln trop peut. je tue mich schwer quoi qui Umsprünge betrifft si z.B. xx&<x& ist etc.
@Carlo: Tabellen, bien sûr, hab ici aussi déjà solche posté - mais qui Genauigkeit sollte déjà possible hoch son - Tabellen tomber ici aus.
à Winkel im Bogenmaß = Arcustangens(abs((y2 - y1) / (x2 - x1))) peux je mich aussi erinnern - cela habe je dessus oui angewandt.
si je obiges mais courir lasse gibt es zw. 160° et 200° un Problem - et je suis betriebsblind.
Bien sûr werd ego qui Performance à cause de pour ASM übertragen. |
|
|
| |
|
|
|
| Hm alors mir schenkt aucun solch une Proc wa? |
|
|
| |
|
|
|
Jac de Lad | je erlaube mir mich le mathématique gebildeten Personen ici im Forum trop zählen...
mais je comprends qui Fragestellung pas. Kannste cela nochmal effectuer? aussi aus dem Code werde je pas malain... |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 05.12.2006 ▲ |
|
|
|
|
| Ok bien sûr!
je male une ligne number de 100,100 pour mousex,mousey
Alles quoi je volontiers hätte ist den Winkel qui ligne number!
----> 0°
<--- 180°
^ | 270°
arrêt une Proc qui mir simple toujours den richtigen Winkel gibt après que je son x,y - xx,yy transfert habe. |
|
|
| |
|
|
|
Jac de Lad | Aso, ne...aucune Problem, kriegst bientôt ne Antwort! Muss maintenant mais grad quoi d'autre faire... |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 05.12.2006 ▲ |
|
|
|
|
| |
|
| |
|
|
|
| ah lol je dussel - je habs. Hey mais peut-être ist Deins plus rapide? je Poste meins juste la fois... |
|
|
| |
|
|
|
| KompilierenMarqueSéparation {$cleq}
const myPi=3.1415926535897932384626433832795
cls
while 1
cls
print int(wnk(100,100,mousex,mousey,false)),"° "
sleep 50
wend
waitkey
proc wnk(float x1,y1,x2,y2,int mode)
float x= sub ( x2! , x1! )
float y= sub ( y2! , y1! )
line x1,y1 - x2,y2
case (x<0) and (y<0) : return wnk(x2,y2,x1,y1,3)
case x<0 : return wnk(x2,y1,x1,y2,1)
case y<0 : return wnk(x1,y2,x2,y1,2)
casenot x : x=0.0000001
casenot y : y=0.0000001
float w=arctan(y/x)*180/myPi
if (mode==1)
w:=90+(90-w)
elseif (mode==2)
w:=360-w
elseif (mode==3)
w:=180+w
endif
return w
endproc
KompilierenMarqueSéparationCLS
WHILE 1
CLS
PRINT INT(WNK(100,100,%MOUSEX,%MOUSEY,0)),"° "
SLEEP 50
ENDWHILE
WAITKEY
proc WNK
PARAMETERS X1!,Y1!,X2!,Y2!,MODE%
var X!=SUB ( X2! , X1! )
var Y!=SUB ( Y2! , Y1! )
LINE X1!,Y1! - X2!,Y2!
IF (X!<0) AND (Y!<0)
RETOUR WNK(X2!,Y2!,X1!,Y1!,3)
ENDIF
IF X!<0
RETOUR WNK(X2!,Y1!,X1!,Y2!,1)
ENDIF
IF Y!<0
RETOUR WNK(X1!,Y2!,X2!,Y1!,2)
ENDIF
IFNOT X!
X!=0.0000001
ENDIF
IFNOT Y!
Y!=0.0000001
ENDIF
var W!=ARCTAN(Y!/X!)*180/3.1415926535897932384626433832795
IF (MODE%=1)
W!=90+(90-W!)
ELSEIF (MODE%=2)
W!=360-W!
ELSEIF (MODE%=3)
W!=180+W!
ENDIF
RETOUR W!
endproc
|
|
|
| |
|
|
|
Jac de Lad | Probier la fois cela: KompilierenMarqueSéparation
proc Winkel
Parameters x1!,y1!,x2!,y2!
declare dx!,dy!
dx!=x2!-x1!
dy!=y1!-y2!
if Abs(dx!)<Abs(dy!)
Return Pi()/2-ArcTan(dx!/dy!)+If((dx!<0) | (dy!<0),Pi(),0)
else
Return ArcTan(dy!/dx!)+If((dx!<0) | (dy!<0),Pi(),0)
endif
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 05.12.2006 ▲ | |
|
|
|