vector_math 2.0.8

  • Readme
  • Changelog
  • Installing
  • 72

vector_math #

Build Status Coverage Status

Introduction #

用于2D和3D应用程序的Vector数学库.

Features #

  • 2D,3D和4D向量和矩阵类型.
  • 用于旋转动画的四元数类型.
  • 碰撞检测:AABB,射线,球体,...
  • 实用程序,例如颜色和与渲染相关的常见操作
  • 灵活的getter和setter方法,例如position.xwz = color.grb; .
  • 充分记录.
  • 经过测试.
  • 大量优化.

Libraries using vector_math #

Getting Started #

1.将以下内容添加到项目的pubspec.yaml中,然后运行pub get .

dependencies:
  vector_math: any

2.为您的项目添加正确的导入.

import 'package:vector_math/vector_math.dart';

Documentation #

阅读文档

Examples #

1.使用GLSL getter和setter语法.

import 'package:vector_math/vector_math.dart';

void main() {
  Vector3 x = new Vector3.zero(); // Zero vector
  Vector4 y = new Vector4.all(4.0); // Vector with 4.0 in all lanes
  x.zyx = y.xzz; // Sets z,y,x the values in x,z,z
}

2.转换向量.

import 'dart:math';
import 'package:vector_math/vector_math.dart';

void main() {
  // Rotation of PI/2 degrees around the Y axis followed by a
  // translation of (5.0, 2.0, 3.0).
  Matrix4 T = new Matrix4.rotationY(PI * 0.5)..translate(5.0, 2.0, 3.0);
  // A point.
  Vector3 position = new Vector3(1.0, 1.0, 1.0);
  // Transform position by T.
  T.transform3(position);
}

3.反转矩阵

import 'dart:math';
import 'package:vector_math/vector_math.dart';

void main() {
  // Rotation of 90 degrees around the Y axis followed by a
  // translation of (5.0, 2.0, 3.0).
  Matrix4 T = new Matrix4.rotationY(PI * 0.5)..translate(5.0, 2.0, 3.0);
  // Invert T.
  T.invert();
  // Invert just the rotation in T.
  T.invertRotation();
}

4.使用四元数旋转向量

import 'dart:math';
import 'package:vector_math/vector_math.dart';

void main() {
  // The X axis.
  Vector3 axis = new Vector3(1.0, 0.0, 0.0);
  // 90 degrees.
  double angle = PI / 2.0;
  // Quaternion encoding a 90 degree rotation along the X axis.
  Quaternion q = new Quaternion.axisAngle(axis, angle);
  // A point.
  Vector3 point = new Vector3(1.0, 1.0, 1.0);
  // Rotate point by q.
  q.rotate(point);
}

5.检查两个轴对齐的边界框是否相交

import 'package:vector_math/vector_math.dart';

void main() {
  // Define the first box with a minimum and a maximum.
  Aabb2 aabbOne = new Aabb2.minMax(new Vector2.zero(), new Vector2(4.0, 4.0));
  // Define the second box
  Aabb2 aabbTwo =
      new Aabb2.minMax(new Vector2(5.0, 5.0), new Vector2(6.0, 6.0));
  // Extend the second box to contain a point
  aabbTwo.hullPoint(new Vector2(3.0, 3.0));
  // Check if the two boxes intersect, returns true in this case.
  bool intersect = aabbOne.intersectsWithAabb2(aabbTwo);
}

6.检查射线和球体相交的位置

import 'package:vector_math/vector_math.dart';

void main() {
  // Define a ray starting at the origin and going into positive x-direction.
  Ray ray = new Ray.originDirection(new Vector3.zero(), new Vector3(1.0, 0.0, 0.0));
  // Defines a sphere with the center (5.0 0.0 0.0) and a radius of 2.
  Sphere sphere = new Sphere.centerRadius(new Vector3(5.0, 0.0, 0.0), 2.0);
  // Checks if the ray intersect with the sphere and returns the distance of the
  // intersection from the origin of the ray. Would return null if no intersection
  // is found.
  double distanceFromOrigin = ray.intersectsWithSphere(sphere);
  // Evaluate the position of the intersection, in this case (3.0 0.0 0.0).
  Vector3 position = ray.at(distanceFromOrigin);
}

7.处理颜色

import 'package:vector_math/vector_math.dart';

void main() {
  // Access a build-in color, colors are stored in 4-dimensional vectors.
  Vector4 red = Colors.red;
  Vector4 gray = new Vector4.zero();
  // Convert the red color to a grayscaled color.
  Colors.toGrayscale(red, gray);
  // Parse a blue color from a hex string.
  Vector4 blue = new Vector4.zero();
  Colors.fromHexString('#0000FF', blue);
  // Convert the blue color from RGB to HSL.
  Colors.rgbToHsl(blue, blue);
  // Reduce the lightness of the color by 50%.
  blue.z *= 0.5;
  // Convert the HSL color back to RGB.
  Colors.hslToRgb(blue, blue);
}

Development #

要运行测试用例:

~/src/vector_math/> pub run test:test

自动生成vector_math_64的最新版本:

~/src/vector_math/> dart tool/generate_vector_math_64.dart

Changelog - vector_math #

v 2.0.8 - July 2018 #

  • 使用Dart 2核心库常量名称的内部修复.

v 2.0.7 - April 2018 #

  • 修复了MeshGeometry.combine中的索引编制错误

v 2.0.6 - March 2018 #

  • 对于不具有单位长度的矢量,为angleTo固定
  • 添加了Matrix4.tryInvert.

v 2.0.5 - July 2017 #

  • 强模式清洁

v 2.0.4 - February 2017 #

  • 添加了Matrix4.isIdentity()
  • 添加了Matrix4.isZero()
  • 添加了Matrix3.isIdentity()
  • 添加了Matrix3.isZero()
  • 添加了Vector2.angleTo和Vector2.angleToSigned

v 2.0.3 - May 2016 #

  • 同步Float64版本

v 2.0.2 - May 2016 #

  • 添加Matrix4.leftTranslate

v 2.0.1 - April 2016 #

  • 添加Matrix4.SkewX,Matrix4.SkewY和Matrix4.Skew构造函数

v 2.0.0 - March 2016 #

  • 删除调用链,方法不再返回此链接. 您可以改用级联运算符方法.
  • 删除对颤抖包的依赖

v 1.4.7 - February 2016 #

  • 修复了Matrix4.inverted构造函数中ArgumentError的用法

v 1.4.6 - January 2016 #

  • 添加了MatrixX.fromList构造函数

v 1.4.5 - January 2016 #

  • 添加了Matrix4.inverted构造函数

v 1.4.4 - December 2014 #

  • 更新了依赖性.
  • 将基准代码移至benchmark/
  • Updated vector_math_64.

v 1.4.3 - February 2014 #

  • 添加颜色转换例程(由Oliver Sand提供)
  • 更多碰撞和几何例程(由Oliver Sand提供)
  • 更多测试(由Oliver Sand提供)
  • v 1.4.3发布版本

v 1.4.1 - January 2014 #

  • 更好的网格生成器(由Brandon Jones贡献)
  • 修复ray v.三角形相交测试中的错误(由@AMagill提供)

v 1.4.0 - November 2013 #

  • 添加基本​​的网格生成器(由Brandon Jones提供)
  • 添加更多碰撞检测对象(由Oliver Sand提供)

v 1.3.5 - July 2013 #

  • 现在,根据Dart样式指南,类名以大写字母开头.
  • 绩效审核.
  • 新的vector_math_operations库.
  • 新的vector_math_lists库.
  • 添加了Aabb2并充实了Aabb3(感谢Laszlo Korte)
  • Added Matrix solve methods (thanks to Laszlo Korte)
  • 增加了Three.dart所需的方法(感谢Anders Forsell)

v 1.1.0 - April 2013 #

  • 大型重构.

v 0.9.7 - March 2013 #

  • 将生成的构造函数代码重构为小函数.
  • 将生成的操作员*代码重构为小函数.
  • 修正四元数代码中的错字.

v 0.9.6 - March 2013 #

  • 更新到最新的字符串库.
  • 修复矩阵构造函数中的保留引用.
  • 将double类型替换为rotationY和rotationZ中的num.

v 0.9.5 - February 2013 #

  • 删除其余的双精度型测试,并用num代替.
  • 不要抛出默认的矩阵和向量构造函数.

v 0.9.4 - February 2013 #

  • 删除不必要的dart:scalarlist导入.
  • 现在dart2js已修复,将negate_重命名为negate.
  • 修复测试套件中的库导入.
  • 灵活的构造函数修复程序已添加到生成器.
  • 在dart2js下经过测试的库

v 0.9.3 - February 2013 #

  • 恢复使用单个库!
  • 公共API恢复为采用num而不是double.
  • 修复了M3引入的所有警告/错误.
  • drone.io综合测试.
  • 修复了旋转构造中的错误.
  • 修复了正交矩阵构造中的错误.
  • fkleon固定灵活的构造函数的外部贡献.
  • donny-dont的外部贡献,其中添加了缺少的强制转换.toDouble().

v 0.9.0 - October 2012 #

  • 酒馆:Dart Vector Math现在完全支持酒馆包管理系统!
  • API ++:到处都是对API的微小更改. 这些更改提高了图书馆的美观性和性能.
  • 更快:大量的性能调整导致库变得更快并且产生更少的垃圾.
  • 2D Cross产品:Box2D Dart端口需要2D Cross产品.
  • 库拆分:两个库,一个用于浏览器应用程序和控制台应用程序.

v 0.8.5 - July 29 2012 #

  • 矩阵乘法快33%
  • 修复生成的运算符[] =
  • 修复OpenGL查找和透视矩阵构造函数
  • 修复Mat4x4旋转构造函数
  • 修复mat4x4乘以vector3而不应用翻译的问题
  • 添加实用程序方法以在Dart Vector Math类型和Float32Array / Float32List类型之间切换
  • 添加mat4x4翻译构造函数
  • 修复了buildPlaneVectors方法
  • 修复mat4x4 transformDirect3不应用翻译的问题
  • 添加mix()的新变体,该变体将参数t作为数字或向量
  • 大代码重组以使其适合" dartblanklib"模板

v 0.8.0 - June 10 2012 #

  • 2x2,3x3,4x4矩阵的逆
  • 4x4矩阵的高3x3的逆
  • 添加了零,副本和原始专用(和无分支)矢量构造函数
  • 添加了专门的复制矩阵构造函数
  • 为mat2x2,mat3x3和mat4x4添加了专用的旋转矩阵构造函数
  • 将setRotation(num弧度)添加到mat2x2
  • 将setRotationAround [x,y,z](num弧度)添加到mat3x3和mat4x4
  • 添加了buildPlaneVectors,可在给定平面法线的情况下构造跨度矢量
  • 添加了2x2、3x3和4x4矩阵的伴随
  • 修复了四元数类中的许多错误
  • 固定伴随矩阵代码生成
  • 向矩阵类添加了selfAdd,selfSub,selfScale和selfNegate
  • 增加了对Float32Array和向量/矩阵的序列化支持

v 0.0.0 - March 20 2012 #

  • 初始发行

Use this package as a library

1. Depend on it

将此添加到包的pubspec.yaml文件中:


dependencies:
  vector_math: ^2.0.8

2. Install it

您可以从命令行安装软件包:

与酒吧:


$ pub get

使用Flutter:


$ flutter pub get

另外,您的编辑器可能支持pub getflutter pub get . 查看您的编辑器文档以了解更多信息.

3. Import it

现在,在Dart代码中,您可以使用:


import 'package:vector_math/vector_math.dart';
  
Popularity:
描述该程序包相对于其他程序包的受欢迎程度. [更多]
100
Health:
从静态分析得出的代码运行状况. [更多]
75
Maintenance:
反映出包装的整洁和最新状态. [更多]
0
Overall:
以上的加权分数. [更多]
72
了解有关得分的更多信息.

我们在2020年7月11日对该软件包进行了分析,并在下面提供了得分,详细信息和建议. using: 分析已完成,状态使用以下命令 :

  • 飞镖:2.8.4
  • 直到:0.13.14

Health suggestions

修复lib/src/vector_math/colors.dart . (-25分)

lib/src/vector_math/colors.dart报告了146条提示,包括:

第11行第45行:不必要的新关键字.

第14行第46行:不必要的新关键字.

第71行第11行:不必要的新关键字.

第79行第18行:使用=将命名参数与其默认值分开.

第79行,第37行:使用=将命名参数与其默认值分开.

修复lib/src/vector_math/vector3.dart . (-25分)

lib/src/vector_math/vector3.dart报告了129条提示,包括:

第42行第7栏:不必要的新关键字.

第46行第7列:不必要的新关键字.

第49行第33行:不必要的新关键字.

第52行第40行:不必要的新关键字.

第55行,第42行:不必要的新关键字.

修复lib/src/vector_math/vector4.dart . (-25分)

lib/src/vector_math/vector4.dart报告了346条提示,包括:

第45行第7列:不必要的新关键字.

第49行第7行:不必要的新关键字.

第52行第33行:不必要的新关键字.

第55行第33行:不必要的新关键字.

第58行第40行:不必要的新关键字.

修复具有分析或格式问题的其他57个文件. (-431.13点)

以下文件中的其他问题:

  • lib/src/vector_math_64/colors.dart (146条提示)
  • lib/src/vector_math_64/vector3.dart (129条提示)
  • lib/src/vector_math_64/vector4.dart (346条提示)
  • lib/src/vector_math_geometry/generators/cube_generator.dart (48条提示)
  • lib/src/vector_math/matrix4.dart (39条提示)
  • lib/src/vector_math_64/matrix4.dart (39条提示)
  • lib/src/vector_math/vector2.dart (37条提示)
  • lib/src/vector_math_64/vector2.dart (37 hints)
  • lib/src/vector_math/aabb3.dart (36条提示)
  • lib/src/vector_math_64/aabb3.dart (36条提示)
  • lib/src/vector_math/third_party/noise.dart (28条提示)
  • lib/src/vector_math_64/third_party/noise.dart (28条提示)
  • lib/src/vector_math/obb3.dart (24条提示)
  • lib/src/vector_math_64/obb3.dart (24条提示)
  • lib/src/vector_math_geometry/mesh_geometry.dart (21条提示)
  • lib/src/vector_math/matrix3.dart (20条提示)
  • lib/src/vector_math_64/matrix3.dart (20条提示)
  • lib/src/vector_math/quaternion.dart (19条提示)
  • lib/src/vector_math_64/quaternion.dart (19条提示)
  • lib/src/vector_math_geometry/generators/attribute_generators.dart (17条提示)
  • lib/src/vector_math/opengl.dart (15条提示)
  • lib/src/vector_math_64/opengl.dart (15条提示)
  • lib/src/vector_math/matrix2.dart (14条提示)
  • lib/src/vector_math_64/matrix2.dart (14条提示)
  • lib/src/vector_math/aabb2.dart (13条提示)
  • lib/src/vector_math_64/aabb2.dart (13条提示)
  • lib/src/vector_math/quad.dart (12条提示)
  • lib/src/vector_math_64/quad.dart (12条提示)
  • lib/src/vector_math/ray.dart (11条提示)
  • lib/src/vector_math_64/ray.dart (11条提示)
  • lib/src/vector_math_geometry/generators/geometry_generator.dart (11条提示)
  • lib/src/vector_math/triangle.dart (9条提示)
  • lib/src/vector_math_64/triangle.dart (9条提示)
  • lib/src/vector_math_geometry/generators/cylinder_generator.dart (9条提示)
  • lib/src/vector_math/frustum.dart (8条提示)
  • lib/src/vector_math_64/frustum.dart (8条提示)
  • lib/src/vector_math_geometry/filters/flat_shade_filter.dart (8条提示)
  • lib/src/vector_math_lists/vector_list.dart (8条提示)
  • lib/src/vector_math_geometry/filters/barycentric_filter.dart (7条提示)
  • lib/src/vector_math_geometry/generators/ring_generator.dart (7条提示)
  • bin/mesh_generator.dart (6条提示)
  • lib/src/vector_math/plane.dart (5条提示)
  • lib/src/vector_math_64/plane.dart (5条提示)
  • lib/src/vector_math_geometry/generators/circle_generator.dart (5条提示)
  • lib/src/vector_math_geometry/generators/sphere_generator.dart (5条提示)
  • lib/src/vector_math_geometry/filters/color_filter.dart (4条提示)
  • lib/src/vector_math/sphere.dart (3条提示)
  • lib/src/vector_math_64/sphere.dart (3条提示)
  • lib/src/vector_math_operations/matrix.dart (3条提示)
  • lib/src/vector_math_lists/scalar_list_view.dart (2条提示)
  • lib/src/vector_math/intersection_result.dart (1条提示)
  • lib/src/vector_math_64/intersection_result.dart (1条提示)
  • lib/src/vector_math_geometry/filters/geometry_filter.dart (1条提示)
  • lib/src/vector_math_geometry/filters/transform_filter.dart (1条提示)
  • lib/src/vector_math_lists/vector2_list.dart (1条提示)
  • lib/src/vector_math_lists/vector3_list.dart (1条提示)
  • lib/src/vector_math_lists/vector4_list.dart (1条提示)

Maintenance suggestions

包已过时. (-96.71点)

该软件包的最新发布时间是102周前.

包装说明太短. (-11分)

将更多详细信息添加到pubspec.yamldescription字段中. 使用60到180个字符描述软件包,软件包的功能以及目标用例.

保持榜样. (-10点)

example/目录中创建一个简短的演示,以演示如何使用此软件包.

常见的文件名模式包括main.dartexample.dartvector_math.dart . 具有多个示例的软件包应提供example/README.md .

有关更多信息,请参见pub包布局约定 .

Dependencies

Package Constraint Resolved Available
直接依赖
Dart SDK > = 2.0.0-dev.49.0 <3.0.0
开发依赖
benchmark_harness any
browser any
path > = 1.0.0 <2.0.0
test > = 0.12.0 <0.13.0

by  ICOPY.SITE