Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Hilfe! Falscher Winkelmodus

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Lloyd



Anmeldungsdatum: 27.06.2008
Beiträge: 37
Wohnort: Nähe Frankfurt

BeitragVerfasst am: 20.12.2008, 23:47    Titel: Hilfe! Falscher Winkelmodus Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.12.2008, 00:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Lloyd



Anmeldungsdatum: 27.06.2008
Beiträge: 37
Wohnort: Nähe Frankfurt

BeitragVerfasst am: 21.12.2008, 01:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 21.12.2008, 01:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Lloyd



Anmeldungsdatum: 27.06.2008
Beiträge: 37
Wohnort: Nähe Frankfurt

BeitragVerfasst am: 21.12.2008, 15:19    Titel: Antworten mit Zitat

Hm, die Funktion spinnt immernoch sehr. Hier mal ein simples Testprogramm:
http://npshare.de/files/7e14ebb5/Rotation_fehler.rar

Irgendwie merkwürdig.

Compiler-Befehl: "<$fbc>" "<$file>" -lang deprecated -s gui

Hilfe traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.12.2008, 16:32    Titel: Antworten mit Zitat

-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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Lloyd



Anmeldungsdatum: 27.06.2008
Beiträge: 37
Wohnort: Nähe Frankfurt

BeitragVerfasst am: 22.12.2008, 17:45    Titel: Antworten mit Zitat

Hm, bie -lang fb bzw. ohne -lang, aber auch bei -lang fblite und -lang qb passiert nichts.
Es rotiert einfach garnicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 22.12.2008, 18:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 22.12.2008, 20:33    Titel: Antworten mit Zitat

Thema verschoben, da hier über FreeBasic-spezifische Dinge diskutiert wird.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Lloyd



Anmeldungsdatum: 27.06.2008
Beiträge: 37
Wohnort: Nähe Frankfurt

BeitragVerfasst am: 22.12.2008, 21:09    Titel: Antworten mit Zitat

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... weinen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 23.12.2008, 12:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz