Derivatives: Difference between revisions

From Goodblox Wiki
Jump to navigationJump to search
No edit summary
mNo edit summary
 
Line 81: Line 81:
[[Ramps]]
[[Ramps]]
[[Terrain Generation]]
[[Terrain Generation]]
[[http://en.wikipedia.org/wiki/Derivative Wikipedia article on Derivatives]]
[[https://en.wikipedia.org/wiki/Derivative Wikipedia article on Derivatives]]


[[Category:Scripting Tutorials]]
[[Category:Scripting Tutorials]]

Latest revision as of 21:25, 28 September 2021

Introduction

This tutorial is intended to introduce you to the mathematical notion of derivatives.

How will this page help me

This page will help smooth out your Terrains, if you use mathematical formulae to create them. In GoodBlox, however, we do not work with mathematical "points", but "bricks", which occupy space. Therefore, in order to smooth out terrains and functions, you will want to know the slopes of your functions... to know the slopes of your terrains.

What is a derivative?

A derivative is the slope of a function, or, phrased differently, the difference in the height divided by the difference in width at that point. The Ramps article provides a method on how to rotate a brick:

game.Workspace.slope.CFrame=CFrame.new(Vector3.new(0,100,0)) * CFrame.fromAxisAngle(Vector3.new(0,0,1), math.pi/2)

Here we have the brick being created in its position in the first CFrame, and the rotation in the second CFrame. This is where the derivative comes in. In the script below, z=-x^2. The derivative for this is -2*x. (Why does -x work better than -2*x???)

x=0
z=0
for i = -1.8,1.8, .01 do
x=i
y=-i^2


p = Instance.new("Part")
p.CFrame=CFrame.new(Vector3.new(100*x+100, 100*y+100, 100))*CFrame.fromAxisAngle(Vector3.new(0,0,1), -x)

p.Size = Vector3.new(1,10,1)
p.Anchored = true
p.BottomSurface = "Smooth"
p.TopSurface = "Smooth"
p.Parent = game.Workspace
p.BrickColor = BrickColor.new(217)


end

What about trigonometric functions?

Yes, you can smooth out trigonometric functions, too.

x=0
z=0
for i = -2.5,2.5, .01 do
x=i
y=math.sin(i) -- here is the formula

p = Instance.new("Part")
p.CFrame=CFrame.new(Vector3.new(10*x, 10*y, 10))*CFrame.fromAxisAngle(Vector3.new(0,0,1), math.cos(i)) 
--cos is the derivative of sin --
p.Size = Vector3.new(1,1,1)
p.Anchored = true
p.BottomSurface = "Smooth"
p.TopSurface = "Smooth"
p.Parent = game.Workspace
p.BrickColor = BrickColor.new(217)

end

3D terrain

This is the sinx+siny formula from Terrain Generation, only smoothed out now. (This needs to be double checked.)

x=0
z=0
for i = -2,2, .1 do
for j = -2,2, .1 do

y=math.sin(i)+math.sin(j) -- here is the formula

p = Instance.new("Part")
p.CFrame=CFrame.new(Vector3.new(10*i, 10*y, 10*j))*CFrame.fromAxisAngle(Vector3.new(0,0,1), math.cos(i)+math.cos(j)) 
p.Size = Vector3.new(1,1,1)
p.Anchored = true
p.BottomSurface = "Smooth"
p.TopSurface = "Smooth"
p.Parent = game.Workspace
p.BrickColor = BrickColor.new(217)

end
end

See Also

Ramps Terrain Generation [Wikipedia article on Derivatives]