ملف:Color_complex_plot.jpg
من ويكيبيديا، الموسوعة 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 أو أي إصدار لاحق تنشره مؤسسة البرمجيات الحرة؛ دون أقسام ثابتة ودون نصوص أغلفة أمامية ودون نصوص أغلفة خلفية. نسخة من الرخصة تم تضمينها في القسم المسمى GNU Free Documentation License.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:ar:مشاع إبداعي](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).
العناصر المصورة في هذا الملف
يُصوِّر
قيمة ما بدون عنصر ويكي بيانات
٧ أغسطس 2007
image/jpeg
c0f2c797263ef24ef3cb2d39a22f86ee3e4ca071
٢٠٨٬١٧٨ بايت
٨٠٠ بكسل
٨٠٠ بكسل
تاريخ الملف
اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.
زمن/تاريخ | صورة مصغرة | الأبعاد | مستخدم | تعليق | |
---|---|---|---|---|---|
حالي | 23:06، 22 مارس 2013 | ![]() | 800 × 800 (203 كيلوبايت) | Yourmomblah | Higher quality |
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 }} |
استخدام الملف
الصفحة التالية تستخدم هذا الملف:
الاستخدام العالمي للملف
الويكيات الأخرى التالية تستخدم هذا الملف:
- الاستخدام في 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
- الاستخدام في mk.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
اعرض المزيد من الاستخدام العام لهذا الملف.