Fichier:Newtroot 1 0 0 0 0 m1.png

De testwiki
Aller à la navigation Aller à la recherche
Fichier d’origine (1 655 × 1 655 pixels, taille du fichier : 1 003 kio, type MIME : image/png)

Ce fichier provient de Wikimedia Commons et peut être utilisé par d'autres projets. Sa description sur sa page de description est affichée ci-dessous.

Transféré de en.wikipedia à Commons par Maksim.

La page de description originale était ici. Tous les noms d'utilisateur qui suivent se rapportent à en.wikipedia.

//

Cette œuvre est un logiciel libre ; vous pouvez la redistribuer ou la modifier suivant les termes de la Licence publique générale GNU telle que publiée par la Free Software Foundation, soit la version 2 de cette License, soit une version ultérieure. Cette œuvre est distribuée dans l’espoir qu’elle sera utile, mais sans aucune garantie, pas même la garantie implicite de commercialisabilité ni celle d’adéquation à un besoin particulier. Consultez la version 2 et la version 3 de la GNU General Public License pour plus de détails.


c src code

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define PI 3.1415926535897932
#define TAU (PI * 2)
#define SQ2 1.4142135623730950
#define SQ3 1.7320508075688772
#define PHI 1.6180339887498948

#define SX 1111
#define SY 1111

//////////////////MAKE PRETTY PATTERNS HERE. DPOLY must be POLY differentiated.

#define POLY(z) z *z *z *z *z + (-1)
#define DPOLY(z) 5 * z *z *z *z

// #define POLY(z)  z*z*z*z*z*z*z*z*z + (-1)
// #define DPOLY(z) 9*z*z*z*z*z*z*z*z

// #define POLY(z)  z*z*z*z*z + (-3i) * z*z*z + (-5-2i) * z*z + (3) * z + (1)
// #define DPOLY(z) 5*z*z*z*z + (-3i) * 3*z*z + (-5-2i) * 2*z + (3) * 1

// #define POLY(z)  z*z*z*z*z*z + (2-4i) * z*z*z*z*z + (-1) * z + (2+4i)
// #define DPOLY(z) 6*z*z*z*z*z + (2-4i) * 5*z*z*z*z + (-1) * 1

// #define POLY(z)  z*z*z*z*z + (-1) * z + (-1)
// #define DPOLY(z) 5*z*z*z*z + (-1) * 1

// #define POLY(z)  z*z*z*z*z + (-1) - (cos(__imag__ z)+1i*sin(__imag__ z))*exp(__real__ z)
// #define DPOLY(z) 5*z*z*z*z -         (cos(__imag__z)+1i*sin(__imag__ z))*exp(__real__ z)

#define RSD 1923879

#define BPL ((SX * 3 + 3) & ~3)

void seedr(unsigned int);
unsigned int rnd();
unsigned int rndm(unsigned int);

unsigned char bhdr[54] = {0x42, 0x4D, 0x36, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
                          0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
                          0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01,
                          0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                          0x30, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00,
                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

unsigned char po[BPL];

double gr[SY][SX][3];

void drawit();

int main(int a, char **b) {
  FILE *o;
  int x, y, c;
  double t;
  unsigned char *p; // fixed error due to conversion from unsigned char to char

  srand(time(0));
  drawit();

  p = bhdr + 2;
  *p++ = x = 54 + BPL * SY;
  *p++ = x >>= 8;
  *p++ = x >>= 8;
  *p = x >>= 8;
  p = bhdr + 18;
  *p++ = x = SX;
  *p++ = x >>= 8;
  *p++ = x >>= 8;
  *p++ = x >>= 8;
  *p++ = x = SY;
  *p++ = x >>= 8;
  *p++ = x >>= 8;
  *p = x >>= 8;

  if (!(o = fopen("newtroot.bmp", "wb"))) {
    fclose(o);
    printf("Couldn't open output file.\n");
    return (0);
  }

  fwrite(bhdr, 54, 1, o);

  for (x = SX * 3; x < BPL; ++x)
    po[x] = 0;

  for (y = SY - 1; ~y; --y) {
    for (x = 0, p = po; x < SX; ++x)
      for (c = 2; ~c; --c)
        *p++ = (t = gr[y][x][c]) <= 0 ? 0 : (t >= 1 ? 255 : t * 255);
    fwrite(po, BPL, 1, o);
  }

  fclose(o);
  return (0);
}

void drawit() {
  int x, y, c, n, bn, dx, dy, dz;
  unsigned int m, p;
  _Complex double z, w;
  double f, s;
  seedr(RSD);
  for (y = 0; y < SY; ++y)
    for (x = 0; x < SX; ++x) {
      z = (x * (10. / SX) - 5) - (y * (10. / SY) - 5) * 1i;
      w = POLY(z);

      for (f = s = 1; f > .01 && (__real__(w * ~w)) > .01;
           f *= .95, s = -s, w = POLY(z))
        z = z - w / (DPOLY(z));
      z = z - w / (DPOLY(z));

      for (n = 0; n < 10; ++n)
        z = z - (POLY(z)) / (DPOLY(z));

      z = f * (z * z) / (z * ~z);

      gr[y][x][0] = .5 * f /*+.02*s*f*/ + .24 * (__real__(z)) -
                    (SQ3 * .24) * (__imag__(z));
      gr[y][x][1] = .5 * f /*+.02*s*f*/ + .24 * (__real__(z)) +
                    (SQ3 * .24) * (__imag__(z));
      gr[y][x][2] = .5 * f /*+.02*s*f*/ - .48 * (__real__(z));
    }
}

unsigned int rseeda[624];
int rseedu;

void seedr(unsigned int s) {
  int n;
  rseedu = 624;
  rseeda[0] = s;
  for (n = 1; n < 624; ++n)
    rseeda[n] = s *= 69069u;
}

#define TEMPBLAH(x, y, z)                                                      \
  {                                                                            \
    v = (rseeda[x] & 0x80000000) | (rseeda[y] & 0x7fffffff);                   \
    rseeda[x] = rseeda[z] ^ (v >> 1) ^ (0x9908b0df & (0 - (v & 1)));           \
  }
void gennewr() {
  int n;
  unsigned int v;
  for (n = 0; n < 227; ++n)
    TEMPBLAH(n, n + 1, n + 397);
  for (; n < 623; ++n)
    TEMPBLAH(n, n + 1, n - 227);
  TEMPBLAH(623, 0, 396);
  rseedu = 0;
}
#undef TEMPBLAH

unsigned int rnd() {
  if (rseedu >= 624)
    gennewr();
  unsigned int v = rseeda[rseedu++];
  v ^= v >> 11;
  v ^= (v << 7) & 0x9d2c5680;
  v ^= (v << 15) & 0xefc60000;
  v ^= v >> 18;
  return (v);
}

unsigned int rndm(unsigned int m) {
  unsigned int v, c = (0u - m) / m;
  while ((v = rnd()) / m > c)
    ;
  return (v % m);
}
date/time username edit summary
13:01, 12 November 2005 en:User:129.177.30.18 (Fix bug: change x over [0, SY] to x over [0, SY]. Would only be a problem if SX != SY.)
05:07, 14 November 2004 en:User:Cyp (+Source)
05:06, 14 November 2004 en:User:Cyp (Finding roots with "Newton's method")

Journal des téléversements d’origine

Legend: (cur) = this is the current file, (del) = delete this old version, (rev) = revert to this old version. Click on date to download the file or see the image uploaded on that date. * (del) (cur) 05:06, 14 November 2004 . . en:User:Cyp Cyp ( en:User_talk:Cyp Talk) . . 1111x1111 (527065 bytes) (Finding roots with "Newton's method") Further descriptions on en:Newton fractal and de:Newton-Fraktal.

Légendes

Ajoutez en une ligne la description de ce que représente ce fichier

Éléments décrits dans ce fichier

dépeint

image/png

Historique du fichier

Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.

Date et heureVignetteDimensionsUtilisateurCommentaire
actuel22 juin 2007 à 10:42Vignette pour la version du 22 juin 2007 à 10:421 655 × 1 655 (1 003 kio)wikimediacommons>LutzLRecomputed with lower resolution, such that it does not break the thumbnail generation and thus existing uses of this image. Licence, source, ... remains unchanged

La page suivante utilise ce fichier :