Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Fractals in VB.net

None
3 antwoorden
  • Hallo Mensen,

    Ik ben een middelbaarscholier, 6VWO, en moet een profielwerkstuk maken. Ik heb besloten als onderwerp Fractals te kiezen. We moeten een praktisch stuk uitvoeren en daarvoor wilde ik graag proberen zelf een fractal(de mandelbrot of julia) te programmeren. Ik heb niet erg veel kennis van programmeren, maar ik ken de basis principes die ik mezelf heb aangeleerd via internet. Momenteel zit ik vast bij het visueel weergeven van de fractal, zoals het onderwerp van dit bericht al zegt ik programmeer in VB.Net. Wat ik tot nu toe heb weten te doen(voor de mandelbrot) is het volgende:

    - Met complexe getallen kunnen rekenen in het programma, ik heb zv(vorige complexe getal) zn(nieuwe complexe getal) en c gedefinieerd.
    - Het invoeren van het aantal iteraties en startwaarden voor c.

    Nog niet veel dus. Ik zit vast bij het herhalen van de stappen die de computer moet uitvoeren voor het berekenen van alle punten die buiten de mandelbrot verzameling liggen. Ik gebruik nu:

    ''Code"
    dim g as Graphics
    dim mypen as new Pen(Color.White)

    g.FromHwnd(Panel1.Handle)

    For i = 1 to 2 ^ n-1

    zn = zv * zv + c

    graphics.drawrectangle(mypen, Ctype(zn + panel1.width/2, single),Ctype(zn + panel1.height/2, single),1,1)

    zv = zn

    Next i

    ''Code"

    Volgens mij klopt hier helemaal niets van, want telkens als deze handeling aan te pas komt dan geeft de computer een fout aan. Er is dan een 'overloop' fout opgetreden. Misschien bezit ik nog te weinig kennis over de mandelbrot verzameling en/of programmeren en klopt er helemaal niets van bovenstaande code. Misschien hebben jullie tips wat ik moet veranderen, of moet ik 'overstappen' naar een andere programmeertaal, of misschien toch nog eens de mandelbrot verzameling eerst eens goed bestuderen? Misschien weet iemand een goede link of boek waarin de basis van fractalprogrammeren in staat?


    Alvast bedankt,


    Willem :)
  • (0) wat is de precieze foutmelding ?
    Is het een stack-overflow ?
    Dan heb je waarschijnlijk ergens een oneindige lus zitten. Zeker als je recursie gebruikt (iets wat bij Mandelbrot bijna niet anders kan) zul je moeten opletten dat de functie ooit een einde heeft. Aangezien een fractal oneindig groot is zul je zelf ergens een grens moeten bepalen.

    (1) Heb je al eens geprobeerd te debuggen ?
    Loop stap voor stap door het programma en focus op de lus.
    Bij welke waarde van i gaat het fout ?

    (2) [code:1:b2af139cc1]Ctype(zn + panel1.width/2, single)[/code:1:b2af139cc1]
    Leer jezelf af om het berekenen van parameters direct in de aanroep van een functie te doen.
    Dit is vooral lastig tijdens het debuggen en je maakt het onmogelijk om foute waarden van te voren af te vangen.
    Ik vermoed dat jouw berekening op dit punt gewoon te grote getallen oplevert.

    (3) Welke waarde gebruik je voor n in die lus ?
    Als daar staat "2 tot de macht n-1" (ik ken geen vb) dan is dat al heel gauw een hele grote lus.

    Links :
    http://nl.wikipedia.org/wiki/Mandelbrotverzameling
    http://nl.wikipedia.org/wiki/Recursie
  • Hallo JaFO,

    Sorry voor mijn late bericht. Het is inderdaad een stack-overflow. Er staat namelijk 2 tot de macht n min één in het kwadraat. Zoals je al zegt gaat dit heel erg snel naar grote getallen. Ik ben in de war geraakt met de Dragoncurve(eerder geprobeerd vorm te geven op de PC) en Julia figuren bij deze berekening.

    Dat debuggen heb ik nog niet gedaan, dankjewel voor de tip dat is inderdaad handig om te zien waar het fout gaat. Daar had ik nog niet aan gedacht… :oops:

    Over:

    [code:1:472ee1bd9e]Ctype(zn + panel1.width/2, single)[/code:1:472ee1bd9e]

    Daar moet ik dan maar nog eens naar kijken. Het is dus handiger om dit van te voren in een variabel te berekenen en die in te voeren bij:

    [code:1:472ee1bd9e]graphics.drawrectangle[/code:1:472ee1bd9e]

    Ik zal eens kijken wat ik er nu van kan bakken. Als ik weer op vragen stuit dan post ik ze hier weer. Erg bedankt in ieder geval voor de tips en opmerkingen alvast! :)

    Groeten,


    Willem

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.