Post Reply 
Complex Plotting App
02-01-2015, 01:06 AM
Post: #2
RE: Complex Plotting App
Thank you for this program. I was also looking into plotting complex functions, and one other option I found is to use the 3D contour plot feature of the Graph3D program, using RE() and IM(), and setting the rotation angle to x=90, y=0, and z=0.. however your program looks better in plotting complex functions.

I also modified and added Domain Coloring to your program, by porting the code in http://commons.wikimedia.org/wiki/File:C...x_plot.jpg. I think Domain Coloring could be more useful and it also looks prettier.

Here is a screenshot of domain coloring plot showing sin(0.5*X^3 + X) + cos(X^2):
   

Below is the modified code:

Code:

// SetHSV() and GetColor() based on
// c++ program from :
// http://commons.wikimedia.org/wiki/File:Color_complex_plot.jpg
// by Claudio Rocchini
// http://en.wikipedia.org/wiki/Domain_coloring

PlotRes(r);
SetHSV(h,s,v);
GetColor(v);

EXPORT Plot()
BEGIN
PRINT();
 RECT();
 PlotRes(16);
 PlotRes(8);
 PlotRes(4);
 PlotRes(2);
 PlotRes(1);
 WHILE 1 DO
  FREEZE();
 END;
END;

EXPORT PlotRes(r)
BEGIN
 LOCAL xi,yi,co,va;
 xi:=(Xmax-Xmin)/320;
 yi:=(Ymax-Ymin)/240;
 FOR X FROM 0 TO 320-r STEP r DO
  FOR Y FROM 0 TO 240-r STEP r DO
   IF ((Xmin+xi*X)==0) THEN
   //avoid typical undefined points at origin
    va:=F1(Xmin+xi*(X+0.001) + i*(Ymin+yi*Y));
   ELSE
    va:=F1(Xmin+xi*X + i*(Ymin+yi*Y));
   END;

//LOG coloring
   //co:=RGB(MIN(255,LN(1+ABS(IM(va)))*128),MIN(255,LN(1+ABS(RE(va)))*128),MIN(255,MA​X(0,(LN(1+ABS(va))-2)*128)));

//Domain coloring
   co:= GetColor(va);

   RECT_P(G0,X,Y,X+r-1,Y+r-1,co);
  END;
 END;
END;

SetHSV(h, s, v)
BEGIN
    LOCAL r, g, b;
    LOCAL z, f, p, q, t, i;

    IF(s==0) THEN
        r:=v;
       g:=v;
       b:=v; 
    ELSE
        IF(h==1) THEN h := 0; END;
        z := FLOOR(h*6); 
        i := IP(z);
        f := h*6 - z;
        p := v*(1-s);
        q := v*(1-s*f);
        t := v*(1-s*(1-f));
 
        CASE
        IF i==0 THEN r:=v; g:=t; b:=p; END;
        IF i==1 THEN r:=q; g:=v; b:=p; END;
        IF i==2 THEN r:=p; g:=v; b:=t; END;
        IF i==3 THEN r:=p; g:=q; b:=v; END;
        IF i==4 THEN r:=t; g:=p; b:=v; END;
        IF i==5 THEN r:=v; g:=p; b:=q; END;
        END;
    END;

    r :=MIN(255,IP(256*r));
    g :=MIN(255,IP(256*g));
    b :=MIN(255,IP(256*b));
    RETURN RGB(r,g,b);
END;

GetColor(v)
BEGIN
    LOCAL a:=0;
    LOCAL m,ranges,rangee,k,sat,val;

    IF v≠0 THEN a:=ARG(v); END;
 
    WHILE (a<0) DO a := a+ (2*π); END;
    a := a/(2*π);
    m := ABS(v);
    ranges := 0;
    rangee := 1;
 
    WHILE(m>rangee) DO
        ranges := rangee;
        rangee := rangee * e;
    END;
 
    k:=(m-ranges)/(rangee-ranges);
    IF (k<0.5) THEN
        sat:=k*2;
    ELSE
        sat:=1 -(k -0.5) *2;
    END;
 
    sat := 1 - (1-sat)^3; sat := 0.4 + sat*0.6;
 
    IF (k<0.5) THEN
        val:=k*2;
    ELSE
        val:=1 -(k -0.5) *2;
    END;

    val := 1 - val;
    val := 1 - (1-val)^3; 
    val := 0.6 + val*0.4;

    return SetHSV(a,sat,val);
END;
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
Complex Plotting App - danielmewes - 12-30-2014, 09:17 AM
RE: Complex Plotting App - dwgg - 02-01-2015 01:06 AM
RE: Complex Plotting App - Han - 02-01-2015, 04:01 AM
RE: Complex Plotting App - dwgg - 02-01-2015, 06:42 AM
RE: Complex Plotting App - Mark Hardman - 02-01-2015, 11:17 PM
RE: Complex Plotting App - dwgg - 02-02-2015, 03:43 PM
RE: Complex Plotting App - rprosperi - 02-02-2015, 04:54 PM
RE: Complex Plotting App - dwgg - 02-03-2015, 06:56 PM
RE: Complex Plotting App - danielmewes - 02-04-2015, 03:39 AM
RE: Complex Plotting App - dwgg - 02-06-2015, 04:21 AM
RE: Complex Plotting App - Han - 02-06-2015, 08:17 PM
RE: Complex Plotting App - Han - 02-07-2015, 06:02 AM
RE: Complex Plotting App - rprosperi - 02-07-2015, 03:38 PM
RE: Complex Plotting App - Han - 02-07-2015, 06:24 PM
RE: Complex Plotting App - rprosperi - 02-08-2015, 04:06 PM
RE: Complex Plotting App - Eddie W. Shore - 02-12-2015, 03:26 AM
RE: Complex Plotting App - rprosperi - 02-12-2015, 04:02 AM
RE: Complex Plotting App - Eddie W. Shore - 04-02-2015, 02:58 AM
RE: Complex Plotting App - Han - 04-02-2015, 12:10 PM
RE: Complex Plotting App - salvomic - 04-02-2015, 02:48 PM
RE: Complex Plotting App - Eddie W. Shore - 04-04-2015, 03:03 PM
RE: Complex Plotting App - dwgg - 02-12-2015, 06:29 AM
RE: Complex Plotting App - Han - 02-12-2015, 08:23 AM
RE: Complex Plotting App - dwgg - 02-13-2015, 02:52 AM
RE: Complex Plotting App - Han - 02-13-2015, 10:04 PM
RE: Complex Plotting App - dwgg - 02-14-2015, 12:01 AM
RE: Complex Plotting App - dwgg - 02-14-2015, 11:43 AM
RE: Complex Plotting App - salvomic - 04-02-2015, 05:17 PM
RE: Complex Plotting App - Han - 04-02-2015, 05:40 PM
RE: Complex Plotting App - salvomic - 04-02-2015, 05:50 PM
RE: Complex Plotting App - Han - 02-14-2015, 07:14 PM
RE: Complex Plotting App - dwgg - 02-14-2015, 10:18 PM
RE: Complex Plotting App - Han - 02-17-2015, 01:34 AM
RE: Complex Plotting App - dwgg - 02-18-2015, 06:35 AM
RE: Complex Plotting App - Han - 02-18-2015, 04:41 PM
RE: Complex Plotting App - Han - 02-18-2015, 10:08 PM
RE: Complex Plotting App - dwgg - 02-19-2015, 02:06 AM
RE: Complex Plotting App - Han - 02-19-2015, 02:14 AM
RE: Complex Plotting App - Han - 03-17-2017, 07:28 PM
RE: Complex Plotting App - jtm - 06-30-2017, 03:48 AM
RE: Complex Plotting App - Han - 07-01-2017, 12:17 AM
RE: Complex Plotting App - FrankP - 12-25-2019, 12:26 PM



User(s) browsing this thread: 1 Guest(s)