John B Skrevet 30. desember 2004 Del Skrevet 30. desember 2004 Noen av dere som har erfaring med Tiny PTC, eller har noen eksempler som passer for en nybegynner ? Jeg bruker da pakken til C++. Lenke til kommentar
saboi Skrevet 30. desember 2004 Del Skrevet 30. desember 2004 (endret) jeg har laget en raytracer og en fraktalviewer ikke så veldig vanskelig hvis du vil ha et eksempel kan du se på fraktalkoden her // // TinyPTC by Gaffer // www.gaffer.org/tinyptc // #include "tinyptc.h" #include <math.h> #include <stdio.h> #define WIDTH 640 #define HEIGHT 480 #define SIZE WIDTH*HEIGHT #define MAXIT 256 /* maximum number of iterations */ static int pixel[SIZE]; typedef struct _cmplx { double real, imaginary; } cmplx; typedef struct _step { double x, y; } step; cmplx add(cmplx* a, cmplx* b) { cmplx tmp; tmp.real = a->real + b->real; tmp.imaginary = a->imaginary + b->imaginary; return tmp; } cmplx mul(cmplx* a, cmplx* b) { cmplx tmp; tmp.real = (a->real * b->real) - (a->imaginary * b->imaginary); tmp.imaginary = (a->imaginary * b->real) + (a->real * b->imaginary); return tmp; } double modulus(cmplx* a) { return sqrt((a->real * a->real) + (a->imaginary * a->imaginary)); } int is_in_set(cmplx* c) { int iterations = 0; cmplx z = *c; cmplx t; while(iterations < MAXIT) { t = mul(&z, &z); z = add(&t, c); if(modulus(&z) > 2.0) return iterations; iterations++; } return 0; } step make_grid(double xmin, double xmax, double ymin, double ymax) { step tmp; double deltax = xmax - xmin; double deltay = ymax - ymin; tmp.x = deltax/WIDTH; tmp.y = deltay/HEIGHT; return tmp; } int main() { int index, x, y; int color = 0x00; int background = 0xffffffff; cmplx point; int iters; step stp = make_grid(-1.5, 0.5, -1.0, 1.0); if (!ptc_open("mandelbrot",WIDTH,HEIGHT)) return 1; while (1) { for(x=0; x < WIDTH; ++x) { for(y = 0; y < HEIGHT; ++y) { point.real = -1.5; point.imaginary = 1.0; point.real += x * stp.x; point.imaginary -= y * stp.y; iters = is_in_set(&point); if(iters == 0) pixel[y * WIDTH + x] = color; else { pixel[y * WIDTH + x] = background; } } } ptc_update(pixel); } } denne plotter mandelbrotsettet z = z^2 + c hvor z og c er komplekse tall. jeg har dog ikke lagt til noe tøffe fargegreier men det er rimelig greit når du vet hvor mange iterasjoner det tar før et punkt "slipper unna". det er også rimelig lett å zoome seg inn, men det har jeg heller ikke giddet å lagt til. lagde den på et par timer bare siden jeg ville lære meg komplekse tall Endret 30. desember 2004 av saboi Lenke til kommentar
John B Skrevet 1. januar 2005 Forfatter Del Skrevet 1. januar 2005 Tar imot alt av eksempler, takk for at du delte litt av din erfaring Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå