Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Lloyd

Anmeldungsdatum: 27.06.2008 Beiträge: 37 Wohnort: Nähe Frankfurt
|
Verfasst am: 20.12.2008, 23:47 Titel: Hilfe! Falscher Winkelmodus |
|
|
WAK!
Seit eben gehn bei mir keine Winkelfunktionen mehr richtig.
Zum Beispiel hab ich ne Rotationssub
Code: |
Sub Rotate ( x As Single, y As Single,_
centerx As Single, centery As Single,_
angle As Single )
Dim As Single xa, ya
xa = x - centerx
ya = y - centery
x = centerx + xa * Sin(angle) + ya * Cos(angle)
y = centery + ya * Sin(angle) - xa * Cos(angle)
End Sub
|
Programme, in denen das prima funktionierte gehn nun garnicht mehr. Ich bin voll am verzweifeln. Reboot etc. haben nicht geholfen...
;__; |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.12.2008, 00:49 Titel: |
|
|
Zitat: | Reboot etc. haben nicht geholfen... |
ist ja auch klar dass das nicht hilft. und ohne dein zutun wird sich da auch nix geändert haben.
Also dass dieses Programm so "plötzlich nicht mehr funktioniert" bezweifel ich. Hast du das Bogenmaß statt Grad beim Winkel verwendet? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Lloyd

Anmeldungsdatum: 27.06.2008 Beiträge: 37 Wohnort: Nähe Frankfurt
|
Verfasst am: 21.12.2008, 01:08 Titel: |
|
|
Hm, ich hatte wohl irgendwann beim Compilerbefehl lang qb statt lang deprecated stehn. Zumindest kommt jetzt etwas akzeptables bei den Programmen raus. Mannomann, ich war vielleicht in Panik xD |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 21.12.2008, 01:11 Titel: |
|
|
Nebenbei: Ich würde evtl. überlegen, für den Winkel ein double zu verwenden. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Lloyd

Anmeldungsdatum: 27.06.2008 Beiträge: 37 Wohnort: Nähe Frankfurt
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.12.2008, 16:32 Titel: |
|
|
-lang deprecated kann auch mit so einigen Überraschungen aufwarten (z.B. falsch deklarierte Variablen, die bereiten immer wieder Kopfzerbrechen). Benutze lieber -lang fb (oder gar kein -lang angeben, kommt aufs selbe raus). _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Lloyd

Anmeldungsdatum: 27.06.2008 Beiträge: 37 Wohnort: Nähe Frankfurt
|
Verfasst am: 22.12.2008, 17:45 Titel: |
|
|
Hm, bie -lang fb bzw. ohne -lang, aber auch bei -lang fblite und -lang qb passiert nichts.
Es rotiert einfach garnicht. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 22.12.2008, 18:53 Titel: |
|
|
Probiere mal
Sub Rotate (byref xo As Single, byref yo As Single,_ _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.12.2008, 20:33 Titel: |
|
|
Thema verschoben, da hier über FreeBasic-spezifische Dinge diskutiert wird. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Lloyd

Anmeldungsdatum: 27.06.2008 Beiträge: 37 Wohnort: Nähe Frankfurt
|
Verfasst am: 22.12.2008, 21:09 Titel: |
|
|
Ok, durch das byref kommt jetzt exakt das gleiche wie bei deprecated raus. Also, wie das oben beigelegte Beispiel zeigt: es spinnt total rum.
Ich weiß nicht mehr weiter...  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 23.12.2008, 12:42 Titel: |
|
|
Ich kann den Fehler leider nicht nachvollziehen, vor allem weil ich nicht weiß, ob deine Berechnungsformel stimmt. Ich habe das jetzt anders gelöst:
Code: | Sub Rotate (byref xo As Single, byref yo As Single,_
centerx As Single, centery As Single,_
angle As Double )
Dim As Single xa, ya
xa = xo - centerx
ya = yo - centery
Dim As Single length = Sqr(xa^2 + ya^2)
Dim As Double angle_new = Atan2(ya,xa)+angle
xo = centerx + length * Cos(angle_new)
yo = centery + length * Sin(angle_new)
End Sub |
Funktioniert bei mir einwandfrei. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|