von punkt a zu b in gerader linie

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Blitzprogger

Betreff: von punkt a zu b in gerader linie

BeitragFr, Mai 02, 2008 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo erstmal
könnt ihr mir sagen wie man zb. eine grafik von punkt a zu punkt b in einer geraden strecke bringt
ich dachte mir das etwa so:
Code: [AUSKLAPPEN]

Graphics 800,600,16,1
SetBuffer BackBuffer()

x = 0
y = 0
px = x
py = y

Repeat

mx = MouseX()
my = MouseY()
mh = MouseHit(1)

Rect x-10,y-10,20,20,1
Rect mx,my,5,5,1

If mh Then
 px = mx
 py = my
EndIf

If px > x Then x = x + 1
If px < x Then x = x - 1
If py > y Then y = y + 1
If py < y Then y = y - 1

Flip
Cls

Until KeyDown(1)

End

bisher sieht es so aus, aber geht es auch "direkt" von a nach b? wenn ja dann hoffe ich auf eine antwort

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

ZaP

BeitragFr, Mai 02, 2008 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
sin, cos, drawimage

Ist sogar ein Beispiel mit bei. Ansonsten GTA-Steuerungs Tutorial auf robsite.de nachschlagen.
Starfare: Worklog, Website (download)

Blitzprogger

BeitragFr, Mai 02, 2008 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
danke schonmal
hab mich nun dahintergestzt und mir brodelt jetzt schon der kopf (bin erst in der 6ten. müsst ihr wissen und bin nicht mit hoher mathematik vertraut) desshalp bleibt mir auch noch ne frage:
sagen wir mir ist die ankathete und die gegenkathete eines rechtwinkligen dreiecks bekannt, wie finde ich den wert der hypotenuse heraus?

edit ich bin mit meinem zermartetem Gehirn nun doch zur lösung des problems "wie errechne ich die hypoteneuse" gekommen, stehe nun aber vor dem problem dass ich nicht weiss wie man nun das rechteck von ort a nach b im richtigen winkel zeichnet
bitte um hilfe

mfg

ps: das mit drawimage wusste ich schon aber ich wollte einfach nicht "wie kriege ich die x und y pos in einer geraden von a nach b" sagen

edit2 nun sieht der code so aus:Code: [AUSKLAPPEN]
Graphics 640, 480, 0, 1
SetBuffer BackBuffer()
px = x
py = y
While KeyDown(1) = 0
   
    mh = MouseHit(1)
    mx = MouseX()
    my = MouseY()

    If mh Then
     px = mx
     px = mx
     ger1 = px - x
     ger2 = py - y
     recht1 = ger1 * ger1
     recht2 = ger2 * ger2
     winkel = recht1 + recht2
     winkel = winkel / winkel
     winkel = ger1 / winkel
    EndIf

   Cls
   Oval x - 10, y - 10, 20, 20, 1
   Flip
Wend
End


edit3 mir ist grad eingefallen dass dieser teil hier:Code: [AUSKLAPPEN]
     ger1 = px - x
     ger2 = py - y
     recht1 = ger1 * ger1
     recht2 = ger2 * ger2
     winkel = recht1 + recht2
     winkel = winkel / winkel
     winkel = ger1 / winkel

nicht funktioniert da ich den hypotenuse hoch 2 nicht einfach durch sich selber teilen kann, da dies ja 1 geben würde. desshalb frage ich euch zusätzlich: kann man wurzeln von zahlen errechnen in blitzbasic?

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Mai 02, 2008 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
sqr
und atan2 könnte dich auch interessieren
[BB2D | BB3D | BB+]

Blitzprogger

BeitragSa, Mai 03, 2008 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
das begreife ich jetzt nich ganz, ich habe nun die hypotenuse. wie bewege ich nun die figur von a nach b?
ich hab momentan diesen Code: [AUSKLAPPEN]

Graphics 640, 480, 0, 1
SetBuffer BackBuffer()
px# = x#
py# = y#

geschwindigkeit# = 1

While KeyDown(1) = 0
   
    mh = MouseHit(1)
    mx = MouseX()
    my = MouseY()

    If mh Then
     px = mx
     px = mx
     ger1 = px - x
     ger2 = py - y
     ger3 = ger1 * ger1
     ger4 = ger2 * ger2
     wink = ger3 + ger4
     wink = Sqr(wink)
     winkel = ger1 / wink
    EndIf

    If px <> x Then
     x = x + Cos(winkel)*geschwindigkeit
     y = y + Sin(winkel)*geschwindigkeit
    EndIf

    Rect mx-2,my-2,4,4,1

   Oval x - 10, y - 10, 20, 20, 1

   If x > 640 Then x = 0
   If x < 0 Then x = 640
   If y > 480 Then x = 0
   If y < 0 Then x = 480

   Flip
   Cls
Wend
End

aber das funktioniert iwie net. bitte um hilfe

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

ZaP

BeitragSa, Mai 03, 2008 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Alpha ist Gegenkathete / Ankathete wenn ich mich nicht irre. Die Hypotenuse ist immer die Linie von A nach B, weil das die längste Seite des gedachten Dreiecks ist. Die Gegenkathete ist demzufolge der horizontale Abstand von A nach B. Die Ankathte der vertikale Abstand.
Code: [AUSKLAPPEN]


offset_horz = abs(bx - ax) ;gegenkathete
offset_vert = abs(by-ay) ;ankathete

objektwinkel = atan(offset_horz/offset_vert) ;winkel alpha

repeat

  obj_x = obj_x + cos(objektwinkel)
  obj_y = obj_y + sin(objektwinkel)

  rect obj_x,obj_y,16,16

until keyhit(1)



Korregiert mich wenn ich mich irre.
Starfare: Worklog, Website (download)

Blitzprogger

BeitragSa, Mai 03, 2008 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir funktioniert das nicht Sad auch bin ich da ratlos
hier mal mein codeCode: [AUSKLAPPEN]
Graphics 640, 480, 0, 1
SetBuffer BackBuffer()
x# = 1
y# = 1

While KeyDown(1) = 0
   
    mh = MouseHit(1)
    mx = MouseX()
    my = MouseY()

    If mh Then
     ger1 = Abs(mx - x)
     ger2 = Abs(my - y)
     winkel = ATan(ger1/ger2)
    EndIf

    If px <> x Then
     x = x + Sin(winkel)
     y = y + Cos(winkel)
    EndIf

    Rect mx-2,my-2,4,4,1

   Oval x - 10, y - 10, 20, 20, 1

   Flip
   Cls
Wend
End

es passiert dann dass sich der kreis unentwegt nach unten und nach rechts bewegt , auch wenn ich links oben drücke
auch habe ich verständnisfragen was bringt es die operationen mit abs und atan auszuführen. bitte um hilfe

mfg

edit: hab meine antwort geschrieben als du deine gepostet hast Smile danke für die antwort
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink
  • Zuletzt bearbeitet von Blitzprogger am Sa, Mai 03, 2008 21:14, insgesamt einmal bearbeitet

Silver_Knee

BeitragSa, Mai 03, 2008 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
offset_horz = abs(bx - ax) ;gegenkathete
offset_vert = abs(by-ay) ;ankathete

objektwinkel = atan2(offset_horz,offset_vert) ;winkel alpha

repeat

  obj_x = obj_x + cos(objektwinkel)
  obj_y = obj_y + sin(objektwinkel)

  rect obj_x,obj_y,16,16

until keyhit(1)
#

Atan2 Schmiert nicht ab wenn offsetvet=0 ist^^ des weiß dann das 90 ° gemeint sind

Blitzprogger

BeitragSa, Mai 03, 2008 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ist gut leute. ich hab nun des problems lösung
hier mein Code: [AUSKLAPPEN]
Graphics 800, 600, 0, 1
SetBuffer BackBuffer()
x# = 0
y# = 0

While KeyDown(1) = 0
   
    mh = MouseDown(1)
    mx = MouseX()
    my = MouseY()

    xx = x
    yy = y

    If mh Then
     px = mx
     py = my
     ger1 = px - x
     ger2 = py - y
     winkel = ATan2(ger1,ger2)
    EndIf

    If xx <> px Then
     x = x + Sin(winkel)
    EndIf
    If yy <> py Then
     y = y + Cos(winkel)
    EndIf

    Rect mx,my,4,4,1

    Oval x - 10, y - 10, 20, 20, 1

    Flip
    Cls

Wend

End

mit viel tüfteln ist es mir gelungen dass alles so funktioniert wie es soll
nochmals danke für eure bemühungen

edit: mfg Wink
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group