File:Newtroot 1 0 0 0 0 m1.png
来自testwiki
跳转到导航
跳转到搜索
本预览的尺寸:600 × 600像素。 其他分辨率:240 × 240像素 | 480 × 480像素 | 768 × 768像素 | 1,024 × 1,024像素 | 1,655 × 1,655像素。
原始文件 (1,655 × 1,655像素,文件大小:1,003 KB,MIME类型:image/png)
本文件来自维基共享资源并可能被其他项目使用。 其文件描述页上的描述显示在下面。
本檔案是由Maksim從en.wikipedia轉移到維基共享資源。
原始描述頁面位於這裡。下列使用者名稱均來自en.wikipedia。
//
|
本作品为自由软件,您可以依据自由软件基金会发行的GNU通用公共许可证第2版或任意后续版本的条款,传播和/或修改本作品。本作品发表时预期有用,但对此无任何保证,亦无隐含的可以销售或适合特定目的的保证。详情请见GNU通用公共许可证第2版和第3版。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
文件历史
点击某个日期/时间查看对应时刻的文件。
| 日期/时间 | 缩略图 | 大小 | 用户 | 备注 | |
|---|---|---|---|---|---|
| 当前 | 2007年6月22日 (五) 10:42 | 1,655 × 1,655(1,003 KB) | 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 |
文件用途
没有页面使用本文件。