Pensieve
日常记录
日常记录
  • tool

    • yarn
    • powershell
    • 编辑器
    • git命令提示
    • vim
    • gitlab
    • husky-git钩子工具
  • wsl

    • 本机代理
  • html

    • 不常用功能
  • js

    • math 相关
    • js 日期相关
    • API参考
    • 算法相关
    • 图片相关
    • js 事件相关
    • 数据结构相关
    • vue
    • rxjs相关
  • node

    • 文件操作
    • svg压缩工具-svgo
  • go

    • go的一些命令
    • 文件操作
    • 网络相关
    • 目录结构推荐
    • 常用三方库
    • wasm
  • rust

    • Rust 入门笔记
    • wasm
    • 一些库
    • 圣经记录
  • linux

    • hyprland的一些问题
  • 杂项

    • 视频流相关

math 相关

区间随机数

// (min,max)
const randomNone = (min, max) =>
  min + Math.ceil(Math.random() * (max - min - 1));
// [min,max)
const randomMin = (min, max) => min + Math.floor(Math.random() * (max - min));
// (min,max]
const randomMax = (min, max) => min + Math.ceil(Math.random() * (max - min));
// [min,max]
const randomAll = (min, max) =>
  min + Math.floor(Math.random() * (max - min + 1));

四舍五入

const round = (n, decimals = 0) =>
  Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`);

数字补零

const padding = (num, length) => {
  //这里用slice和substr均可
  return (Array(length).join("0") + num).slice(-length);
};

判断是否为数字

Number.isFinite(value);

唯一 ID 生成

  • 可以使用nanoid

matrix 分解

const test = (mat) => {
  var a = mat[0];
  var b = mat[1];
  var c = mat[2];
  var d = mat[3];
  var e = mat[4];
  var f = mat[5];

  var delta = a * d - b * c;

  let result = {
    translation: [e, f],
    rotation: 0,
    scale: [0, 0],
    skew: [0, 0],
  };

  if (a != 0 || b != 0) {
    var r = Math.sqrt(a * a + b * b);
    result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);
    result.scale = [r, delta / r];
    result.skew = [Math.atan((a * c + b * d) / (r * r)), 0];
  } else if (c != 0 || d != 0) {
    var s = Math.sqrt(c * c + d * d);
    result.rotation =
      Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));
    result.scale = [delta / s, s];
    result.skew = [0, Math.atan((a * c + b * d) / (s * s))];
  } else {
    // a = b = c = d = 0
  }

  return result;
};
Last Updated: 10/27/22, 3:28 PM
Contributors: dxy2233
Next
js 日期相关