----- Original Message ----- From: bluemac <burningb@burningbridges.com> To: "Fractint and General Fractals Discussion" <fractint@mailman.xmission.com> Subject: Re: [Fractint] Triterions revisited Date: Thu, 30 Jun 2005 19:47:14 -0400 Hiram, Thank you for your interest in and enthusiasm for the 'triternions' concept. The search for these began some years ago when I perceived a "gap" between the ordered pairs called complex numbers and the systems of ordered 4-tuples called quaternions and hypercomplex numbers. I've also played around with 3D vectors, and perhaps these will prove useful for fractal generation as well, but I presently find the properties of mathematical groups to be most fascinating. My efforts so far are clearly just a bare beginning, and it seems certain that a lot of room remains for discovery and development here. It will be interesting to see where it goes. Other comments are inter-dispersed below... ----- Original Message ----- From: bluemac <burningb@burningbridges.com> To: "Fractint and General Fractals Discussion" <fractint@mailman.xmission.com> Subject: Re: [Fractint] Triterions revisited Date: Thu, 30 Jun 2005 19:47:14 -0400
Russell,
Thank you for presenting the triternion M-set,J-set, concept here. This idea really spawns a lot of speculation on my part, eg. how far can the approach be generalized and still get recognizable sets, etc. It took me a little while to understand precisely what you were doing, so I'm glad you included the earlier "C6 group" frm-- your idea is nothing short of revolutionary. Kudos to you for sharing it with us.
Initially, I saw that you were using the C6 group members as a basis for the 6-space in which you were doing the z->z^2+C iteration, but I didn't grasp why you were doing the particular mapping:
on 6/26/05 10:06 PM, Russell Walsmith at russw@lycos.com wrote:
x1=a1+x, x2=a2-x y1=b1+y, y2=b2-y v1=c1+v, v2=c2-v
OK, therein lies a tale, and there are about a hundred ways to tell it. I'll try to present an outline here, and if you are still interested I can send you a paper, written back when, that really gets into the minutiae. First, for convenience, let's set a=1, b=-1, c=i and d=-i. Then the complex numbers are arrayed in the table below. |a b c d ________ a|a b c d b|b a d c c|c d b a d|d c a b In examining this table, we see that there are four ways to generate each element; e.g., a=a^2=b^2=c*d=d*c. So it occurred to me to incorporate this table into a formula like so: C4 { x=real(pixel), y=imag(pixel) a=b=c=d=0: x1=a^2+b^2+2*c*d x2=c^2+d^2+2*a*b y1=2*a*c+2*b*d y1=2*a*d+2*b*c a=x1+x, b=x2-x, c=y1+y, d=y2-y z=(a-b)^2+(c-d)^2 z < 1000 } It worked! This gives the M-set, and among the many other experiments that this inspired, I thought to put Klein's four-group into a formula as well. The group table for "K4" is: |a b c d ________ a|a b c d b|b a d c c|c d a b d|d c b a Hence, K4 { x=real(pixel), y=imag(pixel) a=b=c=d=0: x1=a^2+b^2+2*c*d x2=2*a*b+2*c*d y1=2*a*c+2*b*d y1=2*a*d+2*b*c a=x1+x, b=x2-x, c=y1+y, d=y2-y z=(a-b)^2+(c-d)^2 z < 1000 } The K4 fractal is just a square, but it's proof of concept so far. In an effort to eliminate the obvious redundancy in C4, I tried this revised version: C4r { x=real(pixel), y=imag(pixel) a=b=0: x1=a^2-b^2 y1=2*a*b a=x1+x, b=y1+x z=a^2+b^2 z < 1000 } The M-set again. There are, moreover, other interesting things about C4r; e.g., the variant x1=a^2+b^2 gives the K4 fractal, and b=x1+x, a=y1+x gives an unique object that is a sort of complement to the M-set (the C-set?). The C-set is also given (in reverse orientation) by C-set { z=0, c=pixel: z=conj(z^2)+c z < 1000 }
After contemplating your reduction of the original frm to the "Triternions" frm, though, it became clear to me that you did this particular mapping because those particular linear combinations of the C6 basis form an order 3 subspace which has closure under the "z^2+C" operation. That's just beautiful. Several questions evolve, upon which I hope you will enlighten me: (1) Can the method be extended to other groups (D3, for instance),
Yes, the D3 table too can be fashioned into a formula, but since it's non-abelian, it seems unlikely it will reduce. D3 { x=real(pixel), y=imag(pixel), v=p1 x1=x2=y1=y2=v1=v2=0: a1 = x1^2+x2^2+y1^2+y2^2+2*v1*v2 a2 = 2*x1*x2+y1*v2+y2*v1+v1*y1+v2*y2 b1 = 2*x1*y1+x2*v1+y2*v2+v1*y2+v2*x2 b2 = 2*x1*y2+x2*v2+y1*v1+v1*x2+v2*y1 c1 = v2^2+2*x1*v1+x2*y1+y1*y2+y2*x2 c2 = v1^2+2*x1*v2+x2*y2+y1*x2+y2*y1 x1=a1+x, x2=a2-x y1=b1+y, y2=b2-y v1=c1+v, v2=c2-v z = (x1-x2)^2 + (y1-y2)^2 + (v1-v2)^2 z < 1000 }
possibly of order not equal to 6, or to generalized semigroups;
Any cyclic group of order C2j, where j is odd, seems reducible; e.g., C10 { c1=real(pixel), c2=imag(pixel) c3=p1, c4=p2, c5=p3 u=v=w=x=y=0: a=u^2+2*v*y+2*w*x b=x^2+2*u*v+2*w*y c=v^2+2*u*w+2*x*y d=y^2+2*u*x+2*v*w e=w^2+2*u*y+2*v*x u=a+c1, v=b+c2, w=c+c3 x=d+c4, y=e+c5 z=u^2+v^2+w^2+x^2+y^2 z < 1000 } The basic idea is that a cyclic group of odd order j has an identity element (I) and j-1 elements (e) of degree j (i.e., e^j=I). If each element is also given a negative sign, then we have in toto a group C2j. Thus, opposing those elements of degree j across the origin from elements of degree 2j is the same as ruling each axis with positive and negative numbers. But you don't necessarily have to do that; e.g., here is C6 with degree 6 elements on the same axis: C6v {;degree 6 elements are opposed on same axis x=real(pixel), y=imag(pixel), v=p1 x1=x2=y1=y2=v1=v2=0: a1 = x1^2+x2^2+2*y1*y2+2*v1*v2 a2 = 2*x1*x2+2*y1*v2+2*y2*v1 b1 = 2*x1*y1+2*x2*v1+ y2^2+ v2^2 b2 = 2*x1*y2+2*x2*v2+ y1^2+ v1^2 c1 = 2*x1*v1+2*x2*y1+2*y2*v2 c2 = 2*x1*v2+2*x2*y2+2*y1*v1 x1=a1+x, x2=a2-x y1=b1+y, y2=b2-y v1=c1+v, v2=c2-v z = (x1-x2)^2 + (y1-y2)^2 + (v1-v2)^2 z < 1000 }
(2) Are there other reductions than that particular set which maintain closure, and is there a systematic way to find them;
See above for C2j; but even-order C-groups and the non-cyclics are another matter...
(3) Is there a name for the target object in the 3-space
Not yet, that I know of, but I sometimes call it the T-Man or the T-set.
(It isn't a subgroup, since the multiplication table in the reduced frm:
a = x^2+2*y*v b = v^2+2*x*y c = y^2+2*x*v doesn't have an identity element, but looks very similar to that of a cyclic group), and is there some algebra that lets us generate these objects from the parent group?
Actually there is an identity element, but it gets disguised in this context. Think of a,b,c above as a special case of multiplying ordered triplets with the rule that (a,b,c)X(x,y,z) = (ax+bz+cy,ay+bx+cz,az+cx+by), so the identity element would be (1,0,0).
What I especially like about your concept is the following. In the past when we have attempted to look at different views of order>3 escapetime-generated fractal objects, we have always relied upon the "slice" method in some form-- 2D or 3D linear slices of the object embedded in the n-space. But this is a departure from that method; rather, you are looking at self consistent subobjects of the parent object which have order 2 or 3, something like an eigenvalue view. This is a new way of looking at these objects, and I wonder if it can lead to better understanding them.
In particular, what are the rules for domain spaces and iteration operators that allow M-sets to exist at all? On the complex plane a little while ago Ray Filiatreault showed that other iteration functions than polynomials create M-sets topologically conformable to the z^2+C M-set, and it turns out that all that is required for this is a fairly broad set of conditions to be true of the surface limned by the iteration function. So what about this in the order 6 space? The same topological conditions can't be true, can they?
PPS: If anyone has a clue as to how the TMan may be rendered in 3D, lemme know...
Well, when JoTz does this I hope he will illustate the method of doing so and not just render an image with arcane methods. I do know a boilerplate method of rendering 3D objects in fractint, as you probably do since you suggested it earlier concerning the variation of {x,y,v}, but it is very inefficient. Briefly, (1) choose a directed vector (angle,angle) =D in polar coords( this allows all possible directions to be hypothetically viewed), (2) form arbitrary unit vectors E,F perpindicular to it, (3) go out a user chosen distance on D, establish an origin=O (4) iterate over the screen with O at the center and coords P=O+linear comb(E,F), (5) within each pixel iteration do an inner loop proceeding incrementally toward the origin adding small deltas in direction -D each time: do the iteration- if it fails to converge for every pixel in the range the pixel iteration bails out; as soon as it converges for any point the pixel is established as an inside point-- the number of inner loop iterations is the relative distance and can be communicated to the fractint rendering routine as a z-value = color in the right rendering method. Unforturately this may entail ca. one billion points= a lot of calculation time. Perhaps bifurcation of the segment traversed in the inner loop could be used to check many fewer points. More satisfactorily, JoTz will show us a better way to do this, for the general case.
There are several definitions of 3D rendering in the Fractint context, and I think that what Jotz refers to is the technique where a point on a 2D fractal takes a Z-axis value according to a criterion such as escape time. It would be most interesting to see if the method that you've outlined above could provide us another 'slant' on the T-set. Ciao, Russell