mirror of
https://github.com/BelfrySCAD/BOSL2.git
synced 2025-01-01 09:49:45 +00:00
Added faster and simpler versions of max_index and min_index.
This commit is contained in:
parent
aa31fb9ddd
commit
49365add3c
1 changed files with 16 additions and 22 deletions
38
math.scad
38
math.scad
|
@ -70,33 +70,27 @@ function approx(a,b,eps=EPSILON) = let(c=a-b) (is_num(c)? abs(c) : norm(c)) <= e
|
|||
|
||||
// Function: min_index()
|
||||
// Usage:
|
||||
// min_index(vals);
|
||||
// min_index(vals,[all]);
|
||||
// Description:
|
||||
// Returns the index of the minimal value in the given list.
|
||||
function min_index(vals, _minval, _minidx, _i=0) =
|
||||
_i>=len(vals)? _minidx :
|
||||
min_index(
|
||||
vals,
|
||||
((_minval == undef || vals[_i] < _minval)? vals[_i] : _minval),
|
||||
((_minval == undef || vals[_i] < _minval)? _i : _minidx),
|
||||
_i+1
|
||||
);
|
||||
|
||||
// Returns the index of the first occurrence of the mainimum value in the given list.
|
||||
// If `all` is true then returns a list of all indices where the minimum value occurs.
|
||||
// Arguments:
|
||||
// vals = vector of values
|
||||
// all = set to true to return indices of all occurences of the minimum. Default: false
|
||||
function min_index(vals, all=false) =
|
||||
all ? search(min(vals),vals,0) : search(min(vals), vals)[0];
|
||||
|
||||
// Function: max_index()
|
||||
// Usage:
|
||||
// max_index(vals);
|
||||
// max_index(vals,[all]);
|
||||
// Description:
|
||||
// Returns the index of the maximum value in the given list.
|
||||
function max_index(vals, _maxval, _maxidx, _i=0) =
|
||||
_i>=len(vals)? _maxidx :
|
||||
max_index(
|
||||
vals,
|
||||
((_maxval == undef || vals[_i] > _maxval)? vals[_i] : _maxval),
|
||||
((_maxval == undef || vals[_i] > _maxval)? _i : _maxidx),
|
||||
_i+1
|
||||
);
|
||||
|
||||
// Returns the index of the first occurrence of the maximum value in the given list.
|
||||
// If `all` is true then returns a list of all indices where the maximum value occurs.
|
||||
// Arguments:
|
||||
// vals = vector of values
|
||||
// all = set to true to return indices of all occurences of the maximum. Default: false
|
||||
function max_index(vals, all=false) =
|
||||
all ? search(max(vals),vals,0) : search(max(vals), vals)[0];
|
||||
|
||||
// Function: posmod()
|
||||
// Usage:
|
||||
|
|
Loading…
Reference in a new issue