Clamp()

BlitzMax Forums/BlitzMax Module Tweaks/Clamp()

JoshK(Posted 2007) [#1]
I think this function should be added to brl.math. It's very simple and useful:
Function Clamp:Float(val:Float,minimum:Float=0.0,maximum:Float=1.0)
	If val<minimum val=minimum
	If val>maximum val=maximum
	Return val
EndFunction



H&K(Posted 2007) [#2]
Function Clamp:Float(val:Float,minimum:Float=0.0,maximum:Float=1.0)
	
	Return Min (Max (val,minimum),maximum)

EndFunction


Function Clamp:Float(val:Float,minimum:Float=0.0,maximum:Float=1.0)
	If val<minimum Return minimum
	If val>maximum Return maximum
	Return val
EndFunction


@Lead if you were going to add this to the Brl.maths, would you bother with (for example)
Function Clamp:Float(val:Float,minimum:Float=0.0,maximum:Float=1.0)
?Debug
Assert Minimum<=Maximum,"Minimum not less than Maximum"
?
	Return Min (Max (val,minimum),maximum)

EndFunction
Or do you not bother with that sort of thing?


ziggy(Posted 2007) [#3]
I would remove the "<=" check and change it to "<".


Michael Reitzenstein(Posted 2007) [#4]
I would swap them if they're the wrong sign -

If minimum < maximum Return Clamp( val, maximum, minimum )

(not <= for obvious reasons)