当前位置:首页 > JavaScript

js实现正交

2026-04-03 20:49:05JavaScript

正交的概念

正交在数学和编程中通常指两个向量互相垂直,点积为零。在JavaScript中实现正交计算,常用于图形处理、游戏开发或数据分析领域。

向量点积计算

计算两个向量的点积是判断正交性的基础。点积为零表示向量正交:

function dotProduct(v1, v2) {
  return v1.reduce((sum, val, i) => sum + val * v2[i], 0);
}

正交性判断

通过点积结果判断是否正交,需考虑浮点数精度误差:

function isOrthogonal(v1, v2, epsilon = 1e-10) {
  return Math.abs(dotProduct(v1, v2)) < epsilon;
}

生成正交向量

给定一个向量,计算其正交向量(二维情况):

function getOrthogonalVector([x, y]) {
  return [-y, x]; // 旋转90度得到正交向量
}

高维正交化

对于高维空间,可使用Gram-Schmidt正交化过程:

function gramSchmidt(vectors) {
  const basis = [];
  for (const v of vectors) {
    let w = [...v];
    for (const b of basis) {
      const projection = scalarMultiply(b, dotProduct(v, b) / dotProduct(b, b));
      w = vectorSubtract(w, projection);
    }
    if (magnitude(w) > 0) basis.push(normalize(w));
  }
  return basis;
}

实用工具函数

实现正交计算需要的辅助函数:

js实现正交

function magnitude(v) {
  return Math.sqrt(v.reduce((sum, val) => sum + val * val, 0));
}

function normalize(v) {
  const mag = magnitude(v);
  return v.map(x => x / mag);
}

function vectorSubtract(v1, v2) {
  return v1.map((val, i) => val - v2[i]);
}

function scalarMultiply(v, scalar) {
  return v.map(x => x * scalar);
}

这些实现可以处理从基础正交判断到高维空间正交化等各种场景,适用于JavaScript开发的数学计算需求。

标签: 正交js
分享给朋友:

相关文章

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js实现图片滚动

js实现图片滚动

图片滚动的实现方法 使用CSS动画实现 通过CSS的animation和@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。 <style> .scr…