Überlappen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Schraube

Betreff: Überlappen

BeitragDo, Feb 03, 2005 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
tach,
ich habe nen Problem und zwar ich habe 5 Kreise die eine feste position haben. Der 6. Kreis wird per Zufallskoordinaten zu den anderen gemischt.
Da kommt es natürlich mal vor, dass sich der 6. und ein anderer überschneiden. Aber wenn das eintritt möchte ich dass nochmal die Koordinaten vom 6. Kreis gewürfelt werden, solange, bis er sich mit keinem anderen mehr überschneidet.

Bsp.


SeedRnd = Millisecs()
Zufall1 = Rand(99,500)
Zufall2 = Rand(99,500)


DrawImage Kreis, 100, 100
DrawImage Kreis, 200, 200
DrawImage Kreis, 300, 300
DrawImage Kreis, 400, 400
DrawImage Kreis, 500, 500

Drawimage Kreis1, Zufall1, Zufall2


..weiter weiß ich nicht Sad
Das Leben ist hart, aber fair!

BladeRunner

Moderator

BeitragDo, Feb 03, 2005 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du weisst welchen Radius die Kreise haben kannst du einfach überprüfen (Satz des Pythagoras) ob die Mittelpunkte der Kreise eine geringere Entfernung haben als ihre aufaddierten Radien. Wenn ja überlappen sie sich.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Schraube

BeitragDo, Feb 03, 2005 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist ja bloß, dass es eigentlich 25 Planeten sind und ich keine lust habe für jeden Planeten eine extra Rechnung zu machen.
Das Leben ist hart, aber fair!

BladeRunner

Moderator

BeitragFr, Feb 04, 2005 8:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du deinen Code vernünftig planst kannst du alle erforderlichen Berechnungen in einer Schleife durchführen ...
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Earl Grey

BeitragFr, Feb 04, 2005 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
bin noch sehr neu, aber wäre es nicht einfacher deine "kreise" als images zu laden und anschliessend mit kollisionsabfrage zu prüfen ob die sich überlappen?

Beispiel aus der onlinehilfe:
:

GRAPHICS 640,480,16
gfxBox=CREATEIMAGE(50,50)
gfxCircle=CREATEIMAGE(50,50)
SETBUFFER IMAGEBUFFER(gfxBox)
COLOR 0,0,255
RECT 10,10,30,30,1
SETBUFFER IMAGEBUFFER(gfxCircle)
COLOR 255,0,0
OVAL 10,10,30,30,1
SETBUFFER BackBuffer()
boxX=RND(50,610)
boxY=RND(50,430)
REPEAT
circleX=MOUSEX()
circleY=MOUSEY()
CLS
DRAWIMAGE gfxBox,boxX,boxY
DRAWIMAGE gfxCircle,circleX,circleY
FLIP
UNTIL IMAGESCOLLIDE (gfxBox,boxX,boxY,0,gfxCircle,circleX,circleY,0)
TEXT 0,0, "Kollision! Maustaste drücken"
FLIP
WAITMOUSE()
ENDGRAPHICS


cu

SpionAtom

BeitragFr, Feb 04, 2005 10:45
Antworten mit Zitat
Benutzer-Profile anzeigen
BladeRunner hat Folgendes geschrieben:
Wenn du deinen Code vernünftig planst kannst du alle erforderlichen Berechnungen in einer Schleife durchführen ...


Also diese Methode würde mir persönlich eher zusagen. Habs auch schonmal gebraucht für ein Memory, bei dem es nur runde Karten gibt. Die werden dann zufällig auf den Schirm geschmissen aber berühren sich nie.

Allerdings wäre es hilfreich Types für diese Geschichte zu verwenden. (Zur Not geht auch ein Dim-Feld), aber die liegen ja nicht jedem. Wenn ich den Quelltext finde, poste ich ihn mal.
 

Schraube

BeitragSa, Feb 05, 2005 11:43
Antworten mit Zitat
Benutzer-Profile anzeigen
jo, wäre nett.
Das Leben ist hart, aber fair!
 

Schraube

BeitragSa, Feb 05, 2005 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
noch ne Frage, gibts eigentlich nen Befehl, der ein image löscht, dass auf dem Bildschirm ist? Dabei meine ich, wenn 2mal dasselbe auf dem Bildschirm ist.

zb.

a = loadimage("a.bmp")

drawimage a, 200,200 ;das Image muss weg
drawimage a, 300,400 ;das image soll stehen bleiben
Das Leben ist hart, aber fair!
 

feider

ehemals "Decelion"

BeitragSa, Feb 05, 2005 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst höchstens den ganzen Bildschirm löschen:

a = loadimage("a.bmp")

drawimage a, 200,200 ;das soll weg
drawimage b, 100,100 ;das soll bleibn
cls
drawimage a, 300,400 ;das wurde an einer anderen Pos neu gezeichnet
drawimage b, 100,100 ;das wurde an der selben Pos wie vorher neu gezeichnet

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group