util.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const cartesianToPolar = ({x, y}) => ({r: Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)), t: Math.atan2(y, x)})
  2. const polarToCartesian = ({r, t}) => ({x: r * Math.cos(t), y: r * Math.sin(t)})
  3. const findMemory = (mem) => {
  4. let originalSnap = Object.assign({}, Array.from(mem))
  5. let snap = Object.assign({}, Array.from(mem))
  6. let criteria = () => true
  7. let finalCriteria = () => true
  8. const check = () => {
  9. for (let key of Object.keys(snap)) {
  10. if (!criteria(mem[key], snap[key])) delete snap[key]
  11. else snap[key] = mem[key]
  12. }
  13. return o
  14. }
  15. const result = () => {
  16. console.log(
  17. Object.keys(snap)
  18. .filter(x => finalCriteria(snap[x], originalSnap[x]))
  19. .map(x => `0x${x.toString(16).padStart(4, '0')}`)
  20. )
  21. }
  22. const setCriteria = (c, f) => {
  23. criteria = c
  24. finalCriteria = f
  25. return o
  26. }
  27. const o = {
  28. with: c => setCriteria(c),
  29. increasing: () => setCriteria((a, b) => a >= b, (a, b) => a > b),
  30. decreasing: () => setCriteria((a, b) => a <= b, (a, b) => a > b),
  31. static: () => setCriteria((a, b) => a === b, () => true),
  32. check,
  33. result
  34. }
  35. return o
  36. }
  37. module.exports = {
  38. cartesianToPolar,
  39. polarToCartesian,
  40. findMemory
  41. }