Advertisement
suremarc

Untitled

Mar 29th, 2015
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.95 KB | None | 0 0
  1. local sin = math.sin
  2. local cos = math.cos
  3. local tan = math.tan
  4. local sqrt = math.sqrt
  5. local abs = math.abs
  6.  
  7. local x = function(t) return t end
  8. local y = function(t) return 1 end
  9.  
  10. local z1 = function(x)return 1.5*sqrt(-abs(abs(x)-1)*abs(3-abs(x))/((abs(x)-1)*(3-abs(x))))*(1+abs(abs(x)-3)/(abs(x)-3))*sqrt(1-(x/7)^2)+(4.5+0.75*(abs(x-0.5)+abs(x+0.5))-2.75*(abs(x-0.75)+abs(x+0.75)))*(1+abs(1-abs(x))/(1-abs(x)))end
  11. local z2 = function(x)return -3*sqrt(1-(x/7)^2)*sqrt(abs(abs(x)-4)/(abs(x)-4))end
  12. local z3 = function(x)return abs(x/2)-0.0913722*(x^2)-3+sqrt(1-(abs(abs(x)-2)-1)^2)end
  13. local z4 = function(x)return (2.71052+(1.5-0.5*abs(x))-1.35526*sqrt(4-(abs(x)-1)^2))*sqrt(abs(abs(x)-1)/(abs(x)-1))end
  14.  
  15. local DrawLine = function(v1, v2, color)
  16.     local part = Instance.new("Part", Workspace)
  17.     Instance.new("BlockMesh", part).Scale = Vector3.new(0.3, 0.3, (v1 - v2).magnitude/2)
  18.     part.BrickColor = color
  19.     part.formFactor = "Symmetric"
  20.     part.CFrame = CFrame.new(v1:Lerp(v2, 0.5), v2)
  21.     part.Anchored = true
  22.     return part
  23. end
  24.  
  25. local bad = function(x)return(x==0/0)or(x==-0/0)or(x==1/0)or(x==-1/0)end -- thanks to da MonkeyMan for this trick
  26. local graph = function(f1, f2, f3, LBOUND, UBOUND, i, scale, color) -- function f1, function f2, function f3, number LBOUND, number UBOUND, number i, BrickColor color
  27.     local graph = Instance.new("Model", Workspace)
  28.     graph.Name = "Graph"
  29.     for t = LBOUND, UBOUND - i, i do
  30.         local a1, b1, c1, a2, b2, c2 = f1(t), f2(t), f3(t), f1(t + i), f2(t +i ), f3(t + i)
  31.         if not (bad(a1) or bad(b1) or bad(c1) or bad(a2) or bad(b2) or bad(c2)) then
  32.             DrawLine(Vector3.new(f1(t), f2(t), f3(t))*scale, Vector3.new(f1(t + i), f2(t + i), f3(t + i))*scale, color).Parent = graph
  33.         end
  34.     end
  35.     return graph
  36. end
  37.  
  38. local scale = Vector3.new(10, 1, 10)
  39.  
  40. g = {z1, z2, z3, z4}
  41. for i = 1, #g do        --             0.5 is the default interval, set lower values for smoother graphs
  42.     local g = graph(x, y, g[i], -8, 8, 0.02, scale, BrickColor.new 'Really blue')
  43. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement