اصل فائل(800 × 800 پکسل، فائل کا حجم: 203 کلوبائٹ، MIME قسم: image/jpeg)

یہ فائل ویکی ذخائر کی ہے اور دیگر منصوبوں کے زیر استعمال ہوسکتی ہے۔ فائل کے صفحہ تعارف پر موجود تعارف ذیل میں موجود ہے۔

خلاصہ

تفصیل 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 آپ کو آزاد سافٹ ویئر فاؤنڈیشن کی جانب سے شائع کردہ جی این یو آزاد مسوداتی اجازت نامہ کی شرائط استعمال کے تحت اس دستاویز کو نقل، تقسیم اور/ یا ترمیم کرنے کی اجازت دی جاتی ہے۔ اس اجازت نامہ کی ایک نقل 'جی این یو آزاد مسوداتی اجازت نامہ کے عنوان سے میسر ہے۔
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.
آپ آزاد ہیں:
  • شیئر کرنے – کام کو نقل، تقسیم یا منتقل کرنے کے لیے
  • ریمکس کے لیے – کام منبطق کرنے کے لیے
مندرجہ ذیل شرائط کے تحت:
  • انتساب – آپ کو اس کام کا انتساب مصنف یا اجازت دہندہ کے بتائے گئے طریقہ کے مطابق دینا ہوگا (تاہم یہ انتساب اس طرح نہیں ہونا چاہیے کہ اسے دیکھ کر ایسا محسوس ہو کہ اصل مصنف یا اجازت دہندہ آپ کے یا آپ کے ذریعہ اس کام کے استعمال کرنے کے حامی ہیں)۔
آپ حسب منشا اجازت نامہ منتخب کر سکتے ہیں۔

Captions

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).

Items portrayed in this file

عکاسی

7 اگست 2007

source of file انگریزی

MIME type انگریزی

image/jpeg

checksum انگریزی

c0f2c797263ef24ef3cb2d39a22f86ee3e4ca071

طریق تعیین: SHA-1 انگریزی

data size انگریزی

208,178 لکمہ

800 عکصر

800 عکصر

فائل کا تاریخچہ

کسی خاص وقت یا تاریخ میں یہ فائل کیسی نظر آتی تھی، اسے دیکھنے کے لیے اس وقت/تاریخ پر کلک کریں۔

تاریخ/وقتتھمب نیلابعادصارفتبصرہ
رائج الوقت23:06، 22 مارچ 2013ءمورخہ 23:06، 22 مارچ 2013ء کا تھمب نیل800 × 800 (203 کلوبائٹ)YourmomblahHigher quality
09:46، 7 اگست 2007ءمورخہ 09: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 }}

درج ذیل صفحہ اس فائل کو استعمال کر رہا ہے:

فائل کا عالمی استعمال

مندرجہ ذیل ویکیوں میں یہ فائل زیر استعمال ہے:

اس فائل کا مزید عالمی استعمال دیکھیے۔