Something went wrong. Try again.
Starship Simulator Controls thoriumsim.com
Something went wrong. Try again.
1.3 kB · 58 lines
TypeScript
at develop
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859const PI = Math.PI;const PI_TIMES_TWO = Math.PI * 2;
export const lerp = (start: number, end: number, t: number) => { return start + (end - start) * t;};
// https://gist.github.com/itsmrpeck/be41d72e9d4c72d2236de687f6f53974export const degreeLerp = (start: number, end: number, t: number) => { let result: number; const diff = end - start; if (diff < -180) { // lerp upwards past 360 end += 360; result = lerp(start, end, t); if (result >= 360) { result -= 360; } } else if (diff > 180) { // lerp downwards past 0 end -= 360; result = lerp(start, end, t); if (result < 0) { result += 360; } } else { // straight lerp result = lerp(start, end, t); }
return result;};
// https://gist.github.com/itsmrpeck/be41d72e9d4c72d2236de687f6f53974export const radianLerp = (start: number, end: number, t: number) => { let result: number; const diff = end - start; if (diff < -PI) { // lerp upwards past PI_TIMES_TWO end += PI_TIMES_TWO; result = lerp(start, end, t); if (result >= PI_TIMES_TWO) { result -= PI_TIMES_TWO; } } else if (diff > PI) { // lerp downwards past 0 end -= PI_TIMES_TWO; result = lerp(start, end, t); if (result < 0) { result += PI_TIMES_TWO; } } else { // straight lerp result = lerp(start, end, t); }
return result;};