| |
|
|
- 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 3 - |
|
|
 | WO 270 ist ist Wurst! peux Du volontiers faire comme besser wäre! |
|
|
| |
|
|
|
 | seulement la fois nebenbei cela passende Gegenstück c'est moi aussi grad gelungen ^ ^ KompilierenMarqueSéparation KompilierenMarqueSéparationvar COS_OUTPX!=0
var COS_OUTPY!=0
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!)
endproc
Okok sur qui Klammern reden wir pas! *g* |
|
|
| |
|
|
|
 | Jupp lol quelque chose comme braucht qui monde *gg* KompilierenMarqueSéparation {$cleq}
const myPI=3.1415926535897932384626433832795
float cos_outpx,cos_outpy,w
cls
while 1
cls
w:=wnk(100,100,mousex,mousey,false)
print int(w),"° "
getcircp 100,100,50,w+90
drawtext cos_outpx,cos_outpy,"+"
sleep 50
wend
waitkey
proc wnk(float x1,y1,x2,y2,int mode)
float dx=x2!-x1!
float dy=y2!-y1!
line x1,y1 - x2,y2
case (dx<0) and (dy<0) : return wnk(x2,y2,x1,y1,3)
case dx<0 : return wnk(x2,y1,x1,y2,1)
case dy<0 : return wnk(x1,y2,x2,y1,2)
casenot dx : dx=0.0000001
casenot dy : dy=0.0000001
float 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 Winkel
Parameters x1!,y1!,x2!,y2!
declare dx!,dy!
dx!=x2!-x1!
dy!=y2!-y1!
if Abs(dx!)<Abs(dy!)
Return (Pi()/2-ArcTan(dx!/dy!)+If((dx!<0) | (dy!<0),Pi(),0))/Pi()*180
else
Return (ArcTan(dy!/dx!)+If((dx!<0) | (dy!<0),Pi(),0))/Pi()*180
endif
endproc
proc getcircp(float xp,yp,r,w)
cos_outpx:=((((r*sin(((-1*(((-1+w)*myPI)+myPI))/180))))*-1)+xp)
cos_outpy:=((((r*cos(((-1*(((-1+w)*myPI)+myPI))/180))))*-1)+yp)
s4 href='./../../funktionsreferenzen/XProfan/endproc/'>endproc
|
|
|
| |
|
|
|
 Hubert Binnewies | alors, je suis qui attitude, qui meiste Prozessorzeit allez chez komplizierten Berechnungen comment Sinus & Co sur elle. tout autor halte je es so comme mon verstorbener père (il était Berufskraftfahrer) toujours dit hat: qui kürzeste Weg ist pas toujours qui Schnellste !.
J'ai pensé mir: chez X,Y XX,y YY,X erhält on toujours un rechtwinkliges Dreieck. si je mir Dein erstes Proggi genauer ansehe ist là XX toujours grösser comme X et YY toujours grösser comme Y. Demzufolge braucht on jusqu'à sur ne Wurzel den Proz seulement avec Grundrechenarten trop charger, qui il entier vite berechnen peux. seulement den einfachen Pythagoras à Hypothenuse trop berechnen et ensuite un Seiten-Winkelverhältnis.
et sollte X doch la fois grösser volonté comme XX ensuite prends simple X-XX la fois -1 et den Winkel plus 90 . et sollte Y doch la fois grösser son comme YY ensuite prends simple Y-YY la fois -1 et zieh cela Ergebniss de 360 Grad ab... et déjà passt es...
cela ganze passt ensuite dans qui Formel im Bild.
Im Programmtechnischen Umsetzen es Du besser comment je...
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 ▲ |
|
|
|
|
 | je glaub cela isses quoi je mise en œuvre habe et je trouve Dein Pa hatte avec cela sicherlich souvent droite.  |
|
|
| |
|
|
|
 Hubert Binnewies | [quote-part:1a7341c7f9=iF]je glaub cela isses quoi je mise en œuvre habe[/quote-part:1a7341c7f9] na plan pas..... Du utilise qui Funktionen zum umrechnen ins Bogenmaß um Sinus et Cosinus trop nutzen....
Lass cela doch alles weg.... Brauchst du doch garnicht... Setz simple mon Formel um.. seulement avec den payons, ensuite venez direct comme Antwort qui Gradzahl raus.. allez doch viel fixer.... et cela aussi encore soweit comment du @Set(Decimals,N) mets.....
je meinte avec cela: Du utilise den direkten Berechnungsweg, brauchst pour mais qui change ins Bogenmaß et den Sinus.
dans meiner Formel wird alles dans 2 Schritten berechnet (Pythagoras et Verhältniss), mais pour sans attention qui Einheiten, womit qui rechenintensiven Operationen comment @Deg2roue(N) ou bien @Sin(N) wegfallen...
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 ▲ |
|
|
|
|
 | sqrt( ( (xx-x)² + (yy-y)² ) / (xx-x) )*90 ? Quelque chose comme? |
|
|
| |
|
|
|
 Hubert Binnewies | |
|
| 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 ▲ |
|
|
|
|
 RGH | |
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 06.12.2006 ▲ |
|
|
|
|
 Hubert Binnewies | et alles sans grad change.... gehts encore plus rapide??? |
|
|
| 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 - eh bien erfüllt Eure Formel mais malheureusement toujours pas den Zweck des Threads ici - quoi cet mais tut: KompilierenMarqueSéparation
proc WNK
PARAMETERS X1!,Y1!,X2!,Y2!,MODE%
var DX!=X2!-X1!
var DY!=Y2!-Y1!
LINE X1!,Y1! - X2!,Y2!
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
alors comment devrait es car eh bien lauten? |
|
|
| |
|
|
|
 | alors peut-être encore la fois zur Aufgabenstellung - je comme MatheUnProfi habe o.G. Funktion erstellt quel je qui Koordinaten pour une ligne number übergebe et den Winkel erhalte. sans si et mais doit qui Werte 0°-360° zurückgeliefert volonté - Umsprung-et-Übergangsfliessend.
So comment je cela vois brauche je pour seulement den Arcustangens - une Multipli et Division. peux un MatheProfi cela améliorer? |
|
|
| |
|
|