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:

Pixelbewegung per Winkel?

 
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
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 17.04.2012, 13:18    Titel: Pixelbewegung per Winkel? Antworten mit Zitat

Hi ich hätte da mal eine Frage an euch und zwar.

Ich hab mir auf die schnelle diesen code gebastelt.

Code:

#Include "fbgfx.bi"

ScreenRes 320,240


Dim x As Double = 10
Dim y As Double = 10

Dim go_x As Integer = 100
Dim go_y As Integer = 100


Dim As Integer xm, ym, buttons, Ergebnis

Do

   Ergebnis = GetMouse (xm, ym, , buttons)

   If buttons And 1 Then
      go_x = xm
      go_y = ym
   EndIf

   If x < go_x Then x += 1
   If x > go_x Then x -= 1
   If y < go_y Then y += 1
   If y > go_y Then y -= 1
   
   
   

   Cls
   Draw String (0,0),Str (xm) & " " & Str(ym)
   Circle (x,y),5
   Sleep 1
Loop Until InKey = "q"
end


Dieser ist jetzt nur QUICK AND DIRTY also nix mit backbuffer oder screenlock...


Der Kreis bewegt sich ja immer zum Mausklick bin aber halt wie ein Kran anhand der X und Y Pfade.

Wie ist es möglich per WInkelfunktionen es hinzubekommen das er sie exakt ansteuert ohne den ausgleich mit X und Y zu berücksichtigen also nicht wie ein Krahn sich zu bewegen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 17.04.2012, 13:37    Titel: Antworten mit Zitat

wenn du es unbedingt mit winkelfunktionen machen willst (willst du nicht!), dann würdest du atn/atn2 (ich weiß nicht ob fb einen atn2 hat) auf die steigung (delta_y/delta_x) anwenden wollen, um den winkel zu erhalten; anschließend würdest du cosinus und sinus anwenden wollen, um anhand des winkels die teilgeschwindigkeiten für x- und y- zu erhalten.

was du aber wirklich willst, ist folgendes:

du willst den abstand berechnen mittels sqr(delta_x^2 + delta_y^2) (delta_foo ist foo_neu - foo_alt). dann willst du pro schleifendurchlauf um delta_x / abstand * irgendwas, delta_y / abstand * irgendwas (dasselbe irgendwas!) bewegen. achtung, du wirst gleitkommazahlen brauchen, momentan benutzt du ints.
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 17.04.2012, 17:40    Titel: Antworten mit Zitat

Glaub das 2. Spricht mich mehr an.
Auch wenn ich noch nicht richtig verstehe was genau ich machen muss.

Hätte noch auf die schnelle eine andere Frage.

Wenn ich mit GET einen ScreenTeil in einen buffer einlesen lasse ist dies ja kein problem. Aber wenn ich einen buffer von einem imagecreate mit get holen will und einen teil in meinem Zielpuffer kopieren will geht es nicht?

Aber in der FBHelp steht das es funzen müsste
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 17.04.2012, 18:07    Titel: Antworten mit Zitat

Befehlsreferenz hat Folgendes geschrieben:
PUT überträgt Daten (einen Bildausschnitt) aus einem Puffer auf den Bildschirm oder in einen anderen Puffer. Die Datenquelle ist vom selben Format, wie es bei GET (Grafik) verwendet wird.

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 17.04.2012, 19:55    Titel: Antworten mit Zitat

Ja aber wie kann ich von einem buffer mit get aus lesen also ein bestimmten bereich ohne das pic vorher auf den screen zu bringen und diesen abschnitt in einen neuen buffer kopieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 17.04.2012, 20:13    Titel: Antworten mit Zitat

Code:
GET quellpuffer, (startX, startY)-(endX, endY), neuerPuffer

_________________
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
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 18.04.2012, 08:26    Titel: Antworten mit Zitat

Zitat:
GET quellpuffer, (startX, startY)-(endX, endY), neuerPuffer


Klappt irgentwie bei mir net.... traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 18.04.2012, 09:20    Titel: Antworten mit Zitat

Hier
http://www.freebasic-portal.de/befehlsreferenz/imagecreate-307.html
findest du ein gutes Beispiel (unten auf der Seite).
Code:
...
Get Img, (0, 0)-(31, 31), Cut
...

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
0oFreako0



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 18.04.2012, 20:03    Titel: Antworten mit Zitat

Frag mich warum das hier dann net funzen will traurig

Code:

ScreenRes 320,240,32


Type Tstripe
   gfx As Byte Ptr
End Type

Dim b As Integer = 50
Dim h as Integer = 50

Dim img As Byte Ptr
img = ImageCreate(b,h,32)
Line img,(0,0)-(b,h),RGB(255,0,0),bf

Dim stripe(h) As Tstripe

For i As Integer = 0 To h
   stripe(i).gfx = ImageCreate(50,1,32)
   Get img, (0,i)-(b,i),stripe(i).gfx

Next i


For i As Integer = 0 To h
Put (0,i),stripe(i).gfx
Next i

Sleep
End
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 18.04.2012, 20:38    Titel: Antworten mit Zitat

Es fängt damit an, dass dein Buffer 50 Pixel breit ist, also der x-Wert von 0 bis 49 reicht. Du willst aber bis 50 auslesen. Damit greifst du auf nicht erlaubten Bereich zu, was zum Absturz führt. Bei der Höhe ist es dann letztendlich noch einmal dasselbe.
_________________
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