|  |  | 
|  | 
|  | 
|  | | 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éparation
 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
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  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éparation
 CLS
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  ▲ |  | 
 | 
|  | 
| 
 
 
 |