npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

s-mathutil

v0.0.9

Published

math libary for render

Downloads

1

Readme

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... 等接口都会返回新值,而不改变原有对象的值