FoxyCorndog

POV-Ray graph

Mar 21st, 2012
177
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>
  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.  
  129.     #declare upOrDown        = 0;
  130.     #declare leftOrRight     = 1;
  131.    
  132.     //-------------------------------------------
  133.     //- CHANGE THESE ONLY -----------------------
  134.     #declare opens           = upOrDown;
  135.     #declare varP            = 5;
  136.     #declare varH            = 6;
  137.     #declare varK            = -3;
  138.     //-------------------------------------------
  139.     //-------------------------------------------
  140.    
  141.     #declare control         = 0;
  142.     #declare start           = 0;
  143.     #declare varX            = 0;
  144.     #declare varY            = 0;
  145.    
  146.     #if (varP > 0)
  147.    
  148.         #declare posOrNeg = 1;
  149.    
  150.     #else
  151.    
  152.         #declare posOrNeg = -1;
  153.    
  154.     #end
  155.    
  156.     #if (opens = upOrDown)
  157.        
  158.         #declare start   = (graphHeight / 2) * -posOrNeg;
  159.         #declare varX    = sqrt(abs((4 * varP) * ((graphHeight) - varK))) + varH;
  160.         #declare theEnd  = varX;
  161.         #declare varX    = varX - (varX - varH) * 2;
  162.         #declare control = varX;
  163.        
  164.     #end
  165.    
  166.     #if (opens = leftOrRight)
  167.        
  168.         #declare start   = (graphWidth / 2) * -posOrNeg;
  169.         #declare varY    = sqrt(abs((4 * varP) * ((graphWidth) - varH))) + varK;
  170.         #declare theEnd  = varY;
  171.         #declare varY    = varY - (varY - varK) * 2;
  172.         #declare control = varY;
  173.        
  174.     #end
  175.    
  176.     #declare goneThrough = false;
  177.    
  178.     #while (control < theEnd)
  179.        
  180.         cylinder
  181.         {
  182.             <varX, varY, elementsZPos>
  183.            
  184.             #if (opens = upOrDown)
  185.        
  186.             #declare varY = ((1 / (4 * varP)) * ((varX - varH) * (varX - varH))) + varK;
  187.        
  188.             #end
  189.            
  190.             #if (opens = leftOrRight)
  191.                
  192.                 #declare varX = ((1 / (4 * varP)) * ((varY - varK) * (varY - varK))) + varH;
  193.                
  194.             #end
  195.            
  196.             #if (opens = leftOrRight)
  197.        
  198.             #declare varY = varY + (pointCloseness);
  199.        
  200.             #end
  201.            
  202.             #if (opens = upOrDown)
  203.                
  204.                 #declare varX = varX + (pointCloseness);
  205.                
  206.             #end
  207.            
  208.             #declare control = control + (pointCloseness);
  209.            
  210.             <varX, varY, elementsZPos>
  211.            
  212.             #if (goneThrough)
  213.                
  214.                 0.2
  215.                
  216.             #else
  217.                
  218.                 0.0
  219.                
  220.             #end
  221.            
  222.             pigment
  223.             {
  224.                 color rgb <0, 0, 1>
  225.             }
  226.         }
  227.        
  228.         #declare goneThrough = true;
  229.        
  230.     #end
  231.  
  232. #end
  233.  
  234. #if (category = hyperbola)
  235.    
  236.     #declare upOrDown        = 0;
  237.     #declare leftOrRight     = 1;
  238.    
  239.     //-------------------------------------------
  240.     //- CHANGE THESE ONLY -----------------------
  241.     #declare opens           = upOrDown;
  242.     #declare varP            = 5;
  243.     #declare varH            = 6;
  244.     #declare varK            = -3;
  245.     //-------------------------------------------
  246.     //-------------------------------------------
  247.    
  248.     #declare control         = 0;
  249.     #declare start           = 0;
  250.     #declare varX            = 0;
  251.     #declare varY            = 0;
  252.    
  253.     #if (varP > 0)
  254.    
  255.         #declare posOrNeg = 1;
  256.    
  257.     #else
  258.    
  259.         #declare posOrNeg = -1;
  260.    
  261.     #end
  262.    
  263.     #if (opens = upOrDown)
  264.        
  265.         #declare start   = (graphHeight / 2) * -posOrNeg;
  266.         #declare varX    = sqrt(abs((4 * varP) * ((graphHeight) - varK))) + varH;
  267.         #declare theEnd  = varX;
  268.         #declare varX    = varX - (varX - varH) * 2;
  269.         #declare control = varX;
  270.        
  271.     #end
  272.    
  273.     #if (opens = leftOrRight)
  274.        
  275.         #declare start   = (graphWidth / 2) * -posOrNeg;
  276.         #declare varY    = sqrt(abs((4 * varP) * ((graphWidth) - varH))) + varK;
  277.         #declare theEnd  = varY;
  278.         #declare varY    = varY - (varY - varK) * 2;
  279.         #declare control = varY;
  280.        
  281.     #end
  282.    
  283.     #declare goneThrough = false;
  284.    
  285.     #while (control < theEnd)
  286.        
  287.         cylinder
  288.         {
  289.             <varX, varY, elementsZPos>
  290.            
  291.             #if (opens = upOrDown)
  292.        
  293.             #declare varY = ((1 / (4 * varP)) * ((varX - varH) * (varX - varH))) + varK;
  294.        
  295.             #end
  296.            
  297.             #if (opens = leftOrRight)
  298.                
  299.                 #declare varX = ((1 / (4 * varP)) * ((varY - varK) * (varY - varK))) + varH;
  300.                
  301.             #end
  302.            
  303.             #if (opens = leftOrRight)
  304.        
  305.             #declare varY = varY + (pointCloseness);
  306.        
  307.             #end
  308.            
  309.             #if (opens = upOrDown)
  310.                
  311.                 #declare varX = varX + (pointCloseness);
  312.                
  313.             #end
  314.            
  315.             #declare control = control + (pointCloseness);
  316.            
  317.             <varX, varY, elementsZPos>
  318.            
  319.             #if (goneThrough)
  320.                
  321.                 0.2
  322.                
  323.             #else
  324.                
  325.                 0.0
  326.                
  327.             #end
  328.            
  329.             pigment
  330.             {
  331.                 color rgb <0, 0, 1>
  332.             }
  333.         }
  334.        
  335.         #declare goneThrough = true;
  336.        
  337.     #end
  338.    
  339. #end
  340.  
  341. #if (category = sine)
  342.    
  343.     #declare varNum      = 2;
  344.     #declare varPow      = 1;
  345.     #declare varSinCooff = 8;
  346.    
  347.     #declare varX = -graphWidth;
  348.     #declare varY = 0;
  349.    
  350.     #declare goneThrough = false;
  351.    
  352.     #while (varX < graphWidth)
  353.            
  354.         cylinder
  355.         {
  356.             <varX, varY, elementsZPos>
  357.            
  358.             #declare varY = varSinCooff * sin(varNum + pow(varX, varPow));
  359.            
  360.             #declare varX = varX + pointCloseness;
  361.            
  362.             <varX, varY, elementsZPos>
  363.            
  364.             #if (goneThrough)
  365.                
  366.                 0.2
  367.                
  368.             #else
  369.            
  370.                 0.0
  371.                
  372.             #end
  373.            
  374.             pigment
  375.             {
  376.                 color rgb <0, 0, 1>
  377.             }
  378.         }
  379.        
  380.         #declare goneThrough = true;
  381.                    
  382.     #end
  383.    
  384. #end
  385.  
  386. #if (category = cosine)
  387.    
  388.     #declare varNum      = 2;
  389.     #declare varPow      = 1;
  390.     #declare varCosCooff = 8;
  391.    
  392.     #declare varX = -graphWidth;
  393.     #declare varY = 0;
  394.    
  395.     #declare goneThrough = false;
  396.    
  397.     #while (varX < graphWidth)
  398.            
  399.         cylinder
  400.         {
  401.             <varX, varY, elementsZPos>
  402.            
  403.             #declare varY = varCosCooff * cos(varNum + pow(varX, varPow));
  404.            
  405.             #declare varX = varX + pointCloseness;
  406.            
  407.             <varX, varY, elementsZPos>
  408.            
  409.             #if (goneThrough)
  410.                
  411.                 0.2
  412.                
  413.             #else
  414.            
  415.                 0.0
  416.                
  417.             #end
  418.            
  419.             pigment
  420.             {
  421.                 color rgb <0, 0, 1>
  422.             }
  423.         }
  424.        
  425.         #declare goneThrough = true;
  426.                    
  427.     #end
  428.    
  429. #end
  430.  
  431. #if (category = tangent)
  432.    
  433.     #declare varNum      = 2;
  434.     #declare varPow      = 1;
  435.     #declare varTanCooff = 8;
  436.    
  437.     #declare varX = -graphWidth;
  438.     #declare varY = 0;
  439.    
  440.     #declare goneThrough = false;
  441.    
  442.     #while (varX < graphWidth)
  443.            
  444.         cylinder
  445.         {
  446.             <varX, varY, elementsZPos>
  447.            
  448.             #declare varY = varTanCooff * tan(varNum + pow(varX, varPow));
  449.            
  450.             #declare varX = varX + pointCloseness;
  451.            
  452.             <varX, varY, elementsZPos>
  453.            
  454.             #if (goneThrough)
  455.                
  456.                 0.2
  457.                
  458.             #else
  459.            
  460.                 0.0
  461.                
  462.             #end
  463.            
  464.             pigment
  465.             {
  466.                 color rgb <0, 0, 1>
  467.             }
  468.         }
  469.        
  470.         #declare goneThrough = true;
  471.                    
  472.     #end
  473.    
  474. #end
  475.  
  476. #if (category = logarithm)
  477.    
  478.     #declare varNum      = 2;
  479.     #declare varPow      = 1;
  480.     #declare varLogCooff = 8;
  481.    
  482.     #declare varX = -graphWidth;
  483.     #declare varY = 0;
  484.    
  485.     #declare goneThrough = false;
  486.    
  487.     #while (varX < graphWidth)
  488.        
  489.         #if (varNum + pow(varX, varPow) > 0)
  490.            
  491.             cylinder
  492.             {
  493.                 <varX, varY, elementsZPos>
  494.                
  495.                 #declare varY = varLogCooff * log(varNum + pow(varX, varPow));
  496.                
  497.                 #declare varX = varX + pointCloseness;
  498.                
  499.                 <varX, varY, elementsZPos>
  500.                
  501.                 #if (goneThrough)
  502.                    
  503.                     0.2
  504.                    
  505.                 #else
  506.                
  507.                     0.0
  508.                    
  509.                 #end
  510.                
  511.                 pigment
  512.                 {
  513.                     color rgb <0, 0, 1>
  514.                 }
  515.             }
  516.            
  517.             #declare goneThrough = true;
  518.            
  519.         #else
  520.            
  521.             #declare varX = varX + pointCloseness;
  522.            
  523.         #end
  524.                    
  525.     #end
  526.    
  527. #end
  528.  
  529. #if (category = naturalLogarithm)
  530.    
  531.     #declare varNum      = 2;
  532.     #declare varPow      = 1;
  533.     #declare varLnCooff = 8;
  534.    
  535.     #declare varX = -graphWidth;
  536.     #declare varY = 0;
  537.    
  538.     #declare goneThrough = false;
  539.    
  540.     #while (varX < graphWidth)
  541.        
  542.         #if (varNum + pow(varX, varPow) > 0)
  543.            
  544.             cylinder
  545.             {
  546.                 <varX, varY, elementsZPos>
  547.                
  548.                 #declare varY = varLnCooff * ln(varNum + pow(varX, varPow));
  549.                
  550.                 #declare varX = varX + pointCloseness;
  551.                
  552.                 <varX, varY, elementsZPos>
  553.                
  554.                 #if (goneThrough)
  555.                    
  556.                     0.2
  557.                    
  558.                 #else
  559.                
  560.                     0.0
  561.                    
  562.                 #end
  563.                
  564.                 pigment
  565.                 {
  566.                     color rgb <0, 0, 1>
  567.                 }
  568.             }
  569.            
  570.             #declare goneThrough = true;
  571.            
  572.         #else
  573.            
  574.             #declare varX = varX + pointCloseness;
  575.            
  576.         #end
  577.                    
  578.     #end
  579.    
  580. #end
RAW Paste Data