Bild bewegen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

cavebird

Betreff: Bild bewegen

BeitragDi, Nov 16, 2004 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Tjo also ich möchte das sich ein Bild langsam dahin bewegt wo ich draufgedrückt habe.
Soll aber auch ungerade strecken machen können also z.B. 45°.

Hat einer ne Idee wie das geht?
MegaUpload.de -- Uploade bis zu 2MB pro Bild !!DEIN PARTNER IN SACHEN UPLOAD --bitte weiterempfehlen, nur so können wir bekannt werden...

Blatolo

BeitragDi, Nov 16, 2004 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
versuchs mal mit sin und cos sowie atan2
 

cavebird

BeitragDi, Nov 16, 2004 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah bisher konnte ich diesn Kram immer vermeiden, aber ich glaube jetzt wird es mal Zeit, dass ich das lerne...außer wenn man es wieder umgehen kann?
MegaUpload.de -- Uploade bis zu 2MB pro Bild !!DEIN PARTNER IN SACHEN UPLOAD --bitte weiterempfehlen, nur so können wir bekannt werden...
 

noir

BeitragDi, Nov 16, 2004 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
soll sich das bild von punkt a nach b auf dem direktesten weg bewegen?
falls ja, verwende sin/cos um den steigungswinkel zu berechnen.

edit: man als ich angefangen hab zu schreiben, war noch keine andre antwort da Sad

Waveblue

BeitragDi, Nov 16, 2004 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
wie berechnet man eigentlich mit sin/cos den Steigungswinkel?
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
 

Edlothiol

BeitragDi, Nov 16, 2004 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn die Geschwindigkeit nicht konstant sein soll, kannst du auch einfach die x - und die y - Geschwindigkeit einzeln berechnen, indem du die Entfernungen durch einen bestimmten Wert teilst. Musst dann allerdings Floats benutzen (auch für die Koordinaten). Musst du eigentlich sowieso Smile
Wenn du konstante Geschwindigkeit brauchst, musst eben den Winkel mit Atan2 berechnen und dann mit Sin und Cos die X - und Y - Geschwindigkeit berechnen.
Da gabs schonmal nen Thread zu, es kann sogar sein dass da noch eine andere Lösung gefunden wurde - such doch mal danach.

Edit:Zitat:
wie berechnet man eigentlich mit sin/cos den Steigungswinkel?
Überhaupt nicht, sondern nur mit Atan. Schau am Besten mal in der Onlinehilfe nach Atan2.

Spikespine

BeitragDi, Nov 16, 2004 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
benutzt die suchfunktion!
 

noir

BeitragDi, Nov 16, 2004 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst ja ma anschauen:

Code: [AUSKLAPPEN]

Graphics 800,600,0,2
SetBuffer BackBuffer()

x = 100
y = 100

x1 =300
y1= 300


px#=x
py#=y

Lang=Abs(x-x1)
Hoch=Abs(y-y1)

schreg1# = Sqr((200*200) + (100*100))
schreg# = Sqr((Lang*Lang) + (Hoch*Hoch))
winkel#=ACos(Lang/schreg)

Repeat
Cls

If px => x1 And px < x1+1 And py => y1 And py < y1+1 Then winkel#=(360-ATan2(200,100))

If px => 400 And px < 401 And py =< 100 And py > 99 Then winkel#=(ATan2(300,100))

If px => 500 And px < 501 And py =< 400 And py > 399 Then winkel#=360-(ATan2(350,100))

Text 0,0,winkel+  "  " + px + "  " + py

Color 255,255,255
Line x,y,x1,y1

If y<y1 And x<x1 Then
px = px + Cos(winkel)
py = py + Sin(winkel)
EndIf

If y>y1 And x>x1 Then
px = px - Cos(winkel)
py = py - Sin(winkel)
EndIf

If y<y1 And x>x1 Then
px = px - Cos(winkel)
py = py + Sin(winkel)
EndIf

If y>y1 And x<x1 Then
px = px + Cos(winkel)
py = py - Sin(winkel)
EndIf


Color 0,255,0
Line 300,300,400,100
Line 400,100,500,400
Line 500,400,600,50

Color 255,0,0
Oval px,py,6,6,1

Flip
Until KeyHit(1)




is zwar vielleicht etwas umständlich, aber es soll dir ja nur die sin/cos etc. funktion verdeutlichen

ich hoff du kannst nachvollziehen was ich gemacht habe, im moment hab ich keine zeit es zu kommentieren.
 

Sibitiger

BeitragDi, Nov 16, 2004 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine güte lest doch mal was nach das is nur aus der Online-Hilfe, wenn du die nicht hast dann lad sie dir mal runter


Zitat:

Winkel#=ATAN2# (Y#, X#)


Beschreibung
Diese Funktion berechnet den Winkel aus X- und Y-Längen. Es ist somit die erweiterte Tangensfunktion. Beachte, dass diese Funktion etwas anders als ATAN funktioniert, und keine Arcustangens-Funktion ist.

Der Winkels wird nicht aus einem Tangenswert ermittelt, sondern aus den zwei Katheten eines rechtwinkligen Dreiecks.

Diese Funktion kann einen Winkel im Umkreis von -180° bis 180° berechnen. Dadurch ist es wesentlich einfacher, als die ATAN-Funktion, wo man erst durch logische Überlegungen den Winkel ausrechnen kann. Um einen vollen Winkel im Bereich von 0° bis 360° auszurechnen, muss man nur diese Formel anwenden:
Winkel#=(ATAN2(y#,x#)+360) MOD 360




Parameter
Y = vertikaler Abstand (Gegenkathete)
X = horizontaler Abstand (Ankathete)



Rückgabewert
Es wird ein Winkel in Grad zurückgeliefert. Es sind alle Winkel im Berech von 0 bis 360° möglich (bzw. -180° bis 180°). Die Grafik zeigt den Zusammenhang zwischen Winkel und Tangenswert.




Beispiel
Dieses Beispiel zeigt zwei bewegende Kreise. Der erste und schnellere Kreis läuft quer über dem ganzen Bildschirm. Der zweite ist langsamer und versucht ständig den ersten über möglicht direkten Weg zu erreichen.
Code: [AUSKLAPPEN]

GRAPHICS 640,480,16,1
SETBUFFER BACKBUFFER()
SEEDRND MILLISECS()
DIM x(1),y(1),w(1),s(1)
x(0)=RAND(0,639)
y(0)=RAND(0,639)
w(0)=RAND(0,359)
s(0)=3
x(1)=RAND(0,639)
y(1)=RAND(0,639)
s(1)=2
WHILE KEYHIT(1)=0
   COLOR 0,0,0
   RECT 0,0,640,480
   COLOR 255,255,255
   w(0)=w(0)+RAND(-10,10)
   minx=x(0)-x(1)
   miny=y(0)-y(1)
   minx2=-(x(1)-640-x(0))
   miny2=-(y(1)-480-y(0))
   minx3=x(0)-640-x(1)
   miny3=y(0)-480-y(1)
   IF ABS(minx2)<ABS(minx) THEN minx=minx2
   IF ABS(miny2)<ABS(miny) THEN miny=miny2
   IF ABS(minx3)<ABS(minx) THEN minx=minx3
   IF ABS(miny3)<ABS(miny) THEN miny=miny3
   w(1)=ATAN2(miny,minx)
   FOR i=0 TO 1
      x(i)=x(i)+COS(w(i))*s(i)
      y(i)=y(i)+SIN(w(i))*s(i)
      IF x(i)<0 THEN x(i)=640+x(i)
      IF x(i)>639 THEN x(i)=x(i)-640
      IF y(i)<0 THEN y(i)=480+y(i)
      IF y(i)>479 THEN y(i)=y(i)-480
      OVAL x(i)-5,y(i)-5,10,10,1
   NEXT
   FLIP
WEND
WAITKEY()
END




Siehe auch
ACOS, ASIN, ATAN, COS, SIN, TAN
 

noir

BeitragDi, Nov 16, 2004 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ich find mein beispiel anschaulicher Laughing
 

Sibitiger

BeitragDi, Nov 16, 2004 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
@noir ist es vielleicht auch aber man hätte sich das andere ja wenigstens mal angucken können oder Question
Sibitiger
 

cavebird

BeitragDi, Nov 16, 2004 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo danke an alle, ich werde mich nun in diesen Kram einarbeiten, ist ja nicht so schwer wie ich immer dachte Laughing
MegaUpload.de -- Uploade bis zu 2MB pro Bild !!DEIN PARTNER IN SACHEN UPLOAD --bitte weiterempfehlen, nur so können wir bekannt werden...
 

noir

BeitragDi, Nov 16, 2004 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
klar Sibitiger, aber ich denke wenn man in mathe noch keine sin, etc... hatte is die erklärung der bb-hilfe nicht so leicht zu verstehen.

natürlich kann ma mein beispiel genauso wenig kapieren*g

Waveblue

BeitragDi, Nov 16, 2004 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Daran wirds wohl bei mir liegen! Question Question Confused Question Question
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
 

Sibitiger

BeitragDi, Nov 16, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
tja das is das Problem wenn man sin cos tan noch nich in der Schule hatte aber hier jetzt eine Erklärung abzugeben wie das funktioniert wäre zu viel arbeit und zu viel text...(zumindest hab ich im mom keine lust)

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group