On 2016/02/18 8:34 PM, Stephan Beal wrote: > Every calendar known to man sucks rocks in some regard or other, so > i'm not gonna sweat it. This is just a demo, and i've got a few hours > of budget left on it, so i'm working on this as the finale. (The > Mandelbrot CTE will be first, just to kind of blow their minds, before > we back way up and ease into it.)
Oh nice - nothing like some mind-blowing, and CTE is still one of my favourite additions to SQL. :) May I offer this CTE from the tutorials in SQLitespeed in case you have a Math library linked. (your math function names for cos(), sin() and degtorad() may differ): with graph(gWidth, aInc, gAngle, gCos, gCosA, gSin, gSinA) AS ( SELECT 20, 10, -90, 0, 0, 0, 0 UNION ALL SELECT gWidth,aInc,gAngle+aInc, printf('%d', round( cos( degtorad( gAngle + aInc ) ) * gWidth + gWidth + 1 ) ), printf('%d', gWidth * 2 + 2 - round( cos( degtorad( gAngle + aInc ) ) * gWidth + gWidth + 1 ) ), printf('%d', round( sin( degtorad( gAngle + aInc ) ) * gWidth + gWidth + 1 ) ), printf('%d', gWidth * 2 + 2 - round( sin( degtorad( gAngle + aInc ) ) * gWidth + gWidth + 1 ) ) FROM graph WHERE gAngle < 720 ) SELECT printf( '%4d', gAngle ) AS Angle, printf( '.%'||gCos||'s%'||gCosA||'s', '+', '.' ) AS Cosine, printf( '.%'||gSin||'s%'||gSinA||'s', '+', '.' ) AS Sine FROM graph WHERE gAngle >= 0; -- Angle | Cosine | Sine -- ----- | --------------------------------------------- | --------------------------------------------- -- 0 | . +. | . + . -- 10 | . +. | . + . -- 20 | . + . | . + . -- 30 | . + . | . + . -- 40 | . + . | . + . -- 50 | . + . | . + . -- 60 | . + . | . + . -- 70 | . + . | . + . -- 80 | . + . | . +. -- 90 | . + . | . +. -- 100 | . + . | . +. -- 110 | . + . | . + . -- 120 | . + . | . + . -- 130 | . + . | . + . -- 140 | . + . | . + . -- 150 | . + . | . + . -- 160 | . + . | . + . -- 170 | .+ . | . + . -- 180 | .+ . | . + . -- 190 | .+ . | . + . -- 200 | . + . | . + . -- 210 | . + . | . + . -- 220 | . + . | . + . -- 230 | . + . | . + . -- 240 | . + . | . + . -- 250 | . + . | . + . -- 260 | . + . | .+ . -- 270 | . + . | .+ . -- 280 | . + . | .+ . -- 290 | . + . | . + . -- 300 | . + . | . + . -- 310 | . + . | . + . -- 320 | . + . | . + . -- 330 | . + . | . + . -- 340 | . + . | . + . -- 350 | . +. | . + . -- 360 | . +. | . + . -- 370 | . +. | . + . -- 380 | . + . | . + . -- 390 | . + . | . + . -- 400 | . + . | . + . -- 410 | . + . | . + . -- 420 | . + . | . + . -- 430 | . + . | . + . -- 440 | . + . | . +. -- 450 | . + . | . +. -- 460 | . + . | . +. -- 470 | . + . | . + . -- 480 | . + . | . + . -- 490 | . + . | . + . -- 500 | . + . | . + . -- 510 | . + . | . + . -- 520 | . + . | . + . -- 530 | .+ . | . + . -- 540 | .+ . | . + . -- 550 | .+ . | . + . -- 560 | . + . | . + . -- 570 | . + . | . + . -- 580 | . + . | . + . -- 590 | . + . | . + . -- 600 | . + . | . + . -- 610 | . + . | . + . -- 620 | . + . | .+ . -- 630 | . + . | .+ . -- 640 | . + . | .+ . -- 650 | . + . | . + . -- 660 | . + . | . + . -- 670 | . + . | . + . -- 680 | . + . | . + . -- 690 | . + . | . + . -- 700 | . + . | . + . -- 710 | . +. | . + . -- 720 | . +. | . + . The first CTE sets up some parameters in the first 3 fields used to draw the graph - play with those parameters for fun. (I hope the mail system don't mess up the format too much...) Cheers! Ryan