Skip to content

swrainbow/mathUtils

Repository files navigation

Math

在当下前端(Web)图形化,可视化应用在不断涌现的背景下,开发者在这样的项目中不可避免的需要使用很多基本的几何运算,例如向量运算,矩阵运算等。

这是一个使用 TS 编写的基础数学库,其内容大致包含:

Class 说明
Vector2 表示二维的一个向量
Matrix3 表示一个 3 x 3 的矩阵
Line2 表示二维世界的一条线
Box2 表示一个二维世界中的 AABB 盒子
Circle 表示二维世界中的一个圆
Arc 表示二维世界中的圆弧

使用

npm i s-mathutil -S

案例

import { Vector2 } from 's-mathutil';

const v1 = Vector2(10, 5);
const v2 = Vector2(2, 2);

// 向量相乘
const v3 = v1.multiply(v2);

// 求两个向量的点积
const dotProduct = v1.dot(v2);

设计理念

本项目在接口的设计上对 three/math 有诸多的参考,但是有一点很不一样,需要格外提醒大家:

所有运算接口得到的都是一个的引用,原有对象的值不会被修改并且矩阵相乘运用了齐次坐标系概念

举个例子

// 有一个向量 v1 , 其坐标为 (5, 10)
const v1 = new Vector2(5, 10);

// 将 v1 的坐标变为原来的两倍
const v2 = v1.multiply(2);

// 此时,v2 为(10, 20), v1 为 (5, 10) 且 v1 !== v2
// 这里的 multiply 运算不会更改对象 v1 本身的值

// 但是例如使用 set 来更新值,则会改变原有的值
const v3 = new Vector2(5, 10);
v3.set(1, 2);

// 此时 v3 已经变为 (1, 2)

总结来讲, set..., from... 等接口都会改变原有对象的值,而例如 multiply, add, apply... 等接口都会返回新值,而不改变原有对象的值

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published