von punkt a zu b in gerader linie
Übersicht

![]() |
BlitzproggerBetreff: von punkt a zu b in gerader linie |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
sin![]() ![]() ![]() Ist sogar ein Beispiel mit bei. Ansonsten GTA-Steuerungs Tutorial auf robsite.de nachschlagen. |
||
Starfare: Worklog, Website (download) |
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
sqr![]() und atan2 ![]() |
||
[BB2D | BB3D | BB+]
|
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
bei mir funktioniert das nicht ![]() 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 ![]() |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
- Zuletzt bearbeitet von Blitzprogger am Sa, Mai 03, 2008 21:14, insgesamt einmal bearbeitet
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group