Vecteur是一个支持二维和三维向量操作的库


Vecteur 是一个为 Javascript/Typescript 设计的简单向量库。它通过提供向量操作的实用功能,使处理二维和三维向量变得非常简单。

安装Vecteur

使用npm, yarn或者pnpm之一进行安装:

# npm

npm install vecteur

# yarn

yarn add vecteur

# pnpm

pnpm add vecteur

基本用法

你可以这样创建一个二维向量并进行操作:

import { vec2 } from 'vecteur/2d';

const v = vec2(1, 2);
console.log(v.toString()); // 输出: x: 1, y: 2

v.add(2, 3).sub(1).mult(-1);
console.log(v.toString()); // 输出: x: -2, y: -4

若想减小打包大小(实现tree shaking),也可以从指定的文件直接引入:

// 仅包含2D向量相关功能
import { vec2, ... } from 'vecteur/2d';

// 仅包含3D向量相关功能
import { vec3, ... } from 'vecteur/3d';

// 包含2D和3D向量的相关功能
import { vec2, vec3, ... } from 'vecteur';

支持的向量操作

Vecteur库支持多种常用的向量操作,包括但不限于:

向量创建 (vec2, vec3)

向量加法 (add)

向量减法 (sub)

向量乘法 (mult)

向量除法 (div)

向量点积 (dot)

向量叉积(仅限3D向量)(cross)

归一化向量 (normalize)

计算向量长度 (mag)

限制向量长度 (limit)

设置向量长度 (setMag)

计算两个向量之间的距离 (dist)

计算向量的方向角(仅限2D向量)(heading)

向量旋转(仅限2D向量)(rotate)

数组与向量之间的转换 (toArray, fromArray)

该库受到了Victor(现已不再维护)和p5.Vector(功能较为繁重)库的启发,并且是由Sikriti Dakua创建并加以维护的。使用Vecteur构建功能是十分精简且足够满足一般需求。开发者承诺将在需要时加入更多特性。

完整示例代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" />

</head>
<body>
<script type="module">
      
import { vec2 } from "//repo.bfw.wiki/bfwrepo/js/module/vecteur/esm/index.js";
// 创建两个二维向量
const v1 = vec2(5, 10);
const v2 = vec2(2, 3);

// 下面的操作中包含了几个错误:

// 错误: vec2函数需要两个参数,但这里只传了一个
const v3 = vec2(5);

// 错误: add函数需要传入一个向量或两个代表坐标的数值,这里传入的参数类型错误
v1.add([2, 3]);


v2.sub(v1);


// 打印出现在的v1和v2的值,尽管前面的操作都是错误的
console.log('v1:', v1.toString());
console.log('v2:', v2.toString());
</script>
</body>
</html>
		
		


立即下载module/vecteur/esm/index.js查看所有js插件

网友评论0

程序员在线工具箱