mirror of
https://github.com/jwetzell/free-d-js.git
synced 2026-09-10 08:29:29 +00:00
initial commit
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
export function checksum(bytes: Uint8Array): number {
|
||||
let checksum = 0x40;
|
||||
|
||||
bytes.forEach((byte) => {
|
||||
checksum -= byte;
|
||||
if (checksum < 0) {
|
||||
checksum += 256;
|
||||
}
|
||||
});
|
||||
return checksum;
|
||||
}
|
||||
|
||||
export function rotationToFreeDUnits(rotation: number): Uint8Array {
|
||||
const view = new DataView(new ArrayBuffer(4));
|
||||
const units = rotation * 32768 * 256;
|
||||
view.setInt32(0, units);
|
||||
return new Uint8Array(view.buffer, 0, 3);
|
||||
}
|
||||
|
||||
export function positionToFreeDUnits(position: number): Uint8Array {
|
||||
const view = new DataView(new ArrayBuffer(4));
|
||||
const units = position * 64 * 256;
|
||||
view.setInt32(0, units);
|
||||
return new Uint8Array(view.buffer, 0, 3);
|
||||
}
|
||||
|
||||
export function freeDUnitsToRotation(upper: number, middle: number, lower: number): number {
|
||||
const padded = new Uint8Array([upper, middle, lower, 0]);
|
||||
const view = new DataView(padded.buffer, padded.byteOffset, padded.byteLength);
|
||||
return view.getInt32(0) / 256 / 32768;
|
||||
}
|
||||
|
||||
export function freeDUnitsToPosition(upper: number, middle: number, lower: number): number {
|
||||
const padded = new Uint8Array([upper, middle, lower, 0]);
|
||||
const view = new DataView(padded.buffer, padded.byteOffset, padded.byteLength);
|
||||
return view.getInt32(0) / 256 / 64;
|
||||
}
|
||||
Reference in New Issue
Block a user