FoxyCorndog

pgraph

Mar 26th, 2012
186
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #declare line             = 0;
  2. #declare parabola         = 1;
  3. #declare hyperbola        = 2;
  4. #declare sine             = 3;
  5. #declare cosine           = 4;
  6. #declare tangent          = 5;
  7. #declare logarithm        = 6;
  8. #declare naturalLogarithm = 7;
  9.  
  10. #declare category         = parabola;
  11.  
  12. //-----------------------------------
  13.  
  14. #declare graphHeight      = 50;
  15. #declare graphWidth       = 50;
  16. #declare incrementX       = -graphWidth  / 2;
  17. #declare incrementY       = -graphHeight / 2;
  18. #declare gridWidth        = 0.07;
  19. #declare gridDepth        = 0.5;
  20. #declare axesWidth        = 0.5;
  21. #declare axesDepth        = 2.5;
  22. #declare gridSpacing      = 2;
  23. #declare tickMarkLength   = 1.5;
  24.  
  25. #declare graphXPos        = incrementX;
  26. #declare graphYPos        = incrementY;
  27.  
  28. #declare elementsZPos     = -axesDepth / 2;
  29.  
  30. #declare pointCloseness   = 0.1;
  31.  
  32. camera
  33. {
  34.     location <0, 0, -graphHeight * 3>
  35.     look_at <0, 0, 0>
  36. }
  37.  
  38. light_source
  39. {
  40.     <0, 0, -graphHeight>
  41.     color rgb <1, 1, 1>
  42. }
  43.  
  44. #while (incrementY <= graphHeight / 2)
  45.    
  46.     #while (incrementX <= graphWidth / 2)
  47.        
  48.         box
  49.         {
  50.             <(incrementX) - (gridWidth / 2), -tickMarkLength / 2, -gridDepth / 2>
  51.             <(incrementX) + (gridWidth / 2), tickMarkLength / 2, gridDepth / 2>
  52.            
  53.             pigment
  54.             {
  55.                 color rgb <1, 1, 1>
  56.             }
  57.         }
  58.        
  59.         #declare incrementX = incrementX + 1;
  60.        
  61.     #end
  62.    
  63.     box
  64.     {
  65.         <-tickMarkLength / 2, incrementY - (gridWidth / 2), -gridDepth / 2>
  66.         <tickMarkLength / 2, incrementY + (gridWidth / 2) , gridDepth / 2>
  67.        
  68.         pigment
  69.         {
  70.             color rgb <1, 1, 1>
  71.         }
  72.     }
  73.    
  74.     #declare incrementY = incrementY + 1;
  75.    
  76. #end
  77.  
  78. box
  79. {
  80.     <-axesWidth / 2, -(graphHeight / 2), -axesDepth / 2>
  81.     <axesWidth / 2, graphHeight / 2, axesDepth / 2>
  82.    
  83.     pigment
  84.     {
  85.         color rgb <1, 0, 0>
  86.     }
  87. }
  88.  
  89. box
  90. {
  91.     <-(graphWidth / 2), -axesWidth / 2  , -axesDepth / 2>
  92.     <(graphWidth / 2), axesWidth / 2, axesDepth / 2>
  93.    
  94.     pigment
  95.     {
  96.         color rgb <1, 0, 0>
  97.     }
  98. }
  99.  
  100. #if (category = line)
  101.  
  102.     #declare varX          = 0;
  103.     #declare varY          = 0;
  104.     #declare varSlope      = 2;
  105.     #declare varYIntercept = 5;
  106.  
  107.     #declare varX          = ((-graphYPos) - varYIntercept) / (varSlope);
  108.     #declare varY          = (varSlope * varX) + varYIntercept;
  109.    
  110.     #declare varX2         = ((graphYPos) - varYIntercept) / (varSlope);
  111.     #declare varY2         = (varSlope * varX) + varYIntercept;
  112.  
  113.     cylinder
  114.     {
  115.         <varX, -graphYPos, 0>
  116.         <varX2, graphYPos, 0>
  117.         0.2
  118.        
  119.         pigment
  120.         {
  121.             color rgb <0, 0, 1>
  122.         }
  123.     }
  124.  
  125. #end
  126.  
  127. #if (category = parabola)
  128.     #declare upOrDown        = 0;
  129.     #declare leftOrRight     = 1;
  130.    
  131.     //-------------------------------------------
  132.     //- CHANGE THESE ONLY -----------------------
  133.     #declare opens           = leftOrRight;
  134.     #declare varP            = 5;
  135.     #declare varH            = 6;
  136.     #declare varK            = 3;
  137.     //-------------------------------------------
  138.     //-------------------------------------------
  139.    
  140.     #declare control         = 0;
  141.     #declare start           = 0;
  142.     #declare varX            = 0;
  143.     #declare varY            = 0;
  144.    
  145.     #if (varP > 0)
  146.         #declare posOrNeg = 1;
  147.     #else
  148.         #declare posOrNeg = -1;
  149.     #end
  150.    
  151.     #if (opens = upOrDown)
  152.         #declare start   = (graphWidth / 2) * -posOrNeg;
  153.         #declare varX = -sqrt(((4 * varP) * (graphHeight - varK))) + varH;
  154.         #declare varX2 = sqrt(((4 * varP) * (graphHeight - varK))) + varH;
  155.        
  156.         #declare gWidth = sqrt(pow(varX2 - varX, 2));
  157.        
  158.         #declare theEnd  = varX + (gWidth * ((clock) / 31));
  159.         #declare control = varX;
  160.     #end
  161.    
  162.     #if (opens = leftOrRight)
  163.         #declare start   = (graphHeight / 2) * -posOrNeg;
  164.         #declare varY    = ((1 / (4 * varP) * pow(((graphWidth) - varH), 2))) + varK;
  165.        
  166.         #declare varY2 = ((1 / (4 * varP) * pow(((-graphWidth) - varH), 2))) + varK;
  167.        
  168. //      #debug concat("ASDF: ", str(varY, 0, 1), " - ", str(varY2, 0, 1))
  169.        
  170.         #declare gHeight = sqrt(pow(varY2 - varY, 2));
  171.        
  172.         #declare theEnd  = varY + (gHeight * ((clock) / 31));
  173.         #declare control = varY;
  174.     #end
  175.    
  176.     #declare goneThrough = false;
  177.    
  178.     #while (control < theEnd)
  179.    
  180.         #if (control < 0)
  181.             #declare posOrNeg = -1;
  182.         #else
  183.             #declare posOrNeg =  1;
  184.         #end
  185.    
  186.         cylinder
  187.         {
  188.             <varX, varY, elementsZPos>
  189.            
  190.             #if (opens = upOrDown)
  191.                 #declare varY = ((1 / (4 * varP)) * pow((varX - varH), 2)) + varK;
  192.                 #declare varX = varX + (pointCloseness);
  193.             #end
  194.            
  195.             #if (opens = leftOrRight)
  196.                 #declare varX = sqrt(abs(((4 * varP) * (varY - varK)))) + varH;
  197.                 #declare varY = varY + (pointCloseness);
  198.             #end
  199.  
  200.             #declare control = control + (pointCloseness);
  201.            
  202.             <varX, varY, elementsZPos>
  203.            
  204.             #if (goneThrough)
  205.                 0.2
  206.             #else
  207.                 0.0
  208.             #end
  209.            
  210.             pigment
  211.             {
  212.                 color rgb <0, 0, 1>
  213.             }
  214.         }
  215.        
  216.         #declare goneThrough = true;
  217.     #end
  218. #end
  219.  
  220. #if (category = hyperbola)
  221.    
  222.     #declare upOrDown        = 0;
  223.     #declare leftOrRight     = 1;
  224.    
  225.     //-------------------------------------------
  226.     //- CHANGE THESE ONLY -----------------------
  227.     #declare opens           = upOrDown;
  228.     #declare varP            = 5;
  229.     #declare varH            = 6;
  230.     #declare varK            = -3;
  231.     //-------------------------------------------
  232.     //-------------------------------------------
  233.    
  234.     #declare control         = 0;
  235.     #declare start           = 0;
  236.     #declare varX            = 0;
  237.     #declare varY            = 0;
  238.    
  239.     #if (varP > 0)
  240.    
  241.         #declare posOrNeg = 1;
  242.    
  243.     #else
  244.    
  245.         #declare posOrNeg = -1;
  246.    
  247.     #end
  248.    
  249.     #if (opens = upOrDown)
  250.        
  251.         #declare start   = (graphHeight / 2) * -posOrNeg;
  252.         #declare varX    = sqrt(abs((4 * varP) * ((graphHeight) - varK))) + varH;
  253.         #declare theEnd  = varX;
  254.         #declare varX    = varX - (varX - varH) * 2;
  255.         #declare control = varX;
  256.        
  257.         #declare theEnd = theEnd - ( / (30 - clock));
  258.        
  259.     #end
  260.    
  261.     #if (opens = leftOrRight)
  262.        
  263.         #declare start   = (graphWidth / 2) * -posOrNeg;
  264.         #declare varY    = sqrt(abs((4 * varP) * ((graphWidth) - varH))) + varK;
  265.         #declare theEnd  = varY;
  266.         #declare varY    = varY - (varY - varK) * 2;
  267.         #declare control = varY;
  268.        
  269.         #declare theEnd = theEnd - ( / (30 - clock));
  270.        
  271.     #end
  272.    
  273.     #declare goneThrough = false;
  274.    
  275.     #while (control < theEnd)
  276.        
  277.         cylinder
  278.         {
  279.             <varX, varY, elementsZPos>
  280.            
  281.             #if (opens = upOrDown)
  282.                 #declare varY = ((1 / (4 * varP)) * ((varX - varH) * (varX - varH))) + varK;
  283.                 #declare varX = varX + (pointCloseness);
  284.             #end
  285.            
  286.             #if (opens = leftOrRight)      
  287.                 #declare varX = ((1 / (4 * varP)) * ((varY - varK) * (varY - varK))) + varH;
  288.                 #declare varY = varY + (pointCloseness);
  289.             #end
  290.            
  291.  
  292.            
  293.             #declare control = control + (pointCloseness);
  294.            
  295.             <varX, varY, elementsZPos>
  296.            
  297.             #if (goneThrough)
  298.                
  299.                 0.2
  300.                
  301.             #else
  302.                
  303.                 0.0
  304.                
  305.             #end
  306.            
  307.             pigment
  308.             {
  309.                 color rgb <0, 0, 1>
  310.             }
  311.         }
  312.        
  313.         #declare goneThrough = true;
  314.        
  315.     #end
  316.    
  317. #end
  318.  
  319. #if (category = sine)
  320.    
  321.     #declare varNum      = 2;
  322.     #declare varPow      = 1;
  323.     #declare varSinCooff = 8;
  324.    
  325.     #declare varX = -graphWidth;
  326.     #declare varY = 0;
  327.    
  328.     #declare goneThrough = false;
  329.    
  330.     #while (varX < graphWidth)
  331.            
  332.         cylinder
  333.         {
  334.             <varX, varY, elementsZPos>
  335.            
  336.             #declare varY = varSinCooff * sin(varNum + pow(varX, varPow));
  337.            
  338.             #declare varX = varX + pointCloseness;
  339.            
  340.             <varX, varY, elementsZPos>
  341.            
  342.             #if (goneThrough)
  343.                
  344.                 0.2
  345.                
  346.             #else
  347.            
  348.                 0.0
  349.                
  350.             #end
  351.            
  352.             pigment
  353.             {
  354.                 color rgb <0, 0, 1>
  355.             }
  356.         }
  357.        
  358.         #declare goneThrough = true;
  359.                    
  360.     #end
  361.    
  362. #end
  363.  
  364. #if (category = cosine)
  365.    
  366.     #declare varNum      = 2;
  367.     #declare varPow      = 1;
  368.     #declare varCosCooff = 8;
  369.    
  370.     #declare varX = -graphWidth;
  371.     #declare varY = 0;
  372.    
  373.     #declare goneThrough = false;
  374.    
  375.     #while (varX < graphWidth)
  376.            
  377.         cylinder
  378.         {
  379.             <varX, varY, elementsZPos>
  380.            
  381.             #declare varY = varCosCooff * cos(varNum + pow(varX, varPow));
  382.            
  383.             #declare varX = varX + pointCloseness;
  384.            
  385.             <varX, varY, elementsZPos>
  386.            
  387.             #if (goneThrough)
  388.                
  389.                 0.2
  390.                
  391.             #else
  392.            
  393.                 0.0
  394.                
  395.             #end
  396.            
  397.             pigment
  398.             {
  399.                 color rgb <0, 0, 1>
  400.             }
  401.         }
  402.        
  403.         #declare goneThrough = true;
  404.                    
  405.     #end
  406.    
  407. #end
  408.  
  409. #if (category = tangent)
  410.    
  411.     #declare varNum      = 2;
  412.     #declare varPow      = 1;
  413.     #declare varTanCooff = 8;
  414.    
  415.     #declare varX = -graphWidth;
  416.     #declare varY = 0;
  417.    
  418.     #declare goneThrough = false;
  419.    
  420.     #while (varX < graphWidth)
  421.            
  422.         cylinder
  423.         {
  424.             <varX, varY, elementsZPos>
  425.            
  426.             #declare varY = varTanCooff * tan(varNum + pow(varX, varPow));
  427.            
  428.             #declare varX = varX + pointCloseness;
  429.            
  430.             <varX, varY, elementsZPos>
  431.            
  432.             #if (goneThrough)
  433.                
  434.                 0.2
  435.                
  436.             #else
  437.            
  438.                 0.0
  439.                
  440.             #end
  441.            
  442.             pigment
  443.             {
  444.                 color rgb <0, 0, 1>
  445.             }
  446.         }
  447.        
  448.         #declare goneThrough = true;
  449.                    
  450.     #end
  451.    
  452. #end
  453.  
  454. #if (category = logarithm)
  455.    
  456.     #declare varNum      = 2;
  457.     #declare varPow      = 1;
  458.     #declare varLogCooff = 8;
  459.    
  460.     #declare varX = -graphWidth;
  461.     #declare varY = 0;
  462.    
  463.     #declare goneThrough = false;
  464.    
  465.     #while (varX < graphWidth)
  466.        
  467.         #if (varNum + pow(varX, varPow) > 0)
  468.            
  469.             cylinder
  470.             {
  471.                 <varX, varY, elementsZPos>
  472.                
  473.                 #declare varY = varLogCooff * log(varNum + pow(varX, varPow));
  474.                
  475.                 #declare varX = varX + pointCloseness;
  476.                
  477.                 <varX, varY, elementsZPos>
  478.                
  479.                 #if (goneThrough)
  480.                    
  481.                     0.2
  482.                    
  483.                 #else
  484.                
  485.                     0.0
  486.                    
  487.                 #end
  488.                
  489.                 pigment
  490.                 {
  491.                     color rgb <0, 0, 1>
  492.                 }
  493.             }
  494.            
  495.             #declare goneThrough = true;
  496.            
  497.         #else
  498.            
  499.             #declare varX = varX + pointCloseness;
  500.            
  501.         #end
  502.                    
  503.     #end
  504.    
  505. #end
  506.  
  507. #if (category = naturalLogarithm)
  508.    
  509.     #declare varNum      = 2;
  510.     #declare varPow      = 1;
  511.     #declare varLnCooff = 8;
  512.    
  513.     #declare varX = -graphWidth;
  514.     #declare varY = 0;
  515.    
  516.     #declare goneThrough = false;
  517.    
  518.     #while (varX < graphWidth)
  519.        
  520.         #if (varNum + pow(varX, varPow) > 0)
  521.            
  522.             cylinder
  523.             {
  524.                 <varX, varY, elementsZPos>
  525.                
  526.                 #declare varY = varLnCooff * ln(varNum + pow(varX, varPow));
  527.                
  528.                 #declare varX = varX + pointCloseness;
  529.                
  530.                 <varX, varY, elementsZPos>
  531.                
  532.                 #if (goneThrough)
  533.                    
  534.                     0.2
  535.                    
  536.                 #else
  537.                
  538.                     0.0
  539.                    
  540.                 #end
  541.                
  542.                 pigment
  543.                 {
  544.                     color rgb <0, 0, 1>
  545.                 }
  546.             }
  547.            
  548.             #declare goneThrough = true;
  549.            
  550.         #else
  551.            
  552.             #declare varX = varX + pointCloseness;
  553.            
  554.         #end
  555.                    
  556.     #end
  557.    
  558. #end
RAW Paste Data