Français
Forum

Mathe: Winkelberechnung

 
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

 
05.12.2006  
 




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
 
05.12.2006  
 



@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.
 
05.12.2006  
 



Hm alors mir schenkt aucun solch une Proc wa?
 
05.12.2006  
 




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.
 
05.12.2006  
 




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  
 



Wow!
 
05.12.2006  
 



ah lol je dussel - je habs. Hey mais peut-être ist Deins plus rapide? je Poste meins juste la fois...
 
05.12.2006  
 




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

 
05.12.2006  
 




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  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

4.543 Views

Untitledvor 0 min.
Michael W.23.12.2016
Julian Schmidt25.11.2013
holmol9310.05.2013
Andreas Koch07.11.2012
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie