Gerald, An amazing image... Hell of a job! It'll probably take me a while to fathom the mechanisms you employ in your formula to accomplish this. Could you say a few words about the theory involved? It's been about three years since we began to explore the 'T-set' idea on this list, and it comes to a fascinating fruition in Fractint at last. Ever since Paul Bourke's POVray renditions, I've had some variants on this 3-D M-set in mind, and I've included a par file of the complementary 'C-set' below. Some 2-D renderings of this object are facilitated by a simple toggle in certain M-set formulas. E.g., MsetCset1 {;toggle fn1 between 'ident' and 'conj' z=0, c=(pixel): z=fn1(z^2+c) z < 4 } MsetCset2 {;toggle p1 between '1' and '-1' x=real(pixel),y=imag(pixel) x1=y1=0: a=x1^2-y1^2 b=p1*(2*x1*y1) x1=a+x,y1=b+y z=x1^2+y1^2 z < 4 } To get this effect in the 'T-set_in_3d' formula, I changed the line 'x1 = a + cx, y1 = b + cy, z1 = c + cz' to read 'x1 = c + cx, y1 = b + cy, z1 = a + cz'. Any two-element transposition of a b c gives the same effect, just different orientations. Thanks again for your innovations. Ciao, Russell ---------------------------- Parameters below ------------------------------ C-set_in_3d {;Greyscale depth image ; reset=2004 type=formula formulafile=test.frm formulaname=3d_C-set passes=g center-mag=-0.68046/-0.24858/0.9363296 params=0/0/-0.75/0.75/0/0/0/4/150/253 float=y maxiter=2000000000 outside=summ periodicity=0 colors=000zzzyzzzyzzyyyyyxyyyxzyxxxxxwxxxwyxwwwwwvwwwvxwvvvvvuvvvuwvuuuu\ utuuutvutttttstttsutsssssrsssrtsrrrrrqrrrqsrqqqqqpqqqprqpppppopppoqpoooo\ onooonponnnnnmnnnmonmmmmmlmmmlnmlllllklllkmlkkkkkjkkkjlkjjjjjijjjikjiiii\ ihiiihjihhhhhghhhgihgggggfgggfhgfffffefffegfeeeeedeeedfedddddcdddcedcccc\ cbcccbdcbbbbbabbbacbaaaaa`aaa`ba`````_```_a`_____Z___Z`_ZZZZZYZZZY_ZYYYY\ YXYYYXZYXXXXXWXXXWYXWWWWWVWWWVXWVVVVVUVVVUWVUUUUUTUUUTVUTTTTTSTTTSUTSSSS\ SRSSSRTSRRRRRQRRRQSRQQQQQPQQQPRQPPPPPOPPPOQPOOOOONOOONPONNNNNMNNNMONMMMM\ MLMMMLNMLLLLLKLLLKMLKKKKKJKKKJLKJJJJJIJJJIKJIIIIIHIIIHJIHHHHHGHHHGIHGGGG\ GFGGGFHGFFFFFEFFFEGFEEEEEDEEEDFEDDDDDCDDDCEDCCCCCBCCCBDCBBBBBABBBACBAAAA\ A9AAA9BA9999989998A98888878887987777767776876666656665765555545554654444\ 4344435433333233324322222122213211111011102100000000PPP } frm:3d_C-set {;periodicity=no, outside=summ ;maxit > p5real*(p5imag+1) ;-------------------------------------------- ;p1real: Rotation about x-axis (1st rotation) ;p1imag: Rotation about y-axis (2nd rotation) ;p2real: Far clipping plane ;p2imag: Near clipping plane ;p3real: x1(0) ;p3imag: y1(0) ;p4real: z1(0) ;p4imag: Bailout ;p5real: Maxiter per slice ;p5imag: Number of slices - 1 ;-------------------------------------------- ; bailout = imag(p4), tiefnum = imag(p5) delta = (real(p2)-imag(p2))/tiefnum tmp = pi/180 rotXax = exp(flip(real(p1)*tmp)), rotYax = exp(flip(imag(p1)*tmp)) ; HPixXY = rotYax VPixZ = real(rotXax) VPixXY = flip(conj(rotYax)) NXY = VPixZ*VPixXY NZ = imag(conj(rotXax)) VPixXY = -NZ*VPixXY ; tmp = NXY*imag(p2) + HPixXY*real(pixel) + VPixXY*imag(pixel) cx = cx0 = real(tmp), cy = cy0 = imag(tmp) cz = cz0 = NZ*imag(p2) + VPixZ*imag(pixel) ;HPixZ -> 0 tmp = NXY*delta, dcx = real(tmp), dcy = imag(tmp) dcz = NZ*delta x1 = real(p3) y1 = imag(p3) z1 = real(p4) j = m = i = 0: a = sqr(x1) + 2*y1*z1 b = sqr(z1) + 2*x1*y1 c = sqr(y1) + 2*x1*z1 x1 = c + cx, y1 = b + cy, z1 = a + cz IF (bailout >= (sqr(x1)+sqr(y1)+sqr(z1))) i = i + 1 ELSE i = 0 m = m + 1 cx = cx0 = cx0 + dcx cy = cy0 = cy0 + dcy cz = cz0 = cz0 + dcz x1 = real(p3), y1 = imag(p3), z1 = real(p4) ENDIF z = m - j j = j + 1 tiefnum >= m && p5 >= i } ---------------------------- End of parameters ----------------------------- ----- Original Message ----- From: "Gerald K. Dobiasovsky" <gerald.dob@aon.at> To: "Fractint and General Fractals Discussion" <fractint@mailman.xmission.com> Subject: [Fractint] Re: quaternion product correction Date: Thu, 3 Nov 2005 02:45:56 +0100
[Russell Walsmith, regarding Triternions and the rendereing thereof]
Paul Bourke's rendering seems to use some density cloud function (probably the number of iterations accumulated while stepping along the line-of-sight for each pixel), so the object's outside is structured as well.
All I can offer for the moment is a greyscale depth rendering similar to Fractint's Julibrot type (that is, the object is solid and the surrounding space is transparent).
You can achieve a kind of outside density rendering by switching from outside=summ to outside=iter, but the colors will wrap around many times, which really doesn't look good.
Gerald
---------------------------- Parameters below ------------------------------
T-set_in_3d {;Greyscale depth image ; reset=2004 type=formula formulafile=test.frm formulaname=Rot3d_T-set passes=g center-mag=-0.68046/-0.24858/0.9363296 params=0/0/-0.75/0.75/0/0/0/4/150/253 float=y maxiter=2000000000 outside=summ periodicity=0 colors=000zzzyzzzyzzyyyyyxyyyxzyxxxxxwxxxwyxwwwwwvwwwvxwvvvvvuvvvuwvuuuu\ utuuutvutttttstttsutsssssrsssrtsrrrrrqrrrqsrqqqqqpqqqprqpppppopppoqpoooo\ onooonponnnnnmnnnmonmmmmmlmmmlnmlllllklllkmlkkkkkjkkkjlkjjjjjijjjikjiiii\ ihiiihjihhhhhghhhgihgggggfgggfhgfffffefffegfeeeeedeeedfedddddcdddcedcccc\ cbcccbdcbbbbbabbbacbaaaaa`aaa`ba`````_```_a`_____Z___Z`_ZZZZZYZZZY_ZYYYY\ YXYYYXZYXXXXXWXXXWYXWWWWWVWWWVXWVVVVVUVVVUWVUUUUUTUUUTVUTTTTTSTTTSUTSSSS\ SRSSSRTSRRRRRQRRRQSRQQQQQPQQQPRQPPPPPOPPPOQPOOOOONOOONPONNNNNMNNNMONMMMM\ MLMMMLNMLLLLLKLLLKMLKKKKKJKKKJLKJJJJJIJJJIKJIIIIIHIIIHJIHHHHHGHHHGIHGGGG\ GFGGGFHGFFFFFEFFFEGFEEEEEDEEEDFEDDDDDCDDDCEDCCCCCBCCCBDCBBBBBABBBACBAAAA\ A9AAA9BA9999989998A98888878887987777767776876666656665765555545554654444\ 4344435433333233324322222122213211111011102100000000PPP }
frm:Rot3d_T-set {;periodicity=no, outside=summ ;maxit > p5real*(p5imag+1) ;-------------------------------------------- ;p1real: Rotation about x-axis (1st rotation) ;p1imag: Rotation about y-axis (2nd rotation) ;p2real: Far clipping plane ;p2imag: Near clipping plane ;p3real: x1(0) ;p3imag: y1(0) ;p4real: z1(0) ;p4imag: Bailout ;p5real: Maxiter per slice ;p5imag: Number of slices - 1 ;-------------------------------------------- ; bailout = imag(p4), tiefnum = imag(p5) delta = (real(p2)-imag(p2))/tiefnum tmp = pi/180 rotXax = exp(flip(real(p1)*tmp)), rotYax = exp(flip(imag(p1)*tmp)) ; HPixXY = rotYax VPixZ = real(rotXax) VPixXY = flip(conj(rotYax)) NXY = VPixZ*VPixXY NZ = imag(conj(rotXax)) VPixXY = -NZ*VPixXY ; tmp = NXY*imag(p2) + HPixXY*real(pixel) + VPixXY*imag(pixel) cx = cx0 = real(tmp), cy = cy0 = imag(tmp) cz = cz0 = NZ*imag(p2) + VPixZ*imag(pixel) ;HPixZ -> 0 tmp = NXY*delta, dcx = real(tmp), dcy = imag(tmp) dcz = NZ*delta x1 = real(p3) y1 = imag(p3) z1 = real(p4) j = m = i = 0: a = sqr(x1) + 2*y1*z1 b = sqr(z1) + 2*x1*y1 c = sqr(y1) + 2*x1*z1 x1 = a + cx, y1 = b + cy, z1 = c + cz IF (bailout >= (sqr(x1)+sqr(y1)+sqr(z1))) i = i + 1 ELSE i = 0 m = m + 1 cx = cx0 = cx0 + dcx cy = cy0 = cy0 + dcy cz = cz0 = cz0 + dcz x1 = real(p3), y1 = imag(p3), z1 = real(p4) ENDIF z = m - j j = j + 1 tiefnum >= m && p5 >= i }
---------------------------- End of parameters -----------------------------
_______________________________________________ Fractint mailing list Fractint@mailman.xmission.com http://mailman.xmission.com/cgi-bin/mailman/listinfo/fractint