当前位置: 首页 > news >正文

gl-matrix 库简介

gl-matrix 库简介

gl-matrix 是一个高性能的 JavaScript 矩阵和向量库,专门为 WebGL 和其他 3D 图形应用设计。它提供了处理 2D、3D 和 4D 向量以及矩阵运算的高效方法。

主要特性

  1. 高性能:经过高度优化,执行速度快
  2. 轻量级:体积小,无依赖
  3. 全面:包含各种向量和矩阵运算功能
  4. 模块化:可以按需导入特定功能

基本用法

安装

npm install gl-matrix

或通过 CDN 使用:

<script src="https://cdn.jsdelivr.net/npm/gl-matrix@3.4.3/gl-matrix-min.js"></script>

核心模块

  • vec2 - 2D 向量操作
  • vec3 - 3D 向量操作
  • vec4 - 4D 向量操作
  • mat2 - 2x2 矩阵操作
  • mat2d - 2x3 仿射矩阵操作
  • mat3 - 3x3 矩阵操作
  • mat4 - 4x4 矩阵操作
  • quat - 四元数操作

示例代码

import { mat4, vec3 } from 'gl-matrix';// 创建一个单位矩阵
const modelViewMatrix = mat4.create();// 平移矩阵
mat4.translate(modelViewMatrix, modelViewMatrix, [0, 0, -5]);// 旋转矩阵 (绕Y轴旋转45度)
mat4.rotateY(modelViewMatrix, modelViewMatrix, Math.PI / 4);// 缩放矩阵
mat4.scale(modelViewMatrix, modelViewMatrix, [1, 1, 1]);// 向量变换
const position = vec3.fromValues(1, 0, 0);
const transformedPosition = vec3.create();
vec3.transformMat4(transformedPosition, position, modelViewMatrix);

常用操作

向量操作

  • 创建向量:vec3.create()
  • 向量加法:vec3.add(out, a, b)
  • 向量点积:vec3.dot(a, b)
  • 向量叉积:vec3.cross(out, a, b)
  • 向量归一化:vec3.normalize(out, a)

矩阵操作

  • 创建矩阵:mat4.create()
  • 矩阵乘法:mat4.multiply(out, a, b)
  • 透视投影:mat4.perspective(out, fovy, aspect, near, far)
  • 视图矩阵:mat4.lookAt(out, eye, center, up)

性能建议

  1. 尽量重用对象而不是频繁创建新对象
  2. 使用 out 参数接收结果而不是返回新对象
  3. 在动画循环外预先计算不变化的矩阵

gl-matrix 是 WebGL 和 3D 图形编程中非常实用的工具库,能够高效处理各种线性代数运算。

相关文章:

gl-matrix 库简介

gl-matrix 库简介 gl-matrix 是一个高性能的 JavaScript 矩阵和向量库&#xff0c;专门为 WebGL 和其他 3D 图形应用设计。它提供了处理 2D、3D 和 4D 向量以及矩阵运算的高效方法。 主要特性 高性能&#xff1a;经过高度优化&#xff0c;执行速度快轻量级&#xff1a;体积小…...

Spring Boot 核心注解全解:@SpringBootApplication背后的三剑客

大家好呀&#xff01;&#x1f44b; 今天我们要聊一个超级重要的Spring Boot话题 - 那个神奇的主类注解SpringBootApplication&#xff01;很多小伙伴可能每天都在用Spring Boot开发项目&#xff0c;但你真的了解这个注解背后的秘密吗&#xff1f;&#x1f914; 别担心&#x…...

Android 音频架构全解析:从 AudioTrack 到 AudioFlinger

在开发音视频相关应用时&#xff0c;我们常会接触到 MediaPlayer、SoundPool、AudioTrack、OpenSL ES、AAudio、Oboe 等名词&#xff0c;它们都与 Android 的音频播放息息相关。然而&#xff0c;真正理解它们之间的关系以及背后运行机制&#xff0c;才能写出高性能、低延迟的音…...

【教程】无视硬件限制强制升级Windows 11

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 1、下载升级工具&#xff1a;https://github.com/builtbybel/Flyby11/releases 2、解压后打开软件&#xff1a; 3、拖入win11.iso或者自动下载&#xf…...

ICPR-2025 | 让机器人在未知环境中 “听懂” 指令精准导航!VLTNet:基于视觉语言推理的零样本目标导航

作者&#xff1a;Congcong Wen, Yisiyuan Huang, Hao Huang ,Yanjia Huang, Shuaihang Yuan, YuHao, HuiLin and Yi Fang 单位&#xff1a;纽约大学阿布扎比分校具身人工智能与机器人实验室&#xff0c;纽约大学阿布扎比分校人工智能与机器人中心&#xff0c;纽约大学坦登工程…...

替代升级VMware | 云轴科技ZStack构建山西证券一云多芯云平台

通过云轴科技ZStack Cloud云平台&#xff0c;山西证券打造了敏捷部署、简单运维的云平台&#xff0c;不仅兼容x86、海光、鲲鹏三种异构服务器实现一云多芯&#xff0c;还通过云平台虚拟化纳管模块纳管原有VMware虚拟化资源&#xff0c;并对接第三方集中式存储&#xff0c;在保护…...

Houdini python code:参数指定文件路径

创建null节点并命名为control并增加filedir参数 创建python节点 node hou.pwd() geo node.geometry()node hou.node(/obj/output_tetgen/control) filedir node.parm(filedir).eval() print("filedir:",filedir)得到输出...

ChatGPT-o3辅助学术写作的关键词和引言效果如何?

目录 关键词 引言 论文引言&#xff08;≈300 字&#xff09; 大家好这里是AIWritePaper官方账号&#xff0c;官网&#x1f449;AIWritePaper~ 关键词 摘要是文章的精华&#xff0c;通常在200-250词左右。要包括研究的目的、方法、结果和结论。让AI工具作为某领域内资深的研…...

树莓派5+Vosk+python实现语音识别

简介 Vosk是语音识别开源框架&#xff0c;支持二十种语言 - 中文&#xff0c;英语&#xff0c;印度英语&#xff0c;德语&#xff0c;法语&#xff0c;西班牙语&#xff0c;葡萄牙语&#xff0c;俄语&#xff0c;土耳其语&#xff0c;越南语&#xff0c;意大利语&#xff0c;荷…...

Selenium之 CSS 选择器详细讲解

Selenium之 CSS 选择器详细讲解 引言 在.Selenium.自动化测试中&#xff0c;元素定位是至关重要的一环。而.CSS.选择器作为一种强大且灵活的定位工具&#xff0c;在.Selenium.中得到了广泛的应用。本文将详细介绍.CSS.选择器的基本语法、常用类型以及如何在.Selenium.中高效地…...

【LeetCode】大厂面试算法真题回忆(61)--组装新的数组

题目描述 给你一个整数M和数组N,N中的元素为连续整数,要求根据N中的元素组装成新的数组R,组装规则: R中元素总和加起来等于M。R中的元素可以从N中重复选取。R中的元素最多只能有1个不在N中,且比N中的数字都要小(不能为负数)。请输出:数组R一共有多少组装办法。 输入描…...

基于用户的协同过滤推荐系统实战项目

文章目录 基于用户的协同过滤推荐系统实战项目1. 推荐系统基础理论1.1 协同过滤概述1.2 基于用户的协同过滤原理1.3 相似度计算方法1.3.1 余弦相似度(Cosine Similarity)1.3.2 皮尔逊相关系数(Pearson Correlation)1.3.3 欧几里得距离(Euclidean Distance)1.3.4 调整余弦相似度…...

浅析数据库面试问题

以下是关于数据库的一些常见面试问题: 一、基础问题 什么是数据库? 数据库是按照数据结构来组织、存储和管理数据的仓库。SQL 和 NoSQL 的区别是什么? SQL 是关系型数据库,使用表结构存储数据;NoSQL 是非关系型数据库,支持多种数据模型(如文档型、键值对型等)。什么是…...

【Python3】Django 学习之路

第一章&#xff1a;Django 简介 1.1 什么是 Django&#xff1f; Django 是一个高级的 Python Web 框架&#xff0c;旨在让 Web 开发变得更加快速和简便。它鼓励遵循“不要重复自己”&#xff08;DRY&#xff0c;Don’t Repeat Yourself&#xff09;的原则&#xff0c;并提供了…...

Java并发编程高频面试题(已整理Java面试宝典PDF完整版)

为什么要使用并发编程 提升多核CPU利用率&#xff1a;现代计算机通常配备多核CPU&#xff0c;通过创建多个线程&#xff0c;操作系统可以将不同线程分配到不同CPU核心上并行执行&#xff0c;从而充分利用硬件资源。若仅使用单线程&#xff0c;则只能利用一个CPU核心&#xff0c…...

第 4 期:DDPM中的损失函数——为什么只预测噪声?

—— 从变分下界到噪声预测 回顾&#xff1a;我们到底在做什么&#xff1f; 在第 3 期中&#xff0c;我们介绍了扩散模型的逆过程建模。简而言之&#xff0c;目标是通过神经网络学习从噪声 x_t​ 中恢复图像 x_0&#xff0c;并且我们通过预测噪声 ϵ来完成这个任务。 今天&a…...

Docker使用、容器迁移

Docker 简介 Docker 是一个开源的容器化平台&#xff0c;用于打包、部署和运行应用程序及其依赖环境。Docker 容器是轻量级的虚拟化单元&#xff0c;运行在宿主机操作系统上&#xff0c;通过隔离机制&#xff08;如命名空间和控制组&#xff09;确保应用运行环境的一致性和可移…...

专业热度低,25西电光电工程学院(考研录取情况)

1、光电工程学院各个方向 2、光电工程学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、光学工程25年相较于24年下降20分&#xff0c; 2、光电信息与工程&#xff08;专硕&#xff09;25年相较于24年上升15分 3、25vs24推免/统招人数对比 学长、学姐分析…...

六、LangChain Agent 最佳实践

1. 架构设计与组件选择 (1) 核心组件分层设计 Model(LLM驱动层) 生产环境推荐:使用 gpt-4-1106-preview 或 Anthropic Claude 3 等高性能模型,结合 model.with_fallbacks() 实现故障转移(如备用模型或本地模型)。本地部署:选择 Llama3-70B 等开源模型,搭配 Docker 或 …...

ubantu18.04(Hadoop3.1.3)之MapReduce编程

说明&#xff1a;本文图片较多&#xff0c;耐心等待加载。&#xff08;建议用电脑&#xff09; 注意所有打开的文件都要记得保存。 第一步&#xff1a;准备工作 本文是在之前Hadoop搭建完集群环境后继续进行的&#xff0c;因此需要读者完成我之前教程的所有操作。 第二步&…...

PoCL环境搭建

PoCL环境搭建 **一.关键功能与优势****二.设计目的****三.测试步骤**1.创建容器2.安装依赖3.编译安装pocl4.运行OpenCL测试程序 Portable Computing Language (PoCL) 简介 Portable Computing Language (PoCL) 是一个开源的、符合标准的异构计算框架&#xff0c;旨在为 OpenCL…...

关于hadoop和yarn的问题

1.hadoop的三大结构及各自的作用&#xff1f; HDFS&#xff08;Hadoop Distributed File System&#xff09;&#xff1a;分布式文件系统&#xff0c;负责海量数据的存储&#xff0c;具有高容错性和高吞吐量。 MapReduce&#xff1a;分布式计算框架&#xff0c;用于并行处理大…...

软件工程中数据一致性的探讨

软件工程中数据一致性的探讨 引言数据一致性&#xff1a;软件工程中的业务正确性与性能的权衡数据一致性为何重要业务正确性&#xff1a;事务的原子性与一致性ACID原则的基石分布式事务的挑战一致性级别&#xff1a;从强一致到最终一致 实践中的一致性权衡金融系统&#xff1a;…...

在服务器上安装redis

1.安装所需插件gcc 查看gcc版本 gcc -v 没有安装的话,安装命令如下 yum -y install gcc 2.安装 下载安装包 https://download.redis.io/releases/ 将安装包上传到/opt/software目录下 解压安装包 cd /opt/software tar -zxvf redis-6.2.6.tar.gz 编译并安装redis到指…...

如何选择适合您的过程控制器?

在现代工业中&#xff0c;过程控制器是确保生产效率、质量和安全性的关键设备。它们可以精准监测温度、湿度等变量&#xff0c;优化制造流程&#xff0c;减少人工干预&#xff0c;从而降低错误率和运营成本。但您是否清楚&#xff0c;哪种过程控制器更适合您的企业&#xff1f;…...

C#/.NET/.NET Core拾遗补漏合集(25年4月更新)

前言 在这个快速发展的技术世界中&#xff0c;时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节&#xff0c;以帮助大家更全面地了解这些技术栈的特性和发展方向。 ✍C#/.NET/.N…...

闲来无事,用HTML+CSS+JS打造一个84键机械键盘模拟器

今天闲来无聊&#xff0c;突发奇想要用前端技术模拟一个机械键盘。说干就干&#xff0c;花了点时间搞出来了这么一个有模有样的84键机械键盘模拟器。来看看效果吧&#xff01; 升级版的模拟器 屏幕录制 2025-04-18 155308 是不是挺像那么回事的&#xff1f;哈哈&#xff01; 它…...

极狐GitLab 项目导入导出设置介绍?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 导入导出设置 (BASIC SELF) 导入和导出相关功能的设置。 配置允许的导入源 在从其他系统导入项目之前&#xff0c;必须为该…...

极狐GitLab 项目 API 的速率限制如何设置?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 项目 API 的速率限制 (BASIC SELF) 引入于 15.10 版本&#xff0c;功能标志为rate_limit_for_unauthenticated_projects_api_…...

electron 渲染进程按钮创建新window,报BrowserWindow is not a constructor错误;

在 Electron 中&#xff0c;有主进程和渲染进程 主进程&#xff1a;在Node.js环境中运行—意味着能够使用require模块并使用所有Node.js API 渲染进程&#xff1a;每个electron应用都会为每个打开的BrowserWindow&#xff08;与每个网页嵌入&#xff09;生成一个单独的渲染器进…...

【前沿】成像“跨界”测量——扫焦光场成像

01 背景 眼睛是人类认识世界的重要“窗口”&#xff0c;而相机作为眼睛的“延伸”&#xff0c;已经成为生产生活中最常见的工具之一&#xff0c;广泛应用于工业检测、医疗诊断与影音娱乐等领域。传统相机通常以“所见即所得”的方式记录场景&#xff0c;传感器捕捉到的二维图像…...

基于C++(MFC)图形编辑界面工具

MFC 图形编辑界面工具 一、背景 喔&#xff0c;五天的实训终于结束了&#xff0c;学校安排的这次实训课名称叫高级程序设计实训&#xff0c;但在我看来&#xff0c;主要是学习了 Visual C .NET 所提供的 MFC&#xff08;Microsoft Foundation Class)库所提供的类及其功能函数…...

Linux网络通信核心机制解析与层级架构探秘

作为现代操作系统的神经网络&#xff0c;Linux网络通信系统通过多层协作架构实现高效的数据传输机制。本文将从模块化设计、报文处理路径、核心组件交互等多个维度&#xff0c;解析Linux网络通信系统的实现原理与优化策略&#xff0c;并结合内核源码示例与性能调优实践&#xf…...

Tensorflow实现用接口调用模型训练和停止训练功能

语言&#xff1a;Python 框架&#xff1a;Flask、Tensorflow 功能描述&#xff1a;存在两个接口&#xff0c;一个接口实现开始训练模型的功能&#xff0c;一个接口实现停止训练的功能。 实现&#xff1a;用一个全局变量存储在训练中的模型。 # 存储所有训练任务 training_task…...

HTTP测试智能化升级:动态变量管理实战与效能跃迁

在Web应用、API接口测试等领域&#xff0c;测试场景的动态性和复杂性对测试数据的灵活管理提出了极高要求。传统的静态测试数据难以满足多用户并发、参数化请求及响应内容验证等需求。例如&#xff0c;在电商系统性能测试中&#xff0c;若无法动态生成用户ID、订单号或实时提取…...

PyTorch 浮点数精度全景:从 float16/bfloat16 到 float64 及混合精度实战

PyTorch 在深度学习中提供了多种 IEEE 754 二进制浮点格式的支持&#xff0c;包括半精度&#xff08;float16&#xff09;、Brain‑float&#xff08;bfloat16&#xff09;、单精度&#xff08;float32&#xff09;和双精度&#xff08;float64&#xff09;&#xff0c;并通过统…...

《软件设计师》复习笔记(14.2)——统一建模语言UML、事务关系图

目录 1. UML概述 2. UML构造块 (1) 事物&#xff08;Things&#xff09; (2) 关系&#xff08;Relationships&#xff09; 真题示例&#xff1a; 3. UML图分类 (1) 结构图&#xff08;静态&#xff09; (2) 行为图&#xff08;动态&#xff09; 4. 核心UML图详解 5.…...

基于C++(MFC)的细胞识别程序

基于 mfc 的细胞识别程序 一、图像处理课程设计目标 1.1 课题与技术指标 课题&#xff1a;利用图像处理技术设计细胞识别程序。 技术指标&#xff1a; 实验 VS2019 MFC 开发平台待识别图像为 24bit 的真彩色细胞图像进行处理要求识别出细胞&#xff0c;并且保证准确度情况下…...

【前端HTML生成二维码——MQ】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前端HTML生成二维码——MQ 前言本文将介绍前端HTML如何更具用户输入的内容生成对应的二维码,附页面代码、实现函数、js脚本。一、自定义显示页面1、效果图二、使用步骤1、引入库2、实现函数3、页面及函数代…...

Spring Boot自动配置原理深度解析:从条件注解到spring.factories

大家好&#xff01;今天我们来深入探讨Spring Boot最神奇的特性之一——自动配置(Auto-configuration)。这个功能让Spring Boot如此受欢迎&#xff0c;因为它大大简化了我们的开发工作。让我们一起来揭开它的神秘面纱吧&#xff01;&#x1f440; &#x1f31f; 什么是自动配置…...

【unity实战】Animator启用root motion根运动动画,实现完美的动画动作匹配

文章目录 前言1、动画分类2、如何使用根位移动画&#xff1f; 一、根位移动画的具体使用1、导入人形模型2、导入动画3、配置动画参数4、配置角色Animator动画状态机5、使用代码控制人物前进后退 二、问题分析三、Humanoid动画中的Root Motion机制及相关配置1、Humanoid动画中的…...

(51单片机)LCD显示数据存储(DS1302时钟模块教学)(LCD1602教程)(独立按键教程)(延时函数教程)(I2C总线认识)(AT24C02认识)

目录 演示视频&#xff1a; 源代码 main.c LCD1602.c LCD1602.h AT24C02.c AT24C02.h Key.c Key.h I2C.c I2C.h Delay.c Delay.h 代码解析与教程&#xff1a; Dealy模块 LCD1602模块 Key模块 I2C总线模块 AT24C02模块 /E2PROM模块 main模块 演示视频&#xff1a; &…...

2d深度预测

Depth anything v1 相对深度估计&#xff0c;要用绝对深度估计需要微调 概要&#xff1a; 1 使用大量的未标注图像信息 2 采用优化策略—数据增强工具(作用在未标注图像) 3 进行辅助监督—继承语义分割知识&#xff08;作用在未标注图像&#xff09; 数据层面&#xff1a; …...

Android12 ServiceManager::addService源码解读

源码 Status ServiceManager::addService(const std::string& name, const sp<IBinder>& binder, bool allowIsolated, int32_t dumpPriority) {auto ctx mAccess->getCallingContext();// apps cannot add servicesif (multiuser_get_app_id(ctx.uid) >…...

【HDFS入门】HDFS性能调优实战:从基准测试到优化策略

目录 引言 1 HDFS性能评估体系 1.1 性能评估体系架构 1.2 基准测试工具对比 2 TestDFSIO基准测试实战 2.1 TestDFSIO工作原理 2.2 测试执行步骤 2.3 结果分析指标 3 TeraSort基准测试实战 3.1 TeraSort测试流程 3.2 测试执行命令 3.3 关键性能指标 4 HDFS性能调优…...

Linux 内核开发/测试工具对比 Windows 驱动验证工具 (Driver Verifier)

Windows 的 Driver Verifier 是一个用于测试和验证驱动程序的强大工具。在 Linux 内核开发中&#xff0c;虽然没有一个完全等价的单一工具&#xff0c;但有多种工具和框架可以提供类似或更专业的功能。 Linux 内核开发和测试工具 1. KASAN (Kernel Address Sanitizer) 功能&…...

通信算法之269 : OFDM信号的循环自相关特性用于无人机图传信号识别

OFDM信号的循环自相关特性是其循环平稳性的核心体现,如下: [相关仿真代码,联系,提供] 一、循环自相关特性来源 ‌循环前缀引入周期性‌ OFDM符号通过添加循环前缀(CP)形成符号周期结构,导致信号具有循环平稳性‌26。每个符号的CP与尾部数据重复,在时延等于FFT长度(N…...

【无人机】电子速度控制器 (ESC) 驱动电机,常见的电调协议,PWM协议,Oneshot协议,DShot协议

目录 1、ESCs & 电机 #1.1、ESC 协议 --ESC Protocols #1.1.1、PWM协议&#xff0c;需要校准 #1.1.2、One Shot 125协议&#xff0c;速率更快 #1.1.3、DShot &#xff0c;减少延迟&#xff0c;无需校准 #1.1.4、无人机CAN 2、PWM 伺服系统和 ESC&#xff08;电机控…...

LeadeRobot具身智能应用标杆:无人机X柔韧具身智能,空中精准作业游刃有余

当前,具身智能已成为全球科技领域的前沿焦点,更受到国家战略级重视,吸引科技产业巨头抢滩布局。但同时,具身智能的商业化路径、规模化应用场景、技术成本等难题也开始在资本界与产业圈引起广泛讨论。 目前,万勋科技基于Pliabot 柔韧技术已推出多款具身智能柔韧机器人产品,在柔…...

WebSocket:实现实时双向通信的技术

WebSocket是一种网络通信协议&#xff0c;它在单个TCP连接上提供全双工通信。WebSocket协议在2011年被IETF&#xff08;互联网工程任务组&#xff09;标准化为RFC 6455&#xff0c;并由W3C&#xff08;万维网联盟&#xff09;制定了WebSocket API标准&#xff0c;使得客户端&am…...