lerp functions
							parent
							
								
									5eb51aa0b3
								
							
						
					
					
						commit
						2a00f10d1a
					
				|  | @ -157,3 +157,8 @@ IN: math.functions.tests | ||||||
|     2135623355842621559 |     2135623355842621559 | ||||||
|     [ >bignum ] tri@ ^mod |     [ >bignum ] tri@ ^mod | ||||||
| ] unit-test | ] unit-test | ||||||
|  | 
 | ||||||
|  | [ 1.0  ] [ 1.0 2.5 0.0 lerp ] unit-test | ||||||
|  | [ 2.5  ] [ 1.0 2.5 1.0 lerp ] unit-test | ||||||
|  | [ 1.75 ] [ 1.0 2.5 0.5 lerp ] unit-test | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -262,3 +262,6 @@ M: real atan fatan ; | ||||||
|     [ drop ] [ dup 0 < [ - 1- ] [ - ] if ] if ; foldable |     [ drop ] [ dup 0 < [ - 1- ] [ - ] if ] if ; foldable | ||||||
| 
 | 
 | ||||||
| : ceiling ( x -- y ) neg floor neg ; foldable | : ceiling ( x -- y ) neg floor neg ; foldable | ||||||
|  | 
 | ||||||
|  | : lerp ( a b t -- a_t ) [ over - ] dip * + ; inline | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -9,3 +9,8 @@ USING: math.vectors tools.test ; | ||||||
| [ 5 ] [ { 1 2 } norm-sq ] unit-test | [ 5 ] [ { 1 2 } norm-sq ] unit-test | ||||||
| [ 13 ] [ { 2 3 } norm-sq ] unit-test | [ 13 ] [ { 2 3 } norm-sq ] unit-test | ||||||
| 
 | 
 | ||||||
|  | [ { 1.0  2.5  } ] [ { 1.0 2.5 } { 2.5 1.0 } 0.0 vnlerp ] unit-test  | ||||||
|  | [ { 2.5  1.0  } ] [ { 1.0 2.5 } { 2.5 1.0 } 1.0 vnlerp ] unit-test  | ||||||
|  | [ { 1.75 1.75 } ] [ { 1.0 2.5 } { 2.5 1.0 } 0.5 vnlerp ] unit-test  | ||||||
|  | 
 | ||||||
|  | [ { 1.75 2.125 } ] [ { 1.0 2.5 } { 2.5 1.0 } { 0.5 0.25 } vlerp ] unit-test  | ||||||
|  |  | ||||||
|  | @ -32,6 +32,12 @@ IN: math.vectors | ||||||
| : set-axis ( u v axis -- w ) | : set-axis ( u v axis -- w ) | ||||||
|     [ [ zero? 2over ? ] dip swap nth ] map-index 2nip ; |     [ [ zero? 2over ? ] dip swap nth ] map-index 2nip ; | ||||||
| 
 | 
 | ||||||
|  | : vlerp ( a b t -- a_t ) | ||||||
|  |     [ lerp ] 3map ; | ||||||
|  | 
 | ||||||
|  | : vnlerp ( a b t -- a_t ) | ||||||
|  |     [ lerp ] curry 2map ; | ||||||
|  | 
 | ||||||
| HINTS: vneg { array } ; | HINTS: vneg { array } ; | ||||||
| HINTS: norm-sq { array } ; | HINTS: norm-sq { array } ; | ||||||
| HINTS: norm { array } ; | HINTS: norm { array } ; | ||||||
|  | @ -50,3 +56,6 @@ HINTS: v/ { array array } ; | ||||||
| HINTS: vmax { array array } ; | HINTS: vmax { array array } ; | ||||||
| HINTS: vmin { array array } ; | HINTS: vmin { array array } ; | ||||||
| HINTS: v. { array array } ; | HINTS: v. { array array } ; | ||||||
|  | 
 | ||||||
|  | HINTS: vlerp { array array array } ; | ||||||
|  | HINTS: vnlerp { array array object } ; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue