Pixel - Rate

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Ich schätze mal, Primzahlen eignen sich ganz besonders für den Blendmode.
Ich habe jetzt auch mal ein paar ausprobiert. Allerdings scheint meine Theorie nicht ganz die beste zu sein.
Aber 29 und 100005 sind doch ganz schön.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nicht primzahlen selbst, sondern solche, die primzahlen für die Schrittweite ergeben

Schrittweite = Mode*2+1

3 => 7 = primzahl
5 => 11 = primzahl
6 => 13 = primzahl
8 => 17 = primzahl
...etc, etc

[edit]

@Nic

aber der Algo is doch interessant, oder?
...ebenso einfach wie wirkungsvoll...
Zuletzt geändert von Kaeru Gaman am 27.03.2005 16:07, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ich glaube das wollte er:

Code: Alles auswählen

Dim ScreenBuffer.l(799, 599)

If InitSprite() And InitKeyboard()
If OpenScreen(800, 600, 32, "Test")


Repeat
  ExamineKeyboard()
  ClearScreen(0, 0, 0)
  StartDrawing(ScreenOutput())
  For x=0 To 799
    For y=0 To 599
      
      If Random(5) = 5 And ScreenBuffer(x, y) <> RGB(255, 0, 0)
        
        ScreenBuffer(x, y) = RGB(255, 0, 0)
        
      EndIf
      
      Plot(x, y, ScreenBuffer(x, y))
      
    Next
  Next
  StopDrawing()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

EndIf
EndIf
End
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

das denk ich auch darkdragon nur am schluss sollte es ein bischen schneller gehen
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

DarkDragon hat geschrieben:Ich glaube das wollte er:
Auch das wäre eine Lösung
klingt weniger eingebildet


Das ist eine ziemlich Gute Lösung!

allerdings fehlt eine absolute endbedingung...

....setz das mal für das Sprite-to-Sprite-blending um ;)

zigapeda hat geschrieben:das denk ich auch darkdragon nur am schluss sollte es ein bischen schneller gehen
das liegt an dem Random...

deshalb von mir der algorythmus...

evtl. könnte man DDs Lösung durch ein Volleinsetzen nach einer gewissen Zeit ergänzen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Hmm... ich hab eure Antworten gelesen, aber ich glaube nicht dass er den Screen mit blending füllen wollte :? Ich hab meine antwort auch nicht eingebildet gemeint ich dachte nur dass man ihn nicht richtig verstanden hatte. Naja, was solls, ist ja auch egal ;) .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ok, DD... hab dich falsch aufgefasst
also, bitte meine bemerkung nicht übelnehmen...

ich hab halt nur ne Sprite-Blending-Routine erstellt, weil das, was GS wollte,
damit grundsätzlich machbar ist, aber die anwendungen vielfältiger.

mir gings in erster line um den algo, in meinem zweiten beispiel hab ich ja
auch ein reines Plot eingebaut, kein SpriteBlending.

ich such grad wie ein blöder ein altes C-Handbuch, da war ne Random-Routine drin...
die funktioniert nämlich irgendwie mit plus-krumme-zahl und bereichs-beschränkung...
wenn man die richtig umsetzt, schlägt man zwei fliegen mit einer klappe:
zufälliges Füllen und jeder Punkt nur einmal...

[edit]
hmmm.... hab grad mal spasseshalber folgenden test gefahren:

Code: Alles auswählen

Dim a(480000)

For n=0 To 479999
    x = Random(479999)
    If a(x) = 0
        a(x) = 1
    Else
        Debug x
    EndIf
Next
es scheint, als ob Random doch ne menge zahlen doppelt erzeugt....

man müsste halt mal für den Algo ne sinnvolle Step-grösse ermitteln...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten