Libraryless. Click here for Pure Java version (141L/1K).
1 | // cycleLength e.g. 360 |
2 | static double cyclicDistance(double a, double b, double cycleLength) { |
3 | a = mod(a, cycleLength); // a is now between 0 and 360 |
4 | b = mod(b, cycleLength); // b is now between 0 and 360 |
5 | |
6 | // if e.g. a is 40 and b is 50, then distance is 10 |
7 | // if e.g. a is 10 and b is 350, then distance is 20 |
8 | // if e.g. b is 10 and a is 350, then distance is 20 |
9 | double diff = absDiff(a, b); |
10 | if (a < b) |
11 | diff = min(diff, a+cycleLength-b); |
12 | else |
13 | diff = min(diff, b+cycleLength-a); |
14 | ret diff; |
15 | } |
download show line numbers debug dex old transpilations
Travelled to 3 computer(s): bhatertpkbcr, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1035274 |
Snippet name: | cyclicDistance - absolute distance between two values on a cyclic scale (e.g. angles) |
Eternal ID of this version: | #1035274/2 |
Text MD5: | cb37c4cdad2ce8fe364a64d57b16fa99 |
Transpilation MD5: | 643e0fb21613d3f592eb466171ed90f0 |
Author: | stefan |
Category: | javax / maths |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2022-04-28 20:44:35 |
Source code size: | 532 bytes / 15 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 128 / 188 |
Version history: | 1 change(s) |
Referenced in: | [show references] |