Latest version of FractInt
Let me introduce myself. I am Mike Frazier the programmer of Fracton. I wrote Fracton before I knew about FractInt. Then when I saw what a great resource all of those tens of thousands of par files are I decided to try to add FractInt par file import/export to Fracton. I always started by programming to the documentation. If that wasn't enough then I looked at the FractInt code. If that didn't work then I used test images until I got Fracton to generate the same image that FractInt generated. At no time did I ever copy any code from FractInt to Fracton. Just in case anyone was wondering. I have been able to find version 20.04p04 of the FractInt code but I can't find p09. Could someone please tell me how to find the latest version. Thanks, Mike Frazier www.fracton.org
Hi, Look here: http://www.fractint.org/ In my case, it doesn't work on Windows 7 64 bit. On Sat, Sep 11, 2010 at 5:19 AM, Mike Frazier <fractonorg@gmail.com> wrote:
Let me introduce myself. I am Mike Frazier the programmer of Fracton. I wrote Fracton before I knew about FractInt. Then when I saw what a great resource all of those tens of thousands of par files are I decided to try to add FractInt par file import/export to Fracton. I always started by programming to the documentation. If that wasn't enough then I looked at the FractInt code. If that didn't work then I used test images until I got Fracton to generate the same image that FractInt generated. At no time did I ever copy any code from FractInt to Fracton. Just in case anyone was wondering.
I have been able to find version 20.04p04 of the FractInt code but I can't find p09. Could someone please tell me how to find the latest version.
Thanks, Mike Frazier www.fracton.org
_______________________________________________ Fractdev mailing list Fractdev@mailman.xmission.com http://mailman.xmission.com/cgi-bin/mailman/listinfo/fractdev
In article <AANLkTimfg44Qvp5Ynp36-KsBgrRP2p0wP_HESBbVEFB5@mail.gmail.com>, Mihai Dobrescu <msdobrescu@gmail.com> writes:
In my case, it doesn't work on Windows 7 64 bit.
My fork works on Win7 64-bit. Download from here: <http://iteratedynamics.codeplex.com/> -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
Mike Frazier wrote:
I have been able to find version 20.04p04 of the FractInt code but I can't find p09. Could someone please tell me how to find the latest version.
The "open source" was much easier to obtain from 20.04.04 backwards, since one could get the whole .ZIP or .TAR file in a single download. After that, it was split up into its smallest pieces so that you were limited in the options available for downloading the complete source code. "They" say it was handled this way for support reasons, but I believe it was more about keeping people from having an easy access to the code. Otherwise "they" would still offer a recent .ZIP file version. Sincerely, P.N.L. -------------------------------------- http://www.Nahee.com/PNL/Fractals.html http://www.Nahee.com/Fractals/
Paul,
The "open source" was much easier to obtain from 20.04.04 backwards, since one could get the whole .ZIP or .TAR file in a single download. After that, it was split up into its smallest pieces so that you were limited in the options available for downloading the complete source code.
"They" say it was handled this way for support reasons, but I believe it was more about keeping people from having an easy access to the code. Otherwise "they" would still offer a recent .ZIP file version.
Why are you reluctant to use an SVN client to download the complete source code from the SVN repository? What am I missing? Jonathan
Thanks for all the suggestions on getting the latest version of the code. When I read there was some tool that help manage the source I guessed that it was not available on a Mac. I kept downloading things until I found a tar.gz file that decompressed into xfractint-20.04p9 so I think I now have the latest source. I don't care which platform it is for since I am only using it to figure out algorithms. Unfortunately, this code looks exactly the same in the area I am having a problem with. I have been trying to figure out how outside=tdis works. The documentation is vague on outside=tdis and trying to guess the algorithm by comparing images has proven futile. I looked in detail at the code in calcfrac.c and this is what I see. It looks very simple. I pasted together the relevant parts so it is easy to see all together. version xfractint-20.04p09 calcfrac.c line numbers double totaldist = 0.0; // Line 1780 // Initialization if (outside == TDIS) { // Line 1892 lastz.x = old.x; lastz.y = old.y; } // Main loop if (outside == TDIS) // Line 2087 { totaldist += sqrt(sqr(lastz.x-new.x)+sqr(lastz.y-new.y)); lastz.x = new.x; lastz.y = new.y; } // After main loop. Color methods else if (outside == TDIS) { // Line 2328 coloriter = (long)(totaldist); } I don't think I implemented anything wrong here. The image I get has a color index that changes much faster than the correct image. Its not off by a fixed number or a ratio or any other good clue as to what is wrong. I was hoping someone here might have an idea of something outside this code that could affect the results. If not, no worries, I will just keep looking. Thanks again for the help. Maybe I will be able to return the favor sometime. Mike Frazier www.fracton.org
Mike,
Thanks for all the suggestions on getting the latest version of the code. When I read there was some tool that help manage the source I guessed that it was not available on a Mac. I kept downloading things until I found a tar.gz file that decompressed into xfractint-20.04p9 so I think I now have the latest source. I don't care which platform it is for since I am only using it to figure out algorithms. Unfortunately, this code looks exactly the same in the area I am having a problem with.
Do a Google search for "mac svn client". The Wikipedia page that compares svn clients includes KDEsvn, Qsvn, Subcommander svnX, WebSVN, and xcode (included with OS X 10.5).
I have been trying to figure out how outside=tdis works. The documentation is vague on outside=tdis and trying to guess the algorithm by comparing images has proven futile. I looked in detail at the code in calcfrac.c and this is what I see. It looks very simple. I pasted together the relevant parts so it is easy to see all together. ... I don't think I implemented anything wrong here. The image I get has a color index that changes much faster than the correct image. Its not off by a fixed number or a ratio or any other good clue as to what is wrong. I was hoping someone here might have an idea of something outside this code that could affect the results. If not, no worries, I will just keep looking.
That's all the right code. How are you determining the bailout? We use the following, or something similar (from fractals.c): int near fpMODbailout(void) { tempsqrx=sqr(new.x); tempsqry=sqr(new.y); magnitude = tempsqrx + tempsqry; if(magnitude >= rqlim) return(1); old = new; return(0); } Where rqlim normally defaults to 4. Jonathan
Do a Google search for "mac svn client". The Wikipedia page that
compares svn clients includes KDEsvn, Qsvn, Subcommander svnX, WebSVN, and xcode (included with OS X 10.5).
I have and use Xcode as my development environment. I will have to go read about svn.
That's all the right code. How are you determining the bailout? We use the following, or something similar (from fractals.c):
int near fpMODbailout(void) { tempsqrx=sqr(new.x); tempsqry=sqr(new.y); magnitude = tempsqrx + tempsqry; if(magnitude >= rqlim) return(1); old = new; return(0); }
Where rqlim normally defaults to 4.
Thanks for checking the code. I was thinking I was missing some code. I don't do anything any different for the bailout with tdis as compared to other coloring modes which work fine. Correct me if I am wrong, but this looks like the normal bailout test "|z| < rqlim". Could there be some difference in the color mapping (like forcing logmap or something) that is forced when tdis is in effect? -- Mike Frazier www.fracton.org
Mike,
Could there be some difference in the color mapping (like forcing logmap or something) that is forced when tdis is in effect?
There is this section of code in calcfrac.c: /* eliminate negative colors & wrap arounds */ if ((coloriter <= 0 || coloriter > maxit) && outside!=FMOD) { if (save_release < 1961) coloriter = 0; else coloriter = 1; } Then further manipulations occur at plot_pixel: I don't see how any of this could cause what you are seeing. Changes in the iteration count are dependent upon when the bailout occurs for outside pixels. So, if the bailout is occurring in the correct place based upon other outside= options, then there must be an error in how totaldist is being calculated. Is new getting set before the bailout is detected or after? When is old getting set? Jonathan
Thanks for taking the time to look at this. It has caused me to think through things with a different perspective. Changes in
the iteration count are dependent upon when the bailout occurs for outside pixels. So, if the bailout is occurring in the correct place based upon other outside= options, then there must be an error in how totaldist is being calculated.
I am sure my bailout and iterations are occurring in the right place since I have tested it on non-tdis coloring modes for hundreds of Jim Muth's FOTD images. I totally agree with your logic except it could also be how totaldist is turned into a color.
Is new getting set before the bailout is detected or after? When is old getting set?
Fracton's code is different and doesn't have new and old as such. I think it does exactly the same thing though. I will just post the code since it is only a few lines. You can scroll back a few messages to see the FractInt equivalent. double totalDistance; // Complex numbers complex lastZ; complex z; ----- Stuff here to calculate the initial z ----- lastZ = z; // tdis initialization totalDistance = 0.0; ---- Main loop ----- ----- Calculate a new z here ------- if(TDISOUT) { totalDistance += sqrt((lastZ.r - z.r) * (lastZ.r - z.r) + (lastZ.i - z. i) * (lastZ.i - z.i)); lastZ = z; } ----- After main loop, coloring stuff ----- else if(TDISOUT) n = totalDistance; -- Mike Frazier www.fracton.org
Mike,
Fracton's code is different and doesn't have new and old as such. I think it does exactly the same thing though. I will just post the code since it is only a few lines. You can scroll back a few messages to see the FractInt equivalent.
double totalDistance;
// Complex numbers
complex lastZ;
complex z;
This means lastZ and z are structures.
lastZ = z; // tdis initialization
I believe this make the structure lastZ point to the structure z. This is different than using: lastZ.r = z.r; lastZ.i = z.i; which moves the contents of z to lastZ, but leaves the pointers pointing to separate structures. Jonathan
This means lastZ and z are structures.
lastZ = z; // tdis initialization
I believe this make the structure lastZ point to the structure z. This is different than using:
lastZ.r = z.r; lastZ.i = z.i;
which moves the contents of z to lastZ, but leaves the pointers pointing to separate structures.
These are structs not pointers to structs so the members should be copied. I should have given the type definition for complex.
typedef struct complexStruct { double r; double i; } complex; so doing: complex lastZ; is the same as: struct complexStruct lastZ; and lastZ = z; should copy the members not copy a pointer. I hope this is right. I have the same thing in dozens of places. -- Mike Frazier www.fracton.org
I had to know for absolutely sure so I wrote a little test case and used the debugger to check it. typedef struct complexStruct { double r; double i; } complex; complex a,b; complex *pa,*pb; a.r = 1.0; // Initialize the members a.i = 2.0; b.r = 0.0; b.i = 0.0; pa = &a; // Get a pointer to a and b pb = &b; b = a; // Copy a to b pa = &a; // Get a pointer to a and b and verify with debugger. There is no address change. pb = &b; a.r = 0.0; // Just for fun, change a and make sure b doesn't change in debugger a.i = 0.0; // If a and b were the same address now both would change and they don't This verifies that b = a; copies the members instead of setting b's pointer to a's pointer. -- Mike Frazier www.fracton.org
I know there is a reason we
used separate assignments in Fractint.
Maybe they were passed as pointers at some point and the style was maintained. Not sure. I think what I need to do next is to find some low iteration test image that I can check by hand and look at the differences. I really appreciate you looking at stuff. That eliminated a lot of possibilites. -- Mike Frazier www.fracton.org
Mike,
----- Stuff here to calculate the initial z -----
lastZ = z; // tdis initialization
totalDistance = 0.0;
One other minor problem is that old is not the current value of z (or new for Fractint), it is the value at the start of the iteration that ends with bailing out. Jonathan
On Sun, Sep 12, 2010 at 5:24 PM, Jonathan Osuch <osuchj@avalon.net> wrote:
Mike,
----- Stuff here to calculate the initial z -----
lastZ = z; // tdis initialization
totalDistance = 0.0;
One other minor problem is that old is not the current value of z (or new for Fractint), it is the value at the start of the iteration that ends with bailing out.
The only time FractInt uses old is to first initialize the lastz. Isn't old at that point the initial value of z before the first iteration? The value of old at the end of iterations isnt used. -- Mike Frazier www.fracton.org
I finally found the problem with the outside=tdis bug in Fracton. Just like the cheesy "who done it" where the true villain isn't visible until the end, there was nothing wrong in the code I posted. The problem was FractInt doesn't use the last z for the tdis calculation when it bails out. In Fracton I did use it. That made a huge difference because the last value is usually one of the biggest. Now all of the FOTD images using outside=tdis work perfectly. Thanks to all who gave assistance. I was stuck thinking I was missing some code. Once that was eliminated, it was only a matter of time before I found the problem. -- Mike Frazier www.fracton.org
In article <AANLkTi=FhfB4jxmi20HdHw8KZEYbr_tb3=Rkde_uArWr@mail.gmail.com>, Mike Frazier <fractonorg@gmail.com> writes:
I have and use Xcode as my development environment. I will have to go read about svn.
You can install the command-line version with macport. That's what I've used in the past and it works fine. -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/> Legalize Adulthood! <http://legalizeadulthood.wordpress.com>
Mike,
I have been able to find version 20.04p04 of the FractInt code but I can't find p09. Could someone please tell me how to find the latest version.
If you have an SVN browser, you can point it to: http://fractint.net/fractsvn/tags/ Select: fractint-20-04p09 Jonathan
participants (5)
-
Jonathan Osuch -
Mihai Dobrescu -
Mike Frazier -
Paul N. Lee -
Richard