当前位置:首页 > 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实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…