پەڕگە:Color complex plot.jpg

ناوەڕۆکی پەڕە بە زمانەکانی تر پشتگیریی لێ ناکرێت.
لە ئینسایکڵۆپیدیای ئازادی ویکیپیدیاوە

پەڕگەی سەرەکی(٨٠٠ × ٨٠٠ پیکسڵ، قەبارەی پەڕگە: ٢٠٣ کیلۆبایت، جۆری ئێم ئای ئێم ئی: image/jpeg)

ئەم پەڕگە لە Wikimedia Commonsەوەیە و لەوانەیە لە پڕۆژەکانی دیکەش بەکار ھاتبێت. پێناسەکەی لەسەر پەڕەی وەسفی پەڕگەکە لە خوارەوە نیشان دراوە.

کورتە

وەسف 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;
}

مۆڵەتنامە

من، ھەڵگری مافی لەبەرگرتنەوەی ئەم بەرھەمە، لەژێر ئەم مۆڵەتنامەیانەدا بڵاوی دەکەمەوە:
GNU head ڕێگەدراوە بە لەبەرگرتنەوە، دابەشکردن ھەروەھا/یان سازاندنی ئەم بەڵگەنامەیە لەژێر مەرجی مۆڵەتی GNU بۆ بەڵگەنامەی ئازاد، وەشانی ١.٢ یان ھەر وەشانێکی تری دواتر کە بڵاوکراوەتەوە لەلایەن دامەزراوەی بەرنامەی ئازاد، بەبێ ھیچ بەشێکی جیاواز، بەبێ نووسین لەسەر بەرگی پێشەوە و دواوەی. وێنەیەک لەمۆڵەتەکە لە بەشێکدا ھەیە کە ناوی مۆڵەتی GNU بۆ بەڵگەنامەی ئازادە.
w:en:Creative Commons
دانەپاڵ بڵاوکردنەوەی گونجاو
ئەم پەڕگەیە لە ژێر مۆڵەتنامەی

Creative Commons Attribution-Share Alike 3.0 Unported دایە.

تۆ ئازادی:
  • بۆ بڵاکردنەوە – بۆ کۆپی کردن، دابەشکردن و دەستبەدەست ناردنی
  • بۆ تێکەڵکردنەوە – بۆ سازاندنی کارەکە
بەم مەرجانەی خوارەوە:
  • دانەپاڵ – پێویستە باوەڕی گونجاو بدەیت، بەستەرێک بۆ مۆڵەتەکە دابین بکەیت و ئاماژە بەوە بکەیت کە ئایا گۆڕانکاری کراوە یان نا. دەتوانیت بە هەر شێوەیەکی گونجاو ئەوە بکەیت، بەڵام بە شێوەیەک نا کە وا دەربکەوێت کە مۆڵەتدەر پشتگیری تۆ یان بەکارهێنانەکەت بکات.
  • بڵاوکردنەوەی گونجاو – ئەگەر لەسەر بنەمای ئەم کارە تێکەڵ، گۆڕان، یان ساز بکەی، پێویستە بەشدارییەکانت بە هەمان مۆڵەت یان هاوشێوەی مۆڵەتی ئەسڵی دابەش بکەی.
This licensing tag was added to this file as part of the GFDL licensing update.
w:en:Creative Commons
دانەپاڵ
This file is licensed under the Creative Commons Attribution 2.5 Generic license.
تۆ ئازادی:
  • بۆ بڵاکردنەوە – بۆ کۆپی کردن، دابەشکردن و دەستبەدەست ناردنی
  • بۆ تێکەڵکردنەوە – بۆ سازاندنی کارەکە
بەم مەرجانەی خوارەوە:
  • دانەپاڵ – پێویستە باوەڕی گونجاو بدەیت، بەستەرێک بۆ مۆڵەتەکە دابین بکەیت و ئاماژە بەوە بکەیت کە ئایا گۆڕانکاری کراوە یان نا. دەتوانیت بە هەر شێوەیەکی گونجاو ئەوە بکەیت، بەڵام بە شێوەیەک نا کە وا دەربکەوێت کە مۆڵەتدەر پشتگیری تۆ یان بەکارهێنانەکەت بکات.
دەتوانی مۆڵەتنامەی دڵخوازت ھەڵبژێریت.

لێدوانەکان

Add a one-line explanation of what this file represents
Color wheel graph of the function f(x) = (x^2 − 1)(x + 2 − i)2 / (x^2 + 2 - 2i).

بەندەکانی لەم پەڕگەیەدا دەردەکەون

depicts ئینگلیزی

٧ ئابی 2007

source of file ئینگلیزی

MIME type ئینگلیزی

image/jpeg

checksum ئینگلیزی

c0f2c797263ef24ef3cb2d39a22f86ee3e4ca071

determination method ئینگلیزی: SHA-1 ئینگلیزی

data size ئینگلیزی

٢٠٨٬١٧٨ بایت

٨٠٠ پیکسڵ

width ئینگلیزی

٨٠٠ پیکسڵ

مێژووی پەڕگە

کرتە بکە لەسەر یەکێک لە ڕێکەوت/کاتەکان بۆ بینینی پەڕگەکە بەو شێوەی لەو کاتەدا بووە.

ڕێکەوت/کاتھێمائەندازەبەکارھێنەرتێبینی
هەنووکە‏٢٣:٠٦، ٢٢ی ئازاری ٢٠١٣ھێما بۆ وەشانی  ‏٢٣:٠٦، ٢٢ی ئازاری ٢٠١٣٨٠٠ لە ٨٠٠ (٢٠٣ کیلۆبایت)YourmomblahHigher quality
‏٠٩:٤٦، ٧ی ئابی ٢٠٠٧ھێما بۆ وەشانی  ‏٠٩:٤٦، ٧ی ئابی ٢٠٠٧٨٠٠ لە ٨٠٠ (٥٩ کیلۆبایت)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 }}

ئەم پەڕەیە ئەم پەڕگەیە بەکار دەھێنێت:

بەکارھێنانی سەرانسەریی پەڕگە

ئەم ویکیانەی دیکەی خوارەوەش ئەم پەڕگە بەکاردێنن:

بینینی بەکارھێنانی گشتی زیاتری ئەم پەڕگەیە.