Skip to content

Instantly share code, notes, and snippets.

@jhh
Last active January 16, 2019 19:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jhh/cf77dbaadc9622aa1fd2e9edf4c6a58b to your computer and use it in GitHub Desktop.
Save jhh/cf77dbaadc9622aa1fd2e9edf4c6a58b to your computer and use it in GitHub Desktop.
Azimuth Encoder Calcs
public class Main {
public static void main(String[] args) {
minRotationIEEERemainder(4095, 1); // expect +2
minRotationIEEERemainder(10 * 0x1000 + 4095, 1); // same, plus 10 revolutions
minRotationIEEERemainder(-1024, 1024); // expect +/- 2048
minRotationIEEERemainder(10 * 0x1000 - 1024, 1024); // same, plus 10 revolutions
minRotationIEEERemainder(2730, 1365); // 240 -> 120 expect -120 (-1365)
minRotationIEEERemainder(10 * 0x1000 + 2730, 1365); // 240 -> 120 expect -120 (-1365)
minRotationMaskCurrent(4095, 1); // expect +2
minRotationMaskCurrent(10 * 0x1000 + 4095, 1); // same, plus 10 revolutions
minRotationMaskCurrent(-1024, 1024); // expect +/- 2048
minRotationMaskCurrent(10 * 0x1000 - 1024, 1024); // same, plus 10 revolutions
minRotationMaskCurrent(2730, 1365); // 240 -> 120 expect -120 (-1365)
minRotationMaskCurrent(10 * 0x1000 + 2730, 1365); // 240 -> 120 expect -120 (-1365)
minRotationMaskError(4095, 1); // expect +2
minRotationMaskError(10 * 0x1000 + 4095, 1); // same, plus 10 revolutions
minRotationMaskError(-1024, 1024); // expect +/- 2048
minRotationMaskError(10 * 0x1000 - 1024, 1024); // same, plus 10 revolutions
minRotationMaskError(2730, 1365); // 240 -> 120 expect -120 (-1365)
minRotationMaskError(10 * 0x1000 + 2730, 1365); // 240 -> 120 expect -120 (-1365)
}
static void minRotationIEEERemainder(int current, int desired) {
double rotation = Math.IEEEremainder(desired - current, 0x1000);
System.out.printf(
"IEEERemainder: current = %7d, desired = %7d, rotation = %7.0f%n",
current, desired, rotation);
}
static void minRotationMaskCurrent(int current, int desired) {
int rotation = desired - (current & 0xFFF);
System.out.printf(
"Mask Current: current = %7d, desired = %7d, rotation = %7d%n",
current, desired, rotation);
}
static void minRotationMaskError(int current, int desired) {
int rotation = (desired - current) & 0xFFF;
System.out.printf(
"Mask Error: current = %7d, desired = %7d, rotation = %7d%n",
current, desired, rotation);
}
}
@jhh
Copy link
Author

jhh commented Jan 16, 2019

/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar=59070:/Applications/IntelliJ IDEA CE.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/tools.jar:/Users/jeff/sf/misc/untitled/out/production/untitled Main
IEEERemainder: current =    4095, desired =       1, rotation =       2
IEEERemainder: current =   45055, desired =       1, rotation =       2
IEEERemainder: current =   -1024, desired =    1024, rotation =    2048
IEEERemainder: current =   39936, desired =    1024, rotation =    2048
IEEERemainder: current =    2730, desired =    1365, rotation =   -1365
IEEERemainder: current =   43690, desired =    1365, rotation =   -1365
Mask Current:  current =    4095, desired =       1, rotation =   -4094 // long way
Mask Current:  current =   45055, desired =       1, rotation =   -4094 // long way
Mask Current:  current =   -1024, desired =    1024, rotation =   -2048
Mask Current:  current =   39936, desired =    1024, rotation =   -2048
Mask Current:  current =    2730, desired =    1365, rotation =   -1365
Mask Current:  current =   43690, desired =    1365, rotation =   -1365
Mask Error:    current =    4095, desired =       1, rotation =       2
Mask Error:    current =   45055, desired =       1, rotation =       2
Mask Error:    current =   -1024, desired =    1024, rotation =    2048
Mask Error:    current =   39936, desired =    1024, rotation =    2048
Mask Error:    current =    2730, desired =    1365, rotation =    2731 // long way
Mask Error:    current =   43690, desired =    1365, rotation =    2731 // long way

Process finished with exit code 0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment