Smooth Noise Overview

Blitz3D Forums/Blitz3D Beginners Area/Smooth Noise Overview

_PJ_(Posted 2016) [#1]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()


Const oX=256
Const oY=384

Origin oX,oY

Const W=512
Const H=256

Global min1=9999
Global max1=0-9999
Global min2=9999
Global max2=0-9999




;______________________________________________________________________

While Not KeyHit(57)
Cls

Text -200,-180,"FIRST START WITH A BASIC SINE CURVE"
Text -200,-160,"SINE IS GOOD BECAUSE SIN(0) = 0 AND AS WITH ALL TRIG FUNCTIONS IT IS CYCLIC AT 360 DEGREES"


Local X
Local Y


Local Angle#

Color 255,255,255

For X=0 To W
Angle#=(Float(X)/W)*360.0
Y=Sin(Angle)*H*0.5

Plot X,Y

Next

Flip

Wend

;______________________________________________________________________

Local Frequency#

While Not KeyHit(57)

Cls
Text -200,-180,"WE CAN INCRESE / DECREASE THE FREQUENCY OF THE CURVE TO MAKE STEEPER GRADIENTS"

For X=0 To W
Angle#=(Float(X)/W)*360.0

Frequency=(Cos(MilliSecs()*0.1)+1)
Angle=Angle*Frequency

Y=Sin(Angle)*H*0.5

Plot X,Y

Next

Flip

Wend


;______________________________________________________________________

While Not KeyHit(57)

Cls
Text -200,-180,"WE CAN INCRESE / DECREASE THE RADIUS TO TO CHANGE THE AMPLITUDE"

For X=0 To W
Angle#=(Float(X)/W)*360.0

Frequency=(Cos(MilliSecs()*0.1))
Angle=Angle

Y=Sin(Angle)*H*Frequency*0.49

Plot X,Y

Next

Flip

Wend


;______________________________________________________________________

Local Combine

While Not KeyHit(57)
Cls
Color 255,255,255
Text -200,-180,"WE CAN COMBINE MULTIPLE WAVEFUNCTIONS TO PRODUCE ASYMMETRIC FORMS..."

For X=0 To W

Color 255,0,0

Angle#=(Float(X)/W)*360.0

Y=Sin(Angle)*H*0.49

Plot X,Y
Combine=Y




Color 0,64,192

Angle=Angle*4

Y=Sin(Angle)*H*0.49

Plot X,Y
Combine=(Combine+Y)*0.5



Color 255,255,255
Plot X,Combine

Next

Flip

Wend

;______________________________________________________________________



Local Offset
While Not KeyHit(57)
Cls
Color 255,255,255
Text -200,-180,"...NOTE HOW THE CURVE IS STILL CYCLIC"

For X=0 To W

Color 255,0,0

Angle#=(Float(X)/W)*360.0

Y=Sin(Angle+(MilliSecs()*0.05))*H*0.49

Plot X,Y
Combine=Y


Color 0,64,192

Angle=Angle*4

Y=Sin(Angle+(MilliSecs()*0.05))*H*0.49

Plot X,Y
Combine=(Combine+Y)*0.49



Color 255,255,255
Plot X,Combine

Next

Flip

Wend

;______________________________________________________________________

While Not KeyHit(57)
Cls
For X=0 To W
Angle#=(Float(X)/W)*360.0
Y=Sin(Angle)*H*0.49

Color 255-(Y+H*0.5),255-(Y+H*0.5),255-(Y+H*0.5)

Plot X,Y+1

Next

Color 255,255,255
Text -200,-300,"WE CAN CONSIDER THE PEAKS AND TROUGHS OF THE CURVES AS ACTUAL CONTOUR HEIGHTS"
Text -200,-280,"SOMETIMES THESE ARE NORMALISED TO UNIT SIZES"

Flip
Wend


;______________________________________________________________________

Local YMap1
Local YMap2
Local YMap3

Local RMap1
Local RMap2
Local RMap3

Local GMap1
Local GMap2
Local GMap3

Local BMap1
Local BMap2
Local BMap3

While (Not(KeyHit(57)))
Cls
For X=0 To W

Angle#=(Float(X)/W)*360.0
Y=Sin(Angle)*H*0.49
Combine=Y
Angle=Angle*4
Y=Sin(Angle)*H*0.49
Combine=(Combine+Y)*0.49

RMap1=((255-(Y+H*0.5))/255)*96
GMap1=((255-(Y+H*0.5))/255)*32
BMap1=((255-(Y+H*0.5))/255)*128

Color RMap1,GMap1,BMap1
YMap1=Combine-200
Plot X,YMap1



Angle#=(Float(X)/W)*360.0
Y=Sin(Angle)*H*0.49
Combine=Y
Angle=Angle*2.5
Y=Sin(360-Angle)*H*0.49
Combine=(Combine+Y)*0.49

RMap2=((255-(Y+H*0.5))/255)*192
GMap2=((255-(Y+H*0.5))/255)*64
BMap2=0
Color RMap2,GMap2,BMap2
YMap2=Combine+(H*0.25)-50
Plot X,YMap2





Angle#=(Float(X)/W)*360.0
Y=Sin(360-Angle)*H*0.49
Combine=Y
Angle=Angle*6
Y=Sin(Angle)*H*0.15
Combine=(Combine+Y)*0.49

RMap3=((255-(Y+H*0.5))/255)*64
GMap3=((255-(Y+H*0.5))/255)*192
BMap3=((255-(Y+H*0.5))/255)*160
Color RMap3,GMap3,BMap3
YMap3=Combine+(H*0.15)+220
Plot X,YMap3

Next

Color 255,255,255
Text -200,-300,"WE CAN USE A NUMBER OF CURVES ACROSS ANOTHER DIMENSION TO BEGIN THE TOPOGRAPHY OF A SURFACE"

Flip
Wend

;______________________________________________________________________

Local Height1
Local Height2
Local Height3

While (Not(KeyHit(57)) )
Cls
For X=0 To W

Angle#=(Float(X)/W)*360.0
Y=Sin(Angle)*H*0.49
Combine=Y
Angle=Angle*4
Y=Sin(Angle)*H*0.49
Combine=(Combine+Y)*0.49

RMap1=((255-(Y+H*0.5))/255)*96
GMap1=((255-(Y+H*0.5))/255)*32
BMap1=((255-(Y+H*0.5))/255)*128

Height1=(255-(Y+H*0.5))

Color RMap1,GMap1,BMap1
YMap1=Combine-200
Plot X,YMap1

Angle#=(Float(X)/W)*360.0
Y=Sin(Angle)*H*0.49
Combine=Y
Angle=Angle*2.5
Y=Sin(360-Angle)*H*0.49
Combine=(Combine+Y)*0.49

RMap2=((255-(Y+H*0.5))/255)*192
GMap2=((255-(Y+H*0.5))/255)*64
BMap2=0

Height2=(255-(Y+H*0.5))

Color RMap2,GMap2,BMap2
YMap2=Combine+(H*0.25)-50
Plot X,YMap2

Angle#=(Float(X)/W)*360.0
Y=Sin(360-Angle)*H*0.49
Combine=Y
Angle=Angle*6
Y=Sin(Angle)*H*0.15
Combine=(Combine+Y)*0.49

RMap3=((255-(Y+H*0.5))/255)*64
GMap3=((255-(Y+H*0.5))/255)*192
BMap3=((255-(Y+H*0.5))/255)*160

Height3=(255-(Y+H*0.5))

Color RMap3,GMap3,BMap3
YMap3=Combine+(H*0.15)+220
Plot X,YMap3

If (Not(X Mod 16))
InterpBetween(X,YMap1,YMap2,RMap1,GMap1,BMap1,RMap2,GMap2,BMap2,Height1,Height2)
InterpBetween(X,YMap2,YMap3,RMap2,GMap2,BMap2,RMap3,GMap3,BMap3,Height2,Height3)
End If

Next

Color 255,255,255
Text -200,-300,"TO DEFINE THE SUFACE FORMALLY WE INTERPOLATE THE GRADIENT BETWEEN CONTOURS OF DIFFERENT CURVES AT RELATIVE POINTS"

Flip
Wend

;______________________________________________________________________

While Not KeyHit(57)
Cls

Text -200,-180,"FURTHERMORE REGARDING THE INTERPOLATION..."
Text -200,-160,"REMEMBER HOW WE REMARKED ON THE SINE CURVE THAT SIN(0) IS ZERO?"

For X=0 To W
Angle#=(Float(X)/W)*360.0
Y=Sin(Angle)*H*0.45

Plot X,Y

Next

Flip

Wend

;______________________________________________________________________

While Not KeyHit(57)
Cls
Color 255,255,255
Text -200,-180,"THE COSINE STARTS AT A MAXIMUM UNITY. IT IS EQUIVALENT TO SIN(THETA-90)"

For X=0 To W
Angle#=(Float(X)/W)*360.0
Y=0-Cos(Angle*2)*H*0.45
Color 255,255,255
Plot X,Y

Y=0-Sin((Angle*2)+(Sin(MilliSecs()*0.05)*90))*H*0.45
Color 128,128,128
Plot X,Y
Next

Flip

Wend
;______________________________________________________________________

While Not KeyHit(57)
Cls
Color 255,255,255
Text -200,-180,"THIS MAKES I EXTREMELY CONVENIENT IN PROVIDING A SMOOTHER GRADIENT FOR INTERPOLATION"

For X=0 To W
Angle#=(Float(X)/W)*360.0
Y=0-Cos(Angle*0.5)*H*0.45
Color 255,255,255
Plot X,Y

Color 128,128,128
Line 0,-H*0.5,W,H*0.5
Next

Flip

Wend
;______________________________________________________________________
Function InterpBetween(X,Y1,Y2,R1#,G1#,B1#,R2#,G2#,B2#,H1,H2)
Local Y
Local Dist#=Float(Y2-Y1)

Local GradR#=Float(R2-R1)/Dist
Local GradG#=Float(G2-G1)/Dist
Local GradB#=Float(B2-B1)/Dist

Local GradH#=Float(H2-H1)/Dist

For Y=Y1 To Y2

Color R1,G1,B1
Plot X,Y

R1=R1+Float(GradR#)
G1=G1+Float(GradG#)
B1=B1+Float(GradB#)

H1=H1+Float(GradH#)

Next
End Function