Re: [Fractint] quaternion product correction
Tim, Your mention of POVRay (below) inspires me to inquire if Fractint can be enabled to provide the kind of looks at 3D objects such as are seen in this 'T-set' video at http://ixitol.com/html/videos.html This object, rendered in POVRay, is generated by the formula T-set { x=real(pixel), y=imag(pixel), v=p1 x1=y1=v1=0: a = x1^2 + 2*y1*v1 b = v1^2 + 2*x1*y1 c = y1^2 + 2*x1*v1 x1 = a+x, y1 = b+y, v1 = c+v z = x1^2 + y1^2 + v1^2 z < 100 } Perhaps it is a function of my still limited familiarity with Fractint, but thus far only 2D slices of this object have rendered therein, and those views only in planes perpendicular to one of the three axes. Does Fractint offer functionalities in this respect of which I am yet unaware? If not, would it be possible perhaps to port over some of the pertinent POVRay code? It would be awesome if this kind of 3D imaging were possible "in house". Ciao, Russell ----- Original Message ----- From: "Tim Wegner" <twegner@swbell.net> To: "Fractint and General Fractals Discussion" <fractint@mailman.xmission.com> Subject: Re: [Fractint] quaternion product correction Date: Tue, 25 Oct 2005 21:13:27 -0600
More concerning my correspondence with Wes Loewer.
One of the things that attracted me to Hypercomplex numbers was that there is a general way to calculate a function on the hypercomplex numbers from the analogous complex function. Wes showed me how to do the same thing with quaternions. It isn't quite as elegant, but it's not hard. This means I could add fractal types quaternion and quaternionj that are exact analogues (with equal generality) of the hypercomplex and hypercomplexj types. (These are general because they use a function variable that can be set to a variety of analytic functions.) There are some quaternion types already in fractint but they are less general.
I guess I should check out POVray also for the same generalization possibility.
I'm enjoying the possibility of this project since I haven't contributed any code to fractint for a long time. Jonathan has been holding down the fort by himself.
Tim
_______________________________________________ Fractint mailing list Fractint@mailman.xmission.com http://mailman.xmission.com/cgi-bin/mailman/listinfo/fractint
Russell asked:
Perhaps it is a function of my still limited familiarity with Fractint, but thus far only 2D slices of this object have rendered therein, and those views only in planes perpendicular to one of the three axes. Does Fractint offer functionalities in this respect of which I am yet unaware? If not, would it be possible perhaps to port over some of the pertinent POVRay code? It would be awesome if this kind of 3D imaging were possible "in house".
Fractint is almost exclusively limited to 2D renderings. There are exceptions, such as the julibrot fractal type which has a built-in greyscale-depth rendering in 3D, and Julibrot as well as some orbit types which have red-blue binocular 3D. POVray is inherently a 3D renderer, and it works better to implement 3D fractals directly in POVray. Pascal Massimino and I implemented did this for some hypercomplex and quaternion fractal objects. This isn't the last word on this subject, for sure. Tim
[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 -----------------------------
participants (3)
-
Gerald K. Dobiasovsky -
Russell Walsmith -
Tim Wegner