Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Circle - ohne zu überlappen / sich zu schneiden?
Gehe zu Seite Zurück  1, 2, 3
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1280
Wohnort: Ruhrpott

BeitragVerfasst am: 19.07.2014, 10:37    Titel: Antworten mit Zitat

Und das Fenster auf 1280 x 1024! Irre! grinsen

Wäre eine tolle Idee als Kunstwerk für eine Designerwohnung - auf 'nem 90er Plasmaschirm! grinsen

Gruß
grindstone

EDIT: Ich meine natürlich 90 Zoll! lächeln
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!


Zuletzt bearbeitet von grindstone am 19.07.2014, 11:04, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1280
Wohnort: Ruhrpott

BeitragVerfasst am: 19.07.2014, 11:02    Titel: Antworten mit Zitat

@creepi:
Zitat:
wenn jemand 100+ planeten hat wäre pset schneller

Bitte sehr! Hier die etwas verfeinerte Kreiswolke mit 200 Kreisen:
Code:
#Include "fbgfx.bi"

Type Kreis
   x As Single
   y As Single
   r As Single
End Type

Const pi As Double = ACos(0)*2
Const pi2 As Double = 2 * pi

Declare Function Quad OverLoad (s As Double) As Double
Declare Function Quad(s As Single) As Single
Declare Sub Kreiszeichnen(k() As kreis, index As Integer)

Dim As Integer i
Dim Shared As Any Ptr hg

Dim As kreis k(1 To 200)     
Dim As Integer p(UBound(k))

ScreenRes 1280,1024,32,,FB.GFX_ALPHA_PRIMITIVES

Randomize Timer
For i = 1 To UBound(k) 'zufällige kreise erstellen
   k(i).x = Rnd * 1280 + 10
   k(i).y = Rnd * 600 + 10
   k(i).r = 0
Next

'hintergrundbild mit zufallsmuster füllen
hg = ImageCreate(1280,1024,RGB(Rnd*255,Rnd*255,Rnd*255)) 'pufferspeicher für hintergrundbild anlegen

For y As Integer = 0 To 1023
   For x As Integer = 0 To 1279
      PSet hg,(x,y),RGBA(Rnd*255,Rnd*255,Rnd*255,100)
   Next
Next

Put (0,0),hg 'hintergrundbild auf bildschirm schreiben

Do 'kreise zeichnen
   For i = 1 To UBound(k) 'alle kreise
      Kreiszeichnen(k(),i)
   Next
   For i = 1 To UBound(k) 'radien vergrößern
      k(i).r += .1
   Next
   Sleep 50
Loop While InKey = ""

ImageDestroy hg 'speicher freigeben

Function Quad(s As Double) As Double
  Return s * s
End Function

Function Quad(s As Single) As Single
  Return s * s
End Function
Sub Kreiszeichnen(k() As kreis,i As Integer)
   Dim As Integer p(UBound(k))
   Dim As Integer x,z,j,sichtbar
   Dim As Double w,s,c,r,xp,yp,mx,my,rk
   
   r = k(i).r + 2
   mx = k(i).x
   my = k(i).y
   'feststellen, welche Kreise berührt werden
   z = 0
   For x = 1 To UBound(k)
      If x <> i Then
         If (Quad(mx - k(x).x) + Quad(k(i).y - k(x).y)) < (Quad(r + k(x).r)) Then 'kreise überschneiden sich
            z += 1
            p(z) = x 'index des kreises in liste schreiben
         EndIf
      EndIf
   Next
      
   For w = 0 To pi2 Step 1/r 'schrittweite so wählen, daß eine geschlossene linie entsteht
      s = Sin(w)
      c = Cos(w)
      xp = mx + c * r 'kreispunktkoordinaten
      yp = my + s * r
      sichtbar = 1 'flag für "punkt setzen"
      For j = 1 To z 'alle überschneidenden kreise
         If Quad(xp - k(p(j)).x) + Quad(yp - k(p(j)).y) < Quad(k(p(j)).r) Then 'abstand vom mittelpunkt ist kleiner als der radius
            sichtbar = 0 'punkt nicht setzen
            Put(xp-1,yp-1),hg,(xp-1,yp-1)-(xp+1,yp+1),PSet 'eventuelle artefakte beseitigen
            Exit For 'prüfung abbrechen
         EndIf
      Next
      If sichtbar Then
         PSet(mx + c * (r + 5),my + s * (r + 5)),RGBA(255,255,255,4) 'aussenkreise mit abnehmender
         PSet(mx + c * (r + 1),my + s * (r + 1)),RGBA(255,255,255,30) ' transparenz zeichnen
         PSet(mx + c * r,my + s * r),RGBA(255,255,255,255) 'kreis in vollfarbe
         xp = mx + c * (r - 1)
         yp = my + s * (r - 1)
         Put(xp,yp),hg,(xp,yp)-(xp,yp),Alpha,10 ' hintergrundbild mit abnehmender transparenz wiederherstellen
      EndIf
      xp = mx + c * (r - 5)
      yp = my + s * (r - 5)
      Put(xp-1,yp-1),hg,(xp-1,yp-1)-(xp+1,yp+1),PSet 'hintergrundbild mit vollfarbe wiederherstellen            
   Next
End Sub




Durch die bei jedem Durchlauf abnehmende Transparenz im Randbereich ensteht der Eindruck einer fließenden Bewegung, auch wenn sich der Radius nicht ändert.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
creepi



Anmeldungsdatum: 13.06.2010
Beiträge: 59

BeitragVerfasst am: 19.07.2014, 15:26    Titel: Antworten mit Zitat

Kannste knicken, ich bleib bei mein weg aaaaaaaaber... drauf habt ihr es ja mal alle male, irrer haufen ey.

Hast es aber echt gut beschrieben lächeln
Wenn man es sich anschaut, überall netten kommentar das man auch durchsteigen kann lächeln
mein script sieht dagegen irgend wie ein klein wenig anders aus *g* ; D
arbeite zb ohne funktion. weiß noch nicht so recht was mit anzufangen weil et läuft auch gut ohne... subs nutze ich aber... ; )
aber danke für das schöne beispiel, respekt. auch an die anderen mal so ganz neben bei... : )

Edit: Irgend wie juckt es mir nu scho ein bissel in den fingerchen, werd mal schauen, ob ich es noch hinbekomm später das projekt vorzustellen.
Müsste dafür aber noch was am server drehen falls der eine oder andere es mal mit wem im mp-testen mag. mal gucken...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1280
Wohnort: Ruhrpott

BeitragVerfasst am: 20.07.2014, 02:51    Titel: Antworten mit Zitat

creepi hat Folgendes geschrieben:
mein script sieht dagegen irgend wie ein klein wenig anders aus
Sind ja auch echt lästig, diese Kommentare, schließlich weiß man doch, was man da macht.

In einem Lehrbuch habe ich dazu mal den Satz gelesen: "Sie glauben gar nicht, was man in drei Wochen alles vergessen kann." Und der Autor hatte recht: Ich habe es wirklich nicht geglaubt. Bis ich zum erstenmal ein Programm, das ich ein knappes halbes Jahr vorher geschrieben hatte, überarbeiten wollte. Da habe ich dann an einigen Stellen gedacht: "Hä??" verwundert

Und auch das Zusammenfassen von klar abgegrenzten Aufgaben in Subs und Funktionen erhöht nicht nur die Übersichtlichkeit ganz enorm, sondern vereinfacht auch die spätere Wiederverwendung in anderen Programmen. Wobei man andererseits auch nicht übertreiben sollte, aber da muß jeder seinen eigenen Stil finden.

Ein anderer Satz, den man oft in Lehrbüchern findet, lautet: "Gewöhnen Sie sich gleich von Anfang einen sauberen Programmierstil an". Das halte ich nicht für empfehlenswert. Jeder sollte zuerst einmal richtig Chaos machen, um selber zu sehen, warum (und wann) es sich lohnt, "sauber" zu programmieren. Das ist auf die Dauer besser, als es irgend jemandem glauben zu müssen. zwinkern

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
creepi



Anmeldungsdatum: 13.06.2010
Beiträge: 59

BeitragVerfasst am: 20.07.2014, 04:33    Titel: Antworten mit Zitat

was machst du denn noch um kurz vor drei hier? XD
...glaub ich ich weiß wovon du redest. Hat ich auch mal. Nach gut ein Jahr nochmal Projekt vorgeholt weil ich schauen wollte wie ich es damals gelöst hatte.... au weier grinsen
Wenn man gerade dran rum Programmiert sieht alles so logisch aus.
Lässt man eine weile die finger von dem projekt, dauerts bis man wieder durchsteigt XD
Eines hab ich bei dem jetzigen Spiel anders gemacht, die dim blabla-namen so gewählt das man die auch besser zu ordnen kann. Einmal so lang das die max länge erreicht wurde, das war etwas uncool, kurz gestuzt und etwas abgekürzt happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 20.07.2014, 08:21    Titel: Antworten mit Zitat

Zitat:
Jeder sollte zuerst einmal richtig Chaos machen, um selber zu sehen, warum (und wann) es sich lohnt, "sauber" zu programmieren.

Für mich ist das nichts. Ich brauche von Anfang an eine gewisse Struktur, um mich überhaupt in meinem Programm zurechtzufinden. Natürlich erarbeitet man sich diese Struktur nach und nach und man sieht, was besser funktioniert und was schlechter, aber mit richtigem Chaos wäre ich schon in den ersten Programmiertagen nicht zurechtgekommen.

Ich sehe das eher als eine Sache der Gewohnheit. Wenn ich von Anfang an gewohnt bin, sauber zu arbeiten, "weiß" ich ja gar nicht, wie es chaotisch geht und muss mir gar keine Gedanken darüber machen, ob und warum es sich lohnt, sauber zu programmieren - ich mache es einfach. happy

Aber da ist jeder ein eigener Lerntyp.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1280
Wohnort: Ruhrpott

BeitragVerfasst am: 20.07.2014, 10:07    Titel: Antworten mit Zitat

creepi hat Folgendes geschrieben:
was machst du denn noch um kurz vor drei hier?
Und selber? grinsen
creepi hat Folgendes geschrieben:
...glaub ich ich weiß wovon du redest.
Einsicht ist der erste Schritt zur Besserung. zwinkern
creepi hat Folgendes geschrieben:
die dim blabla-namen so gewählt das man die auch besser zu ordnen kann.
Sprechende Namen sind für die Lesbarkeit eines Programms sehr nützlich. Beim Entwickeln und Testen kann man ja einzelne Buchstaben oder Abkürzungen verwenden, aber spätestens, wenn der Programmabschnitt fehlerfrei läuft, sollte man sie austauschen.

@nemored: Wie schon gesagt: Jeder muß seinen eigenen Stil finden. Ich persönlich bin ein überzeugter Anhänger des "learning by doing". Das ist zwar nicht die schnellste, aber mit Sicherheit die nachhaltigste Lernmethode, nicht nur beim Programmieren (was nicht heißt, daß man sich nicht von anderswo Rat und Unterstützung holen sollte). Erst, wenn man selbst ein(paar)mal ein Programm geschrieben hat, bei dem man am Ende nicht mehr durchblickt und selbst sieht, daß (und warum) das sch...lecht ist, wird man sich in Zukunft konsequent um Übersichtlichkeit bemühen, weil das nämlich immer mit zusätzlicher Arbeit verbunden ist (die sich lohnt, aber das muß man halt erst einmal einsehen). lächeln

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 20.07.2014, 18:37    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
@dreael: Kann es sein, daß du die Billard-Simulation für einen etwas langsameren Rechner geschrieben hast? :D Kann man das Gewusel irgendwie langsamer machen? Ich würde mir die Simulation gerne einmal ansehen.

Ohne viel Kommentar:

http://www.youtube.com/watch?v=f_qdAX5XJYs

d.h. das Ganze einmal in DOSBox ausgeführt, wo es eine praktische Video-Capturefunktion gibt.

Bei der grünen Kugel seht Ihr recht deutlich, was ein Fliesskomma-Rendering ausmacht, insbesondere, wenn sie sich nur ganz langsam bewegt.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
creepi



Anmeldungsdatum: 13.06.2010
Beiträge: 59

BeitragVerfasst am: 21.07.2014, 01:30    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
creepi hat Folgendes geschrieben:
was machst du denn noch um kurz vor drei hier?
Und selber? grinsen

Das ist doch etwas vollkommen anderes ;D

@dreael, das ist immer witzig, aussehen tut es.... da würde jeder sagen was dat denn.. so ein schrott.... WOBEI ich jetzt nicht sagen will das es so ist!! mein ja nur rein allgemein gesprochen.... worauf ich hinaus wollt, was da hintersteckt, wenn man da mal weiter denkt... das muss man erstmal auf die beine stellen. Spontan müsst ich mir ein kopf zerbrechen wie ich den ablauf hinbekommen würde mit der kollision...... in diesem sinne, cool gemacht. lächeln

Sollte aufhören euch ständig zu loben, das bekommt langsam ein bitteren beigeschmack auf der zunge Zunge rausstrecken zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1280
Wohnort: Ruhrpott

BeitragVerfasst am: 21.07.2014, 02:02    Titel: Antworten mit Zitat

creepi hat Folgendes geschrieben:
Sollte aufhören euch ständig zu loben,
Warum denn? Mach ruhig weiter! grinsen

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
creepi



Anmeldungsdatum: 13.06.2010
Beiträge: 59

BeitragVerfasst am: 21.07.2014, 02:47    Titel: Antworten mit Zitat

grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3
Seite 3 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz