Pythagoras in Draw3D?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

M0rgenstern

Betreff: Pythagoras in Draw3D?

BeitragMi, Jan 20, 2010 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute.
Ich hab grade ein ganz elementares, mathematisches Problem: Den Pythagoras unter Draw3D anzuwenden.

Das Problem ist folgendes: Wenn das Koordinatensystem nur positive Zahlen beinhaltet (so wies bei BB normalerweise ist), dann funktioniert folgende Funktion perfekt:

Code: [AUSKLAPPEN]
Function Pythagoras(x1#, y1#, x2#, y2#)
   Return Sqr((x1#-x2#)^2 + (y1#-y2#)^2)
End Function


Wenn man jetzt aber Draw3D benutzt, dann hat man auch negative Koordiaten und dann funktioniert das ganze nicht mehr so gut.
Ich hab das ganze versucht mit dem Betrag zu übergeben:

Code: [AUSKLAPPEN]
Pythagoras((Abs(Blubb\HX)), (Abs(Blubb\Hy)), (Abs(Haus\Hx)), (Abs(Haus\HY))) <= 80


Aber das funktioniert auch nicht.
Ich hab mich dann mit Stift und Papier hingesetzt, ein Koordinatensystem gemalt und mir das ganze mal so verdeutlicht.
Mein Ergebnis: Ich müsste etwa 8 verschiedene Fallunterscheidungen treffen.

Hab ich mich bei der ganzen Sache vertan oder wo liegt mein Problem?
Bzw gibts ne Möglichkeit das ganze so umzubauen damit es klappt?

Wäre echt nett wenn ihr mir helfen könntet.

Lg, M0rgenstern

mpmxyz

BeitragMi, Jan 20, 2010 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Das funktioniert doch ganz prima.
Für die Berechnung eines Abstandes ist es egal, ob die Positionsteile positiv oder negativ sind.
Bei der Differenz kann es nur - wie auch bei nur positiven Koordinaten - zu negativen Ergebnissen mit dem selben Betrag kommen.
Das Vorzeichen von diesem Zwischenergebnis ist aber egal, da dieses quadriert wird.
Dieses Ergebnis muss auch positiv sein, da die Wurzelfunktion sonst "NaN" zurückgibt.
Und sonst gibt sie nur positive Ergebnisse zurück.
->Was machst du dir für Sorgen? Wink

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
  • Zuletzt bearbeitet von mpmxyz am Mi, Jan 20, 2010 22:16, insgesamt einmal bearbeitet

Midimaster

BeitragMi, Jan 20, 2010 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
was willst du denn mit dem Pythagoras anstellen? Kommt es Dir auf die Richtung an? Oder interessiert Dich nur die Länge der Strecke. Oder fehlt einfach das IF in deiner Zeile?

Nicdel

BeitragMi, Jan 20, 2010 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, dass es ihm um den Abstand geht. Aber da sind die Vorzeichen egal. Kleiner Tipp: a*a ist schneller als a².
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

M0rgenstern

BeitragMi, Jan 20, 2010 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Midimaster: Das If hab ich nur nicht mitkopiert.

Meine ganze Funktion sieht so aus:

Code: [AUSKLAPPEN]
Function CreateHouse() ;Die Häuser werden hier erstellt
   
   For i = 1 To Rand(30,40)
      
            Haus.THaus = New THaus
            Haeuser = Haeuser + 1
            
            Haus\HArt = 1
            Select Haus\HArt
               Case 1
                  Haus\HImage = Haus1
            End Select
            
            Haus\HX = Rand(-1924,1924)
            Haus\HY = Rand(-668,668)
            Haus\HNr = Haeuser
            Haus\HDead = 0
            
      ;EndIf
         
         Next
      
      For Blubb.THaus = Each THaus
         For Haus.THaus = Each THaus
            If Haus\HNR <> Blubb\HNr Then
               Local Viel = 0
               Local Gesetzt = 0
         ;If Blubb\HNr <> Haus\HNr Then
               Repeat
                  Viel = Viel + 1
                  ;Local X = 0
                  ;Local Y = 0
            
                  If Pythagoras((Abs(Blubb\HX)), (Abs(Blubb\Hy)), (Abs(Haus\Hx)), (Abs(Haus\HY))) <= 80 Then
                     Haus\HX = Rand(-1924,1924)
                     Haus\HY = Rand(-668,668)
                     
                  Else
                     Gesetzt = 1
                  EndIf
                  
            
;            If (((Blubb\HX+70) >= (NeuX - 70)) And ((Blubb\HX+70) <= (NeuX + 70))) Or (((Blubb\HX-70) >= (NeuX - 70)) And ((Blubb\HX+-70) <= (NeuX + 70))) Then
;               NeuX = Rand(-1924,1924)
;               X = 1
;            EndIf
;            If (((Blubb\HY+70) <= (NeuY - 70)) Or ((Blubb\HY-70) >= (NeuY + 70))) Or (((Blubb\HY-70) <= (NeuY - 70)) Or ((Blubb\HY+70) >= (NeuY + 70)))  Then
;               NeuY = Rand(-668,668)
;               Y = 1
;            EndIf
            
;            If Viel >= 1000 Then
;               ;Delete Haus.THaus
;               Exit
;            EndIf
            
               Until Gesetzt = 1 Or (Viel >= 1000)
            EndIf
         If Gesetzt = 0 Then Haus\HDead = 1
      Next
   Next
      
   For Haus.THaus = Each THaus
      If Haus\HDead = 1 Then Delete Haus.THaus
   Next
   
End Function


Ich will einfach die Koordinaten für meine Häuser abgleichen mit allen anderen Häusern.
So dass kein Haus auf dem anderen liegt.
Bzw wenn dies nach einer bestimmten Anzahl von Versuchen immernoch der Fall ist das Haus einfach gelöscht wird.
Aber das funktioniert einfach nicht.
Das Bild ist 100*100 Pixel groß.
Und Die Koordinaten stehen für den Bildmittelpunkt.
Ich habs auch schon mit Pythagroas(...) < 120 versucht.
Aber es hilft alles nichts.
Die Häuser überlappen sich trotzdem immer wieder.
Und dementsprechend werden auch keine gelöscht.

Lg, M0rgenstern

Midimaster

BeitragMi, Jan 20, 2010 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
so wird das nix

dein denkansatz ist falsch. du stellst erst alle häuser hin und dann vergleichst du sie. dabei stelltst du sie dann vielleicht wieder neu in den weg.

Erstell doch eines und dann vergleich es mit allen anderen und wiederhol das so lange bis dieses eine Haus passt.

Tipp:
lass dir schon beim erstellen eines jeden hauses die ganze stadt anzeigen, damit du siehst, wie dein algo arbeitet. Am besten noch mit einem Waitkey(), damit immer nur 1 haus dazukommt.

M0rgenstern

BeitragMi, Jan 20, 2010 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab schon versucht das folgendermaßen zu machen:
Am Anfang der Funktion ein Haus erstellen.
Dann in die For Schleife für die Anzahl.
Dann die Koordinaten holen und mit allen bisher erstellten Häusern vergleichen (Durchlauf 1: nur mit einem).
Das war eigentlich das gleiche wie das was ich da geschrieben habe.
Nur dass halt einfach ansonsten kein Haus erstellt wurde wenn die Koordinaten immer zu nah waren (nach 1000 Schleifendurchläufen pro Haus, also genau wie da).
Aber der hat sich dann immer in ner Endlosschleife aufgehangen und Warum weiß ich nicht.

Midimaster

BeitragMi, Jan 20, 2010 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
auf dein 4000x1300 Gelände passen ja theoretisch über 500 häuser. Achte vor allem darauf, dass du das neue Haus nicht mit sich selbst vergleichst!!!!

BlitzBasic: [AUSKLAPPEN]
Function CreateHouse() ;Die Häuser werden hier erstellt
For i = 1 To Rand(30,40)
Repeat
Zusammenstoss=0
NeuX%=Rand(...)
NeuY%=Rand(...)
For j.THaus = Each THaus
If Pythagoras(NeuX, NeuY, J\hX ,J\hY)<120
ZusammenStoss=1
Exit
EndIf
Next
Until Zusammenstoss =0

Haus.THaus = New THaus
Haus\HX = NeuX
Haus\HY = NeuY
Haeuser = Haeuser + 1
...



Also erst X und Y wählen, dann nur die Koordinaten mit den bestehenden Häusern vergleichen, und zuletzt daraus ein Haus machen
  • Zuletzt bearbeitet von Midimaster am Mi, Jan 20, 2010 23:00, insgesamt einmal bearbeitet

M0rgenstern

BeitragMi, Jan 20, 2010 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hab ich versucht.
Dadurch kam ich in die Endlosschleife.

Wenn du genau hinguckst, dann siehst du dass ich in der Schleife noch ne if Abfrage drin hab die überprüft ob die Nummern der Häuser ungleich sind.
Also wird das Haus nicht mit sich selbst verglichen.

Lg, M0rgenstern

Midimaster

BeitragMi, Jan 20, 2010 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Also jetzt probier ich mal das Beispiel, dass ich dir geschrieben habe....


so ich hab es auf das wesentliche reduziert und das funktioniert:

BlitzBasic: [AUSKLAPPEN]
Type THaus
Field hx%,hy%
End Type



CreateHouse
End


Function CreateHouse()
For i = 1 To Rand(30,40)
Repeat
Zusammenstoss=0
NeuX%=Rand(-2000,2000)
NeuY%=Rand(-600, 600 )
For j.THaus = Each THaus
If Pythagoras(NeuX, NeuY, J\hX ,J\hY)<120
DebugLog "Pythagoras sagt nein wegen Distanz" + Pythagoras(NeuX, NeuY, J\hX ,J\hY)
ZusammenStoss=1
Exit
EndIf
Next
Until Zusammenstoss =0
Haus.THaus = New THaus
Haus\HX = NeuX
Haus\HY = NeuY
Print "neues haus "+inb
WaitKey()
Next
End Function


Function Pythagoras(x1,y1,x2,y2)
Return Sqr( (x1-x2)^2 + (y1-y2)^2)
End Function



Und noch was:

dein Pythagoras-Aufruf funktioniert so nicht:

Pythagoras((Abs(Blubb\HX)), (Abs(Blubb\Hy)), (Abs(Haus\Hx)), (Abs(Haus\HY))) <= 80


da würden ja die Häuser in den 4 Quadranten gleich behandelt. Also darf da kein ABS hin!
  • Zuletzt bearbeitet von Midimaster am Do, Jan 21, 2010 11:17, insgesamt einmal bearbeitet

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jan 20, 2010 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf ein 4000x1300 Gelände passen nicht einmal in optimaler Anordung 400 Häuser, wenn erst ab einem Abstand von 120 ein Haus gezeichnet werden kann. Dann muß man noch davon ausgehen, dass viele Häuser mit einem Abstand von 180, 190, 200, 210, 220, 230 zu anderen stehen. Und da zwischen passt dann auch kein Haus mehr, da zu jeder Richtung weniger als 120 zum Nachbarhaus steht. So viel dazu.

Generell sind solche Arten von Schleifendurchläufen überhaupt schon als Verboten anzusehen sie zu programmieren. Denn man kann als Programmierer in vielen Fällen eine Endlosschleife nicht komplett ausschliessen. So programmiert man nicht. Ein Feld mit durcheinander wirkenden Objekten sollte von daher anders rum programmiert werden.

Möglichkeit 1 Prinzip-Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer FrontBuffer()

For Y=0 To 600 Step 10
   For x=0 To 800 Step 10
      Plot x+Rand(0,9),y+Rand(0,9)
   Next   
Next

WaitKey


Möglichkeit 2 mit dem Prinzip der Fehlerstreuung welche zum Beispiel in früheren Grafikformaten oft benutzt wurde, um nicht struktuierte Streumuster auf ein Bild zu bekommen, wenn die Farbtiefe zu gering war. Dazu findet sich sicherlich etwas Sinnvolles im Internet. Aber ich finde das Prinzip 1 schon sehr zufriedenstellend.

P.S.

Ansonsten ist es Sqr egal ob positive oder negative Werte berechnet werden. Deine ganzen Abs da, kannst du gleich wieder raus schmeissen. Dein Problem mit der Endlosschleife hat nichts mit dem Draw3D-Koordinatensystem zu tun. Wink

Edit1: Das Prinzip 1 könnte man natürlich noch optimieren. So das jede Zweite Zeile und Spalte jeweils die Mitte aus vier Nachbarn berechnet wird. Eventuell gibt es dann ein besseres Ergebnis.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Midimaster

BeitragMi, Jan 20, 2010 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja nun wirklich quatsch!

1.
er erstellt nur 40 Häuser. Also kann von einer überlastung des geländes nicht ausgegangen werden. Eine erste Überlastung kann erst bei 120 Häusern auftreten:

worst case: 99pixel nach dem einen Haus kommt das nächste, dann passt da keines mehr dazwischen. Also ist das schlimmste alle 200 pixel ein haus

4000/ (100+100) = 20
1300/(100 +100)= 6

6x20=120

2. wenn er mit ABS(x) in die Pythagoras reingeht, dann ist es für die Vergleichsfunktion so, als ob alle Häuser im 4.Quadranten stehen.

Beispiel: Ein Haus auf -100/-100 wird verglichen mit einem Haus auf 150/150. Weil er schon ABS macht beim Aufruf, kommt es zu SQR ( (100-150)^2+(100-150)^2 ) =50!!! Obwohl die Häuser über 250 pixel auseinanderliegen.

FAZIT er kann ABS nicht nur rausnehmen, sonder er MUSS.

Und mein code funzt doch schon, oder?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Jan 21, 2010 0:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte mir dein Code nicht angesehen. Sorry. Aber auch hier gibt es was zu meckern.

Eine For/Next-Schleife sollte einen festen Wert haben, auf welches hin gezählt wird. Ist der Zielwert eine ständig ändernde Zufallszahl, dann wird die Schleife verlassen, sobald einmal die Zufallszahl kleiner als die bisherig gezählte Summe ist.

Code: [AUSKLAPPEN]
SeedRnd MilliSecs()

While Not KeyHit(1)
   For i=1 To Rand(1,100)
      s=i
   Next
   
   Delay 200
   Print s
Wend

WaitKey

Diese Schleife zählt kaum einmal mehr als auf 20 hinaus. Weil immer schon vorher einmal ein zufällig kleinerer Wert gesetzt wird, womit die Schleife dann abbricht. Besser ist, den Zielwert vorher zwischen zu speichern. Außer natürlich, man will genau so eine unlinieare Verteilung haben. Aber auch hier gibt es Wege es direkt zu berechnen. Da wäre zum Beispiel die Potenz ein möglicher Weg.

Zu deinem ''1''. Wenn da steht If Pythagoras(NeuX, NeuY, J\hX ,J\hY)<120 dann gehe ich von 120 Pixeln aus, nicht von 100. Daher auch 4000/120 usw... Eine mögliche Ineinanderschiebung - also statt quadratische Anordnung eine ideale Dreiecks-Ordnung - hab ich mal auér Acht gelassen. Denn, der Verschleiss ist hier schon viel größer (denn zwischen 239 Pixel passt eben dann kein Haus mehr rein). Du hast aber Recht damit, dass bei 40 Häusern noch keine Überlastung vorkommt. Das Problem rührt einzige und allein auf die Abs bei Sqr. Das gehört da nicht rein.

Trotz allem würde ich es versuchen folgende Versuchanordnung mal anzusehen. Denn diese kommt ganz ohne Try&Error aus, welche unter Umständen zu einer Endlosschleife führen kann.

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()

While Not KeyHit(1)
   
   For y=0 To 4
      For x=0 To 7
         Rect x*100+Rand(0,60),y*120+Rand(0,80),40,40,0
      Next
   Next
   
   Flip
   Delay 1000
   Cls
Wend

WaitKey

Das erkennen einer Rasterung ist minimal.

Edit1: Also deine (100+100) sind nicht ganz richtig. Natürlich hat ein Haus dann links und recht jeweils 100 Pixel Freiraum. Aber jedes Haus teils sich sein Freiraum zur Hälft mit dem Nachbarhaus, womit (100+100) geteilt durch zwei gerechnet wird. Dabei bleibt dann wieder 100 übrig, und die richtige Rechnung wäre 4000/100.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Midimaster

BeitragDo, Jan 21, 2010 2:02
Antworten mit Zitat
Benutzer-Profile anzeigen
@hectic
das glaub ich einfach nicht!

Du hast recht bei FOR/NEXT! Jetzt wird es ja richtig chaotisch. Gerade noch wollte ich dir schreiben, dass ich noch nie so einen Quatsch gehört habe...aber du hast Recht. Wo gibt es denn sowas?

BlitzBasic: [AUSKLAPPEN]
For j=0 To 1000
Local i%
For i=0 To Rand(1,100)
Next
sum=sum + i
runde=runde +1
Next
Print sum/runde
sum=0
runde=0
For j=0 To 1000
Local a%
a= Rand(1,100)
For i=0 To a
Next
sum=sum + i
runde=runde +1
Next
Print sum/runde


Das ist völlig gegen die Regeln! FOR/NEXT verhält sich ja in BB und B3D so wie While/Wend? Das ist mir völlig neu. Deshalb hatte ich seinen Code hier auch gar nicht beanstandet. Normalerweise wird doch die Abbruchbedingung Ende bei "FOR I=Start To Ende" nur zu Anfang gesetzt und ist dann fix, oder?

Dann geht ja sowas auch nicht:

BlitzBasic: [AUSKLAPPEN]
i=12
For i=0 To i
Next


Mal gleich sehen, ob das bei BMax auch so ist....

[EDIT:] Entwarnung! Auf BMax tritt diesen Phänomen nicht auf.

Danke für diesen Hinweis. Da muss ich ja gleich mal ein paar Programme von mir durchsehen....


Aber mit dem 100er-Abstand hast Du nicht Recht. Theoretisch könnten die Häuschen so stehen:

Zitat:
das erste bei X=99-199
das zweite bei X=298-398
das dritte bei X=497-597
so bekommst du nur 20 auf die erste reihe.

die erste reihe wäre dann bei Y=99-199
die zweite reihe wäre dann bei Y=298....
so bekommst du nur 6 Reihen rein


So, und wenn jetzt noch ein Haus kommt, passt es nirgends mehr rein. Also beginnen die Probleme frühestens ab 120 Häuser. Bis dahin ist aber keine Konstellation denkbar, die ebenfalls bereit "voll" wäre.

Die "120pixel" beim Abstandstest hatte er vorgeschlagen. Vielleicht will er eine kleine Überlappung erlauben. Sicher überlappungsfrei wären sie mit Pythagoras erst bei 141pixel.
  • Zuletzt bearbeitet von Midimaster am Do, Jan 21, 2010 2:25, insgesamt einmal bearbeitet

Noobody

BeitragDo, Jan 21, 2010 2:19
Antworten mit Zitat
Benutzer-Profile anzeigen
In B3D wird das Schleifenende bei jedem Durchlauf neu ausgewertet, in BMax allerdings nicht. In B3D vielleicht noch sinnvoll, da man als Anfänger öfter mal ein variables Ende der Schleife will (zumindest machte ich das früher oft so). Eine Konstruktion wie beispielsweise die mit Rand (ReadInt/Byte/etc.-Befehle sind auch gefährlich) kommt meiner Ansicht nach eher seltener vor.

Da die Häuser ja rechteckig sind, wäre eine Überprüfung per RectsOverlap vielleicht sinnvoller (vor allem auch schneller, aber bei 40 Häusern fällt das längst nicht ins Gewicht).

Bei der Setzmethode würde ich nun hectics Ansatz vorziehen. Das liegt zum einen an der Geschwindigkeit (wobei das in diesem Fall wirklich nicht viel ausmacht), und zum anderen auch daran, dass eine zufällige Verteilung über die ganze Karte, wie beim ursprünglichen Code, dazu führen kann, dass Häuser sich an manchen Stellen konzentrieren und grosse, freie Flächen dazwischen liegen, was ja nicht sein sollte. Bei hectics Methode ist garantiert, dass solche Flächen nicht entstehen können.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

M0rgenstern

BeitragDo, Jan 21, 2010 9:48
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Midimaster:

Du hast geschrieben:

BlitzBasic: [AUSKLAPPEN]
Function Pythagoras(x1,y1,x2,y2)
Return Sqr( (x1-x2)^2 * (y1-y2)^2)
End Function


Dein Pythagoras stimmt nicht.
Denn die Formel für Pythagoras ist a²+b² du hast aber geschrieben a²*b²!
Das nur mal nebenbei, sorry.

Wegen der Forschleife:
Ich dachte auch, dass nach dem ersten Schleifendurchlauf der Endpunkt fix ist, ansonsten hätte ich das ganze anders gebaut.

Nochwas wegen Pythagoras: MidiMaster hat schon recht. Durch das Abs liegen alle Häuser für diese Funktion nur im ersten Quadranten.

Wegen den Häusern:

Hectics Lösung leuchtet mir ein, werde ich wenn ich zuhause bin mal testen.

Lg, M0rgenstern

Midimaster

BeitragDo, Jan 21, 2010 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, danke Morgenstern! Blöder Tippfehler. Es muss natürlich "+" heißen. Ich hab es gleich korrigiert. (Nicht, dass es spätere Generationen das noch abschreiben Wink )

Möchtest Du die Verteilung eher gleichmäßig oder total chaotisch. Ich habe nämlich den Eindruck bei Hectics Lösung sieht das zu ordentlich aus. Häuser stehen ja gerne mal "im Dorf". und dann wieder große "Felder" dazwischen. Da ist Deine Methode realistischer. Und nun fiunktioniert sie ja wohl auch, oder?

FireballFlame

BeitragDo, Jan 21, 2010 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Für den Pythagoras sollte man aus Geschwindigkeitsgründen übrigens lieber blub*blub verwenden als blub^2.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Midimaster

BeitragDo, Jan 21, 2010 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
@FireFlame

Ja stimmt! Damit kann er pro Aufruf 0.00000025 sec sparen. Rolling Eyes Aber nur wenn er meinen Uralt-Laptop verwendet. Auf einem aktuellen Rechner wird es wohl 1.000.000 Aufrufe benötigen, bis eine Millisekunde messbar ist. Wink

M0rgenstern

BeitragDo, Jan 21, 2010 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, @ FireBallFlame:
Pythagoras rufe ich momentan ein einziges mal im Programm auf und dann nicht mehr (also nur in dieser Schleife), deshalb dürfte das das kleinste Problem sein.

@MidiMaster:

Also, meine Lösung funktioniert noch nicht.
Aber ich hab deine Möglichkeit noch nicht getestet. Komme grade erst aus der Schule.

Allgemein:

Die Verteilung sollte einigermaßen zufällig erscheinen.
Von daher dürfte Hectic's Lösung ganz gut sein. Wenn nicht erhöhe ich die Randzahlen ein wenig.

Ich probier alles gleich mal

Lg, M0rgenstern

Vielen Dank für eure Hilfe.

EDIT:

Also, mit ein wenig jonglieren mit den Zahlen funktioniert Hectics Lösung zwar, aber das Ergebnis ist nicht das gewünschte.
Es sieht wirklich wie ein Raster aus.

Aber der Code von MidiMaster funktioniert auch nicht.
Ich werd mal versuchen da ne Bedingung reinzubsten, dass das Haus NICHT erstellt wird, wenn die Koordinaten nicht passen.

Lg, M0rgenstern
  • Zuletzt bearbeitet von M0rgenstern am Do, Jan 21, 2010 15:45, insgesamt einmal bearbeitet

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group