Податотека:Color_complex_plot.jpg
From Wikipedia, the free encyclopedia
![Податотека:Color complex plot.jpg](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Color_complex_plot.jpg/600px-Color_complex_plot.jpg)
Големина на овој преглед: 600 × 600 пиксели. Други разделности: 240 × 240 пиксели | 480 × 480 пиксели.
Изворна податотека (800 × 800 пиксели, големина: 203 КБ, MIME-тип: image/jpeg)
![]() |
Ова е податотека од Ризницата на Викимедија и може да се користи на други проекти. Подолу е наведена содржината на нејзината описна страница.
|
Содржина
Опис
ОписColor complex plot.jpg | Color plot of complex function (x^2-1) * (x-2-I)^2 / (x^2+2+2I), hue represents the argument, sat and value represents the modulus |
Датум | |
Извор | сопствено дело |
Автор | Claudio Rocchini |
Дозвола (Повторно користење на податотекава) |
CC-BY 2.5 |
Други верзии |
![]() |
Source Code
C++
This is the complete C++ source code for image generation (you must change the fun funcion to plot another one). You need some complex class implementation.
#include <complex>
#include <fstream>
using namespace std;
const double PI = 3.1415926535897932384626433832795;
const double E = 2.7182818284590452353602874713527;
void SetHSV(double h, double s, double v, unsigned char color[3]) {
double r, g, b;
if(s==0)
r = g = b = v;
else {
if(h==1) h = 0;
double z = floor(h*6); int i = int(z);
double f = double(h*6 - z);
double p = v*(1-s);
double q = v*(1-s*f);
double t = v*(1-s*(1-f));
switch(i){
case 0: r=v; g=t; b=p; break;
case 1: r=q; g=v; b=p; break;
case 2: r=p; g=v; b=t; break;
case 3: r=p; g=q; b=v; break;
case 4: r=t; g=p; b=v; break;
case 5: r=v; g=p; b=q; break;
}
}
int c;
c = int(256*r); if(c>255) c = 255; color[0] = c;
c = int(256*g); if(c>255) c = 255; color[1] = c;
c = int(256*b); if(c>255) c = 255; color[2] = c;
}
complex<double> fun(complex<double>& c ){
const complex<double> i(0., 1.);
return (pow(c,2) -1.) *pow(c -2. -i, 2) /(pow(c,2) +2. +2. *i);
}
int main(){
const int dimx = 800; const int dimy = 800;
const double rmi = -3; const double rma = 3;
const double imi = -3; const double ima = 3;
ofstream f("complex.ppm", ios::binary);
f << "P6" << endl
<< dimx << " " << dimy << endl
<< "255" << endl;
for(int j=0; j < dimy; ++j){
double im = ima - (ima -imi) *j /(dimy -1);
for(int i=0; i < dimx; ++i){
double re = rma -(rma -rmi) *i /(dimx -1);
complex<double> c(re, im);
complex<double> v = fun(c);
double a = arg(v);
while(a<0) a += 2*PI; a /= 2*PI;
double m = abs(v);
double ranges = 0;
double rangee = 1;
while(m>rangee){
ranges = rangee;
rangee *= E;
}
double k = (m-ranges)/(rangee-ranges);
double sat = k < 0.5 ? k *2: 1 -(k -0.5) *2;
sat = 1 - pow(1-sat, 3); sat = 0.4 + sat*0.6;
double val = k < 0.5 ? k *2: 1 -(k -0.5) *2; val = 1 - val;
val = 1 - pow(1-val, 3); val = 0.6 + val*0.4;
unsigned char color[3];
SetHSV(a,sat,val,color);
f.write((const char*)color,3);
}
}
return 0;
}
C
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <complex.h>// floor
/*
based on
c++ program from :
[[:File:Color_complex_plot.jpg]]
by Claudio Rocchini
gcc d.c -lm -Wall
http://en.wikipedia.org/wiki/Domain_coloring
*/
const double PI = 3.1415926535897932384626433832795;
const double E = 2.7182818284590452353602874713527;
/*
complex domain coloring
Given a complex number z=re^{ i \theta},
hue represents the argument ( phase, theta ),
sat and value represents the modulus
*/
int GiveHSV( double complex z, double HSVcolor[3] )
{
//The HSV, or HSB, model describes colors in terms of hue, saturation, and value (brightness).
// hue = f(argument(z))
//hue values range from .. to ..
double a = carg(z); //
while(a<0) a += 2*PI; a /= 2*PI;
// radius of z
double m = cabs(z); //
double ranges = 0;
double rangee = 1;
while(m>rangee){
ranges = rangee;
rangee *= E;
}
double k = (m-ranges)/(rangee-ranges);
// saturation = g(abs(z))
double sat = k<0.5 ? k*2: 1 - (k-0.5)*2;
sat = 1 - pow( (1-sat), 3);
sat = 0.4 + sat*0.6;
// value = h(abs(z))
double val = k<0.5 ? k*2: 1 - (k-0.5)*2;
val = 1 - val;
val = 1 - pow( (1-val), 3);
val = 0.6 + val*0.4;
HSVcolor[0]= a;
HSVcolor[1]= sat;
HSVcolor[2]= val;
return 0;
}
int GiveRGBfromHSV( double HSVcolor[3], unsigned char RGBcolor[3] ) {
double r,g,b;
double h; double s; double v;
h=HSVcolor[0]; // hue
s=HSVcolor[1]; // saturation;
v = HSVcolor[2]; // = value;
if(s==0)
r = g = b = v;
else {
if(h==1) h = 0;
double z = floor(h*6);
int i = (int)z;
double f = (h*6 - z);
double p = v*(1-s);
double q = v*(1-s*f);
double t = v*(1-s*(1-f));
switch(i){
case 0: r=v; g=t; b=p; break;
case 1: r=q; g=v; b=p; break;
case 2: r=p; g=v; b=t; break;
case 3: r=p; g=q; b=v; break;
case 4: r=t; g=p; b=v; break;
case 5: r=v; g=p; b=q; break;
}
}
int c;
c = (int)(256*r); if(c>255) c = 255; RGBcolor[0] = c;
c = (int)(256*g); if(c>255) c = 255; RGBcolor[1] = c;
c = (int)(256*b); if(c>255) c = 255; RGBcolor[2] = c;
return 0;
}
int GiveRGBColor( double complex z, unsigned char RGBcolor[3])
{
static double HSVcolor[3];
GiveHSV( z, HSVcolor );
GiveRGBfromHSV(HSVcolor,RGBcolor);
return 0;
}
//
double complex fun(double complex c ){
return (cpow(c,2)-1)*cpow(c-2.0- I,2)/(cpow(c,2)+2+2*I);} //
int main(){
// screen (integer ) coordinate
const int dimx = 800; const int dimy = 800;
// world ( double) coordinate
const double reMin = -2; const double reMax = 2;
const double imMin = -2; const double imMax = 2;
static unsigned char RGBcolor[3];
FILE * fp;
char *filename ="complex.ppm";
fp = fopen(filename,"wb");
fprintf(fp,"P6\n%d %d\n255\n",dimx,dimy);
int i,j;
for(j=0;j<dimy;++j){
double im = imMax - (imMax-imMin)*j/(dimy-1);
for(i=0;i<dimx;++i){
double re = reMax - (reMax-reMin)*i/(dimx-1);
double complex z= re + im*I; //
double complex v = fun(z); //
GiveRGBColor( v, RGBcolor);
fwrite(RGBcolor,1,3,fp);
}
}
fclose(fp);
printf("OK - file %s saved\n", filename);
return 0;
}
Лиценцирање
Јас, праводржецот на ова дело, со ова го објавувам истото под следниве лиценци:
![]() |
Се дава дозвола за умножување, распространување и/или менување на овој документ под условите на ГНУ-овата лиценца за слободна документација, само Верзија 1.2 или било која понова верзија објавена од Фондацијата за слободна програмска опрема; без неменливи делови и без текстови на предни и задни корици. Примерок од лиценцата ќе најдете во делот наречен ГНУ-ова лиценца за слободна докуменација.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
![]() ![]() ![]() |
Оваа податотека е под лиценцата Криејтив комонс Наведи извор-Сподели под исти услови 3.0 Нелокализирана. | |
| ||
Оваа ознака за лиценца е додадена на податотекава како дел од подновата на лиценците на ГЛСД.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
![w:mk:Криејтив комонс](https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/CC_some_rights_reserved.svg/90px-CC_some_rights_reserved.svg.png)
![наведи извор](https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Cc-by_new_white.svg/24px-Cc-by_new_white.svg.png)
Оваа податотека е под лиценцата Криејтив комонс Наведи извор 2.5 Нелокализирана
- Можете:
- да споделите – да го умножувате, распространувате и емитувате делото
- да преработувате – да преработувате
- Под следните услови:
- наведи извор – Ќе мора да дадете прикладен припис, да ставите врска до лиценцата и да укажете дали има направено промени. Ова може да биде направено на било кој разумен начин, но без да оддава впечаток дека лиценцодавецот стои зад Вас и Вашата употреба.
Одберете лиценца по ваш избор.
Описи
Опишете во еден ред што претставува податотекава
Color wheel graph of the function f(x) = (x^2 − 1)(x + 2 − i)2 / (x^2 + 2 - 2i).
Предмети прикажани на податотекава
прикажува
Некоја вредност без предмет на Википодатоци
7 август 2007
image/jpeg
c0f2c797263ef24ef3cb2d39a22f86ee3e4ca071
208.178 Бајт
800 пиксел
800 пиксел
Историја на податотеката
Стиснете на датум/време за да ја видите податотеката како изгледала тогаш.
Датум/време | Минијатура | Димензии | Корисник | Коментар | |
---|---|---|---|---|---|
тековна | 01:06, 23 март 2013 | ![]() | 800 × 800 (203 КБ) | Yourmomblah | Higher quality |
11:46, 7 август 2007 | ![]() | 800 × 800 (59 КБ) | Rocchini | {{Information |Description=Color plot of complex function (x^2-1) * (x-2-I)^2 / (x^2+2+2I), hue represents the argument, sat and value represents the modulo |Source=Own work |Date=2007-08-07 |Author=Claudio Rocchini |Permission=CC-BY 2.5 }} |
Употреба на податотеката
Податотекава се користи во следнава страница:
Глобална употреба на податотеката
Оваа податотека ја користат и следниве викија:
- Употреба на ar.wikipedia.org
- Употреба на ast.wikipedia.org
- Употреба на be.wikipedia.org
- Употреба на bn.wikipedia.org
- Употреба на ckb.wikipedia.org
- Употреба на cs.wikipedia.org
- Употреба на cy.wikipedia.org
- Употреба на da.wikipedia.org
- Употреба на en.wikipedia.org
- Употреба на en.wikibooks.org
- Употреба на en.wikiversity.org
- Употреба на es.wikipedia.org
- Употреба на eu.wikipedia.org
- Употреба на fa.wikipedia.org
- Употреба на gl.wikipedia.org
- Употреба на hi.wikipedia.org
- Употреба на it.wikipedia.org
- Употреба на it.wikibooks.org
- Употреба на ja.wikipedia.org
- Употреба на lv.wikipedia.org
- Употреба на mn.wikipedia.org
- Употреба на mt.wikipedia.org
- Употреба на nl.wikipedia.org
- Употреба на pl.wikipedia.org
- Употреба на pl.wikibooks.org
- Употреба на si.wikipedia.org
- Употреба на sk.wikipedia.org
- Употреба на sq.wikipedia.org
- Употреба на sr.wikipedia.org
- Употреба на sv.wikipedia.org
- Употреба на th.wikipedia.org
- Употреба на tr.wikipedia.org
- Употреба на uk.wikipedia.org
Погледајте ја останатата глобална употреба на податотекава.