Überlappen
Übersicht

SchraubeBetreff: Überlappen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Das Leben ist hart, aber fair! |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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! |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jo, wäre nett. | ||
Das Leben ist hart, aber fair! |
Schraube |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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! |
feiderehemals "Decelion" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group