Файл:Newtroot 1 0 0 0 0 m1.png
Цей файл з Вікісховища і може використовуватися в інших проєктах. Далі наведена інформація з його сторінки опису.
Перенесено з en.wikipedia на Вікісховище користувачем Maksim.
//
|
Ця робота є вільним програмним забезпеченням; ви можете вільно поширювати та/або змінювати її відповідно до умов GNU General Public License, що опублікована Фондом вільного програмного забезпечення; або версії 2, або більш пізньої версії. Дана робота розповсюджується з надією, що вона буде корисною, але без будь-яких гарантій; зокрема без непрямої гарантії товарної придатності або придатності для конкретних цілей. Дивіться версію 2 і версію 3 GNU General Public License для більш докладної інформації.http://www.gnu.org/licenses/gpl.htmlGPLGNU General Public Licensetruetrue |
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") |
Журнал завантажень локального файлу
Підписи
Об'єкти, показані на цьому файлі
зображує
image/png
Історія файлу
Клацніть на дату/час, щоб переглянути, як тоді виглядав файл.
| Дата/час | Мініатюра | Розмір об'єкта | Користувач | Коментар | |
|---|---|---|---|---|---|
| поточний | 10:42, 22 червня 2007 | 1655 × 1655 (1003 КБ) | wikimediacommons>LutzL | Recomputed with lower resolution, such that it does not break the thumbnail generation and thus existing uses of this image. Licence, source, ... remains unchanged |
Використання файлу
Така сторінка використовує цей файл: