الملف الأصلي (800 × 800 بكسل حجم الملف: 202 كيلوبايت، نوع MIME: image/jpeg)

ملخص

الوصف
English: Colour plot of complex function (x² - 1) * (x-2-I)² / (x² + 2 + 2I), hue represents the argument, sat and value represents the modulo. Contours distinguish intervals [e^i, e^(i+1)] where i=0,1,2... Shadow is on the higher modulus side.

Zeros have pin-wheel of colours, one cycle of the colour wheel for simple zero, two cycles for double zero etc.

Contours are approaching poles with the shadowed side, and the colours cycle in reverse order around a pole.
التاريخ
المصدر عمل شخصي
المؤلف Jan Winnicki
إصدارات أخرى

Source code

This is the source code used for image generation. It is a slightly modified version of File:Color complex plot.jpg. In this version the real axis is directing right. And contours bring more information.

#include <complex>
#include <fstream>
 
using namespace std;

void SetHSV(double h, double s, double v, unsigned char color[3]) {
  double r=0, g=0, b=0;
  if(s==0)
    r = g = b = v;
  else {
    h /= 60;
    int i = floor(h);
    double f = h - i;
    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 = rmi +(rma -rmi) *i /(dimx -1);
      complex<double> c(re, im);
      complex<double> v = fun(c); 
      double a = arg(v)*180/M_PI;
      if(a < 0) a += 360;
      
      double m = abs(v);
      double ranges;
      double rangee = 1;

      while(m>rangee){
          ranges = rangee;
          rangee *= M_E;
      }

      double k   = (m-ranges)/(rangee-ranges);
      double sat = k < 0.5 ? 1-2.8*k : 2.8*k-1.1;
      if(sat < 0.3) sat = 0.3;
      else if(sat > 1) sat = 1;

      double val = k < 0.5 ? 1.4-1.6*k : 1.6*k-0.6;
      if(val < 0.6) val = 0.6;
      else if(val > 1) val = 1;

      unsigned char color[3];
      SetHSV(a,sat,val,color);
      f.write(color,3);
    }
  }
  return 0;
}

ترخيص

أنا، صاحب حقوق التأليف والنشر لهذا العمل، أنشر هذا العمل تحت الرخص التالية:
w:ar:مشاع إبداعي
نسب العمل إلى مُؤَلِّفه الإلزام بترخيص المُشتقات بالمثل
يحقُّ لك:
  • مشاركة العمل – نسخ العمل وتوزيعه وبثُّه
  • إعادة إنتاج العمل – تعديل العمل
حسب الشروط التالية:
  • نسب العمل إلى مُؤَلِّفه – يلزم نسب العمل إلى مُؤَلِّفه بشكل مناسب وتوفير رابط للرخصة وتحديد ما إذا أجريت تغييرات. بالإمكان القيام بذلك بأية طريقة معقولة، ولكن ليس بأية طريقة تشير إلى أن المرخِّص يوافقك على الاستعمال.
  • الإلزام بترخيص المُشتقات بالمثل – إذا أعدت إنتاج المواد أو غيرت فيها، فيلزم أن تنشر مساهماتك المُشتقَّة عن الأصل تحت ترخيص الأصل نفسه أو تحت ترخيص مُتوافِقٍ معه.
GNU head يسمح نسخ وتوزيع و/أو تعديل هذه الوثيقة تحت شروط رخصة جنو للوثائق الحرة، الإصدار 1.2 أو أي إصدار لاحق تنشره مؤسسة البرمجيات الحرة؛ دون أقسام ثابتة ودون نصوص أغلفة أمامية ودون نصوص أغلفة خلفية. نسخة من الرخصة تم تضمينها في القسم المسمى GNU Free Documentation License.
لك أن تختار الرخصة التي تناسبك.
الشروح
InfoField
هذه الصورة مشروحة: أظهر الشروح في كومنز

الشروحات

أضف شرحاً من سطر واحد لما يُمثِّله هذا الملف

العناصر المصورة في هذا الملف

يُصوِّر

٢٧ مارس 2010

a8d04a91ab03b58d2ace93c2b2f769cf6b0ccbe7

طريقة الاستدلال: SHA-1 الإنجليزية

٢٠٧٬٠٥٩ بايت

٨٠٠ بكسل

٨٠٠ بكسل

تاريخ الملف

اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.

زمن/تاريخصورة مصغرةالأبعادمستخدمتعليق
حالي22:58، 23 مارس 2013تصغير للنسخة بتاريخ 22:58، 23 مارس 2013800 × 800 (202 كيلوبايت)YourmomblahHigher quality
02:02، 27 مارس 2010تصغير للنسخة بتاريخ 02:02، 27 مارس 2010800 × 800 (234 كيلوبايت)Jan Winnicki{{Information |Description={{en|1=Colour plot of complex function (x² - 1) * (x² - I)² / (x² + 2 + 2I), hue represents the argument, sat and value represents the modulo. Contours distinguish intervals [e^i, e^(i+1)] where i=0,1,2... Shadow is on the h

الصفحة التالية تستخدم هذا الملف:

الاستخدام العالمي للملف

الويكيات الأخرى التالية تستخدم هذا الملف: