Logo by AGUS - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Check out the originating "3d Mandelbulb" thread here
 
*
Welcome, Guest. Please login or register. April 19, 2024, 06:31:32 AM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: 1 2 [3]   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: New numbers set.  (Read 13792 times)
Description: Perhaps this new number is interesting for the generation of fractals in 3D
0 Members and 1 Guest are viewing this topic.
DarkBeam
Global Moderator
Fractal Senior
******
Posts: 2512


Fragments of the fractal -like the tip of it


« Reply #30 on: January 24, 2012, 09:08:06 AM »

No, because I can not modify bailout conditions in MB, as I said this makes your fractal impossible to be ported in Mandelbulb. (Actually)

It can be ported in Fragmentarium for example, but I don't have the time to do much investigation.

Syntopia can help you I think. Good luck smiley

(As the image states, that was a Makin 'brot)
Logged

No sweat, guardian of wisdom!
FFDiaz
Forums Freshman
**
Posts: 18



« Reply #31 on: February 08, 2012, 07:52:53 PM »

I have changed the structure of RC3 to unify the cycle basis (g) and (h) in a single that would be the conventional real numbers, in such a way that the square of a number z=x0+x1i+x2j which belong to RC3 would be:

z2=(x02-x12)+(2x0x1+x22)i+2x2(x0+x1)j

and the module of z would be: |z|=sqrt(x02+x12+x22)

with these changes, I made a small program in visualbasic with which I have obtained a series of sections of the Mandelbrot3D set thus generated.
As you can see in the attached images in the plane XY(z=0) gets the conventional Mandelbrot set. As we move away from it, the symmetry with respect to the X axis in the direction of the axis Y disappears, although  there is a symmetry with respect to the XY-plane in the Z direction. I also include an image of the silhouette of the complete set.

The code that I have generated the set is this if it is useful:

Public Class mandel3D
    Dim cx, cy, cz As Double
    Dim zx, zy, zz, x, y, z As Double
    Dim iternum, iter As Short
    Dim bailout, modulo As Single
    Dim xp, yp As Single
    Dim col As New System.Drawing.Pen(System.Drawing.Color.ForestGreen, 1)
    Dim formGraphics As System.Drawing.Graphics

    Private Sub Comenzar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Comenzar.Click
        bailout = 2
        iternum = 1000
       
        For cz = -2.2 To 2.2 Step 0.005
            For cy = -1.2 To 1.2 Step 0.005
                For cx = -2 To 1.2 Step 0.005
                    modulo = 0
                    zx = 0
                    zy = 0
                    zz = 0
                    iter = 0

                    While iter < iternum And modulo < bailout
                        x = zx * zx - zy * zy + cx
                        y = 2 * zy * zx + zz * zz + cy
                        z = 2 * zz * zx + 2 * zy * zz + cz
                        zx = x
                        zy = y
                        zz = z
                        modulo = Math.Sqrt(zx * zx + zy * zy + zz * zz)
                        iter = iter + 1
                    End While

                    If modulo < bailout Then plotset()

                Next cx
            Next cy
        Next cz

    End Sub


    Private Sub plotset()
        Dim centrox, centroy As Integer

        centrox = 200
        centroy = 200
           
        xp = centrox - (0.8660254038 * cx - 0.7071067812 * cy) * 150
        yp = centroy - (cz - 0.5 * cx - 0.7071067812 * cy) * 150
        formGraphics.DrawLine(col, xp, yp, xp + 1, yp + 1)
    End Sub

    Private Sub mandel3D_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        formGraphics = Panelplot.CreateGraphics()
    End Sub
End Class

From this new perspective I will also explore RC4 and represent only the complex part, now I'll tell.

Greetings Paco Fdez.


* z0.jpg (19.96 KB, 628x402 - viewed 554 times.)

* Z03.jpg (14.24 KB, 628x402 - viewed 594 times.)

* Z8.png (6.25 KB, 628x402 - viewed 559 times.)

* ZTOTAL.png (10.56 KB, 628x402 - viewed 759 times.)
Logged
Syntopia
Fractal Molossus
**
Posts: 681



syntopiadk
WWW
« Reply #32 on: February 08, 2012, 09:58:43 PM »

So these are standard complex numbers, with a third component, satisfying: j*j=i, and j*i=i*j=j, right? This will give images like the attached one.

Many people have tried 3-component Mandelbrot system with Cayley table like-multiplication (especially extensions of the complex numbers). I have also tested the most reasonable combinations myself (link).

If you are interested, I used Fragmentarium with the following script - you can see the 3-vector multiplication in the code below, if you want to check it:

Code:
#include "DE-Raytracer.frag"
#group Hypercomplex Thing

uniform int Iterations;  slider[0,16,100]
uniform float Threshold; slider[0,10,100]
uniform bool JuliaMode; checkbox[false]

//Julia constant
uniform vec3 C123; slider[(-1,-1,-1),(0.18,0.88,0.24),(1,1,1)]

// FFDiaz mul
vec3 mul(vec3  a, vec3 b) {
return vec3(
a.x*b.x- a.y*b.y,
      a.x*b.y+a.y*b.x+a.z*b.z,
     a.x*b.z+a.z*b.x+a.y*b.z+a.z*b.y);
}

float DE(vec3 pos) {
vec3 p = pos;
vec3 dp = vec3(1.0,0.0,0.0);
for (int i = 0; i < Iterations; i++) {
dp = 2.0* mul(p,dp);
p = mul(p,p) + (JuliaMode ? C123 : pos);
float p2 = dot(p,p);
orbitTrap = min(orbitTrap, abs(vec4(p.xyz,p2)));
if (p2 > Threshold) break;
}
float r = length(p);
return  0.5 * r * log(r) / length(dp);
}




* 3dm.jpg (85.19 KB, 711x599 - viewed 599 times.)
Logged
Alef
Fractal Supremo
*****
Posts: 1174



WWW
« Reply #33 on: February 10, 2012, 06:21:06 PM »

Coincidence. I tried this too. But using Chaos pro. It have pretty usefull compiler, some 3D engine, and I alredy have alike formula, so just needed to switch my equations with posted. Could be that there are some mistake in code or in formula as 3D looks at the time producing standart 2D mandelbrot. In 2D Chaos pro just cuts off unused quaternion parts, so write whatever in j and part, and it still will generate mandelbrot. So rewriten code to loop all variables and not just quaternionic z.

Bailout conditions included too.

In 2D formula 1 generates mixed inside and outside in real positive side. The colouring aren't the most beautifull, but it nicely accents features. Both formulas produced similar results, what means, that at least there is no accidental mistakes. Much the same as above. All including julia versions have the same streching.

Code:
FfDiaz (quaternion) {

parameter real bailout;
parameter int settype, power;
parameter bool testInverted;
parameter quaternion julia, perturb;
quaternion C;
real zx, zy, zz, zzx, zzy, zzz, Cx, Cy, Cz, temp, zw, zzw;

void init(void)
 {
  if (testInverted==true && settype=="Julia Set")
{
z = recip(pixel);
C = julia;
}
     else if (settype=="Julia Set")
    {
z = pixel;
C = julia;
    }
    else if (testInverted==true && settype=="Mandelbrot Set")
{
z= perturb;
C= recip(pixel);
}
    else
    {
z= perturb;
C= pixel;
    }


Cx=real(C);
Cy=imag(C);
Cz=part_j(C);

zx=real(z);
zy=imag(z);
zz=part_j(z);
zw=0;
}
void loop(void)
{




if (power=="formula 2")
{
 zzx = zx * zx - zy * zy + Cx;
 zzy = 2 * zy * zx + zz * zz + Cy;
 zzz = 2 * zz * zx + 2 * zy * zz + Cz;
}


if (power=="formula 1")
{
                      

zzx=zx*zx+zw*zw+Cx;
     zzw=2*zx*zw+zy*zy;
     zzy=2*zy*(zx - zw)+zz*zz+Cy;
     zzz=2*zz*(zx-zw+zy)+Cz;
 

}

if (power=="FunnyMistake")
{
    zw=imag(z);    
//replication of my mistake I made with zw;              

zzx=zx*zx+zw*zw+Cx;
     zzw=2*zx*zw+zy*zy;
     zzy=2*zy*(zx - zw)+zz*zz+Cy;
     zzz=2*zz*(zx-zw+zy)+Cz;
}

// Chaos pro cuts off unused number parts, so can't loop z.
 zw=zzw;
 zx=zzx;
 zy=zzy;
 zz=zzz;

z= quaternion(zzx, zzy, zzz, 0);

}
bool bailout(void)
{
return(  abs(zzx-zzw)+ abs(zzy) + abs(zzz) < bailout );
}
void description(void)
{
this.title = "FfDiaz";
//this.maxiter=17;
this.helpfile="http://www.fractalforums.com/index.php?topic=9842.0";

bailout.caption = "Bailout Value";
bailout.default = 3.0;
bailout.min = 0.5;
bailout.hint = "Larger number increases detalisation";

    settype.caption = "Set type";
    settype.enum = "Mandelbrot Set\nJulia Set";
    settype.default = 0;

    testInverted.caption="Inverted set";
    testInverted.default=false;

    power.caption = "formula";
    power.enum = "formula 2\nformula 1\nFunnyMistake";
    power.default = 0;

    julia.caption = "Julia Parameter";
    julia.default = (0.2,-0.5,-0.31,0);
    julia.hint = "4th value is not used";
    julia.visible = (settype=="Julia Set");

    perturb.caption = "Calculation Start";
    perturb.default = (0,0,0,0);
    perturb.hint = "Starts calculation with this number. 4th value is unused";
    perturb.visible = (settype=="Mandelbrot Set");
    perturb.min = -1.5;
    perturb.max = 1.5;
}
}


* Ffdiaz_formula1.jpg (71.77 KB, 800x360 - viewed 557 times.)

* Ffdiaz_formula2.jpg (54.61 KB, 480x359 - viewed 636 times.)

* ffdiaz_antenna.jpg (31.65 KB, 320x239 - viewed 693 times.)

* FFdiaz_julia.jpg (31.74 KB, 301x240 - viewed 923 times.)
Logged

fractal catalisator
Alef
Fractal Supremo
*****
Posts: 1174



WWW
« Reply #34 on: February 10, 2012, 06:32:27 PM »

During implementation I made a mistake, and it generated very interesting 2D, requiring bailout value of 3. Very catholic, throught I would prefared something kosher and 6 sided;) Fractal made of main square set with antenna with crosses and smaller square minibrots around. Like angular mandelbrot. Looks promising, a bitt like kalisets. Bailout value 2 produces vicsek fractal on antenna (jerusalem cross).

Pictures are pretty basic, coz I didn't used any colouring. IMHO this shows more of fractal, even if don't looks so good. Inside are coloured by bof60. This thing needs good tuning, and you'll have new kaliset like angular pattern 2D formula.

In attachments I included Chaos Pro fromula file. Just rename it to FFDiazBrot.cfm
p.s.
This forum part are very deep, probably too deep.

Code:

Cx=real(pixel);
Cy=imag(pixel);
Cz=part_j(pixel);

zx=real(z);
zy=imag(z);
zz=part_j(z);
zw=0;

if (power=="FunnyMistake")
{
    zw=imag(z);   
//replication of my mistake I made with zw;             

zzx=zx*zx+zw*zw+Cx;
     zzw=2*zx*zw+zy*zy;
     zzy=2*zy*(zx - zw)+zz*zz+Cy;
     zzz=2*zz*(zx-zw+zy)+Cz;
}
  zw=zzw;
  zx=zzx;
  zy=zzy;
  zz=zzz;

z= quaternion(zzx, zzy, zzz, 0);


* ffdiaz_mistake.jpg (111.41 KB, 611x480 - viewed 604 times.)

* ffdiaz_mistake2.jpg (121.5 KB, 640x480 - viewed 627 times.)
* FFDiazBrot.txt (2.53 KB - downloaded 472 times.)
Logged

fractal catalisator
Alef
Fractal Supremo
*****
Posts: 1174



WWW
« Reply #35 on: February 13, 2012, 03:38:08 PM »

I meant, way how cyclic numbers are implemented could contain mistake so the streching along y=-x. Maybe conditionals if, then, else, or some other non ordinary aproach...

Don't want to steal the thread or distract from seeking what everyone here are seeking. Here I optimised and tuned formula error I made. Negative equation influences just bailout, and not final z.
Allways the squares and crosses. Post function abs create some teuton orden fashioned burning ship. Features revealed by Kali suggested method using low iterations and exp smoothing.


Maybe the same thing deffined with higher powers would generate 5, 6, 7 sided figures, just that equations of it definetely aren't obvious. It looks that critical point is some x=0.7, which generates the most mandelbrot like thing.


Here dgoes Chaos pro:
Code:
Zuzubrot {
// Made this by trying to implement version of true 3D mandelbrot set
// and making a mistake. Based on work of Francisco de Asis Fernandes Diaz
// about cyclic numbers and little bit of mine.
// http://www.fractalforums.com/index.php?topic=9842.0

// Similar to kalisets, but of chekuer squares and crosses.
// As with kalisets, details is revealed by exponent
// smoothing or twin lamps with small (colour) iteration values.  

// by Edgar Malinovsky 12.02.2012.
// You may redistribute this algorithm, modify, derivate or use comercialy as you wish as long as you give proper credits.

parameter real bailout;
parameter int settype, function;
parameter bool testInverted;
parameter complex julia, perturb;
complex C;
real zx, zy, zzx, zzy, zzw, Cx, Cy;

void init(void)
 {
  if (testInverted==true && settype=="Julia Set")
{
z = recip(pixel);
C = julia;
}
     else if (settype=="Julia Set")
    {
z = pixel;
C = julia;
    }
    else if (testInverted==true && settype=="Mandelbrot Set")
{
z= perturb;
C= recip(pixel);
}
    else
    {
z= perturb;
C= pixel;
    }

Cx=real(C);
Cy=imag(C);

}
void loop(void)
{

zx=real(z);
zy=imag(z);  
//replication of my mistake I made implementing in 3D;              

zzx=zx*zx+zy*zy+Cx;
zzw=12*zx*zy+12*zy*zy; // just for a half-newton bailout.
zzy=2*zy*zx+Cy;

 zx=zzx;
 zy=zzy;
z= complex(zzx, zzy);

if (function=="Abs")
{
z=abs(z);
}
else if (function=="Conj")
{
z=conj(z);
}
else if (function=="Naked singularity")
{
z=z;
}

}
bool bailout(void)
{
return(  abs(zzx-zzw)+ abs(zzy)  <= bailout );
}
void description(void)
{
this.title = "Zuzubrot";
this.helpfile="http://www.fractalforums.com/index.php?topic=9842.0";

bailout.caption = "Bailout Value";
bailout.default = 12.0;
bailout.min = 0.5;
bailout.hint = "Larger number increases detalisation";

    settype.caption = "Set type";
    settype.enum = "Mandelbrot Set\nJulia Set";
    settype.default = 0;

    testInverted.caption="Inverted set";
    testInverted.default=false;

function.caption = "Post function";
function.enum= "Naked singularity\nAbs\nConj";
function.default=0;

    julia.caption = "Julia Parameter";
    julia.default = (-1.6,0);
    julia.hint = "4th value is not used";
    julia.visible = (settype=="Julia Set");

    perturb.caption = "Calculation Start";
    perturb.default = (0.5,0);
    perturb.hint = "Starts calculation with this number. 4th value is unused";
    perturb.visible = (settype=="Mandelbrot Set");
}
}

Today expires my UF, but here is UF code, too.
Code:
Zuzubrot {
; Made this by trying to implement version of true 3D mandelbrot set
; and making a mistake. Based on work of Francisco de Asis Fernandes Diaz
; about cyclic numbers and little bit of mine.
; http://www.fractalforums.com/index.php?topic=9842.0

; Similar to kalisets, but of chekuer squares and crosses.
; As with kalisets, details is revealed by exponent
; smoothing or twin lamps with small (colour) iteration values.  

; by Edgar Malinovsky 12.02.2012.
; You may redistribute this algorithm, modify, derivate or use comercialy as you wish as long as you give proper credits.

global:
init:
complex c=0
float zx=0
float zy =0
float zzx =0
float zzy =0
float zzw =0
float cx =0
float cy=0

IF (@settype=="Mandelbrot")
IF (@inverted)
c=1/#pixel
ELSE
c=#pixel
ENDIF
z=@start

ELSEIF (@settype=="Julia")
IF (@inverted)
z= 1/#pixel
ELSE
z= #pixel
ENDIF
c=@julia
ENDIF
cx=real(c)
cy=imag(c)
loop:
zx=real(z)
zy=imag(z)

zzx=zx*zx+zy*zy+cx
zzw=12*zx*zy+12*zy*zy; just for a half-newton bailout.
zzy=2*zy*zx+cy

zx=zzx
zy=zzy
z= zzx + 1i* zzy

IF (@function=="Abs")
z=abs(z)
ELSEIF (@function=="Conj")
z=conj(z)
ELSEIF (@function=="Naked singularity")
z=z
ENDIF

bailout:
abs(zzx-zzw)+ abs(zzy) <= @bailout

default:
title = "zTemplarbrot"
magn = 1
center = (-0.5, 0)
periodicity = 0
  
param settype
caption="Set type"
default=0
enum="Mandelbrot" "Julia"
endparam

  param switchsettype
    caption = "switch to"
    default = 1
    enum = "Mandelbrot" "Julia"
    visible = false
  endparam

  
  float param bailout
    caption = "Bailout Value"
    default = 12.0
    min = 0.5
    hint = "This parameter defines how soon an orbit bails out while \
            iterating."
  endparam

param inverted
caption ="Inverted Set"
default = FALSE
hint="The same as circle inverse but implemented in equation."
endparam
 
param function
caption="Post function"
default=0
enum="Naked singularity" "Abs" "Conj"
endparam

  complex param julia
    caption="Julia Seed"
    default=(-1.6, 0)
    visible = (@settype=="Julia")
  endparam

 complex  param start
    caption = "Starting Point"
    default = (0.5,0)
    visible = (@settype=="Mandelbrot")
    hint = "The starting point parameter can be used to distort the set."
  endparam

switch:
type="Zuzubrot"
julia=#pixel
function=function
bailout=bailout
inverted=inverted
settype= switchsettype
switchsettype=settype
start=#pixel
}

« Last Edit: February 13, 2012, 03:41:49 PM by Asdam » Logged

fractal catalisator
DarkBeam
Global Moderator
Fractal Senior
******
Posts: 2512


Fragments of the fractal -like the tip of it


« Reply #36 on: February 13, 2012, 06:44:16 PM »

Looks like Kali's Mandelbrot on whatever numbers... wink
Logged

No sweat, guardian of wisdom!
FFDiaz
Forums Freshman
**
Posts: 18



« Reply #37 on: February 14, 2012, 10:01:07 PM »

In keeping with the simplification that I already commented of the ciclo-bases (g) and (h), I have represented the RC3 and set some RC4 to some fixed value x and drawing only the complex part. I include images and code in basic with which they have generated.

Code:
Public Class mandelRC4
    Dim cx, cy, cz, ct As Double
    Dim zx, zy, zz, zt, x, y, z, t As Double
    Dim iternum, iter As Short
    Dim bailout, modulo As Single
    Dim parametro_color As Single
    Dim xp, yp As Single
    Dim col As New System.Drawing.Pen(System.Drawing.Color.Black, 2)
    Dim formGraphics As System.Drawing.Graphics

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        formGraphics = PanelRC4.CreateGraphics()
    End Sub

    Private Sub Button_Comenzar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Comenzar.Click
        bailout = 2
        iternum = 200
        cx = -0.5
        cy = 0
        cz = 0
        ct = 0
        For ct = -1.5 To 1.5 Step 0.005
            For cz = -1.8 To 1.8 Step 0.005
                For cy = -2 To 2 Step 0.01
                   
                        modulo = 0
                        zx = 0
                        zy = 0
                        zz = 0
                        zt = 0
                        iter = 0

                        While iter < iternum And modulo < bailout
                            x = zx * zx - zy * zy + cx
                            y = 2 * zx * zy + zz * zz + cy
                            z = 2 * zz * (zx + zy) + zt * zt + cz
                            t = 2 * zt * (zx + zy) + zz * zt + ct
                            zx = x
                            zy = y
                            zz = z
                            zt = t
                            modulo = Math.Sqrt(zx * zx + zy * zy + zz * zz + zt * zt)
                            iter = iter + 1
                        End While

                        If modulo < bailout Then
                            parametro_color = (600 * modulo) Mod 255
                            plotset()
                        End If
                   Next cy
            Next cz
        Next ct
    End Sub

    Private Sub Button_Detener_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Detener.Click
        End
    End Sub

    Private Sub plotset()
        Dim centrox, centroy As Integer

        centrox = 250
        centroy = 250
        col.Color = Color.FromArgb(255, parametro_color, 2 * parametro_color / 3, 255)

        xp = centrox - (0.8660254038 * cy - 0.7071067812 * cz) * 150
        yp = centroy - (ct - 0.5 * cy - 0.7071067812 * cz) * 150
        formGraphics.DrawLine(col, xp, yp, xp + 1, yp + 1)

    End Sub
End Class

As you can see my ability as a programmer it is rather limited.

Best regards


* man3D-3.png (141.25 KB, 548x382 - viewed 572 times.)

* RC4 para x=0.png (104.78 KB, 462x389 - viewed 562 times.)

* RC4 para x=-0dot5.png (99.26 KB, 450x382 - viewed 555 times.)
Logged
FFDiaz
Forums Freshman
**
Posts: 18



« Reply #38 on: February 15, 2012, 01:38:38 AM »

Other also interesting results.


* RC4 para x=0dot12345.png (92.7 KB, 573x391 - viewed 584 times.)

* RC4 para x=0dot3.png (80.15 KB, 569x397 - viewed 572 times.)
Logged
Alef
Fractal Supremo
*****
Posts: 1174



WWW
« Reply #39 on: February 28, 2012, 05:35:06 PM »

Result looks somewhat stretched and irregular, indicating that it may have some problems..

Maybe using unused 4D (all 5 number parts) could generate more nice mandelbrot set. At least hypothesis seems to be pretty logical and completely fit with exponent function colouring observation.
« Last Edit: March 01, 2012, 04:37:12 PM by Asdam » Logged

fractal catalisator
FFDiaz
Forums Freshman
**
Posts: 18



« Reply #40 on: March 18, 2012, 01:29:21 AM »

I have been exploring RC3 for the iteration function f (z) = z ^ 4 + c which shows the lack of associativity and the cyclical properties of j. I have also improved the subroutine of representation with which I get a stronger 3D effect images.

Greetings Paco Fdez.


* RC3 z4b.png (186.7 KB, 594x386 - viewed 562 times.)

* RC3 z4.png (177.34 KB, 566x387 - viewed 587 times.)

* RC3 z4bzoom3.jpg (140.02 KB, 600x389 - viewed 563 times.)
Logged
Pages: 1 2 [3]   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
irrational numbers as game dungeons Mathematics hgjf2 7 5939 Last post February 14, 2013, 08:35:18 PM
by hgjf2
New Math can add Trillions of numbers at the same TIME! (new) Theories & Research kevinmorais 0 445 Last post March 25, 2013, 03:14:09 PM
by kevinmorais
Geometry of Numbers Images Showcase (Rate My Fractal) alexl 3 1369 Last post February 12, 2014, 05:42:33 PM
by eiffie
Algebraic Numbers (new) Theories & Research kram1032 0 383 Last post August 13, 2015, 12:00:51 AM
by kram1032
Nature by numbers General Discussion Caleidoscope 0 2751 Last post October 08, 2017, 02:44:48 PM
by Caleidoscope

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.324 seconds with 28 queries. (Pretty URLs adds 0.017s, 2q)