转 第十八章 矩阵数学 (as3.0)

读《数学之美》 数学之美 数学的发展实际上是不断的抽象和概括的过程 目录 数学之美 第一章 第二章(从规则到统计) 第三章 统计语言模型 第四章 分词 第五章 隐马尔科夫模型 第六章 信息的度量和作用 第七章 贾里尼克和和现代语言处理 第八章 简单之美——布尔代数和搜索引擎 布尔代数: 第九章 图论和网络爬虫 图论 网络爬虫 构建网络爬虫的工程要点(考察基础素养) 第十章 PageRank——google民主表决式网页排名技术 PageRank原理 第十一章如何确定网页和查询的相关性 阅读详情

本章我们不去介绍一些新的运动、物理学或渲染图形的方法。我要给大家介绍的是矩阵
(Matrix),它给我们提供了一个新的可选方案。
     矩阵在 3D 系统中 3D 点的旋转,缩放以及平移(运动)中使用得非常频繁。在各种 2D
图形的变换上也很常用。您也许可以回想到 beginGradientFill 方法就是使用矩阵来设置位
置,大小以及旋转比例的。
     本章大家将看到如何创建一个 3D 矩阵系统,用以操作 3D 的影片并且可以看到一些
Flash 中内置的矩阵。我很庆幸现在为止还没有一处提到 Keanu Reeves [译注:基努-里维斯,
尤指电影《黑客帝国》-- The Matrix] 的电影。看看我还能坚持多久。
转 <wbr>第十八章 <wbr>矩阵数学 <wbr>(as3.0)


图 18-1 一个 3×3 矩阵,一个 1×3 矩阵,一个 3×1 矩阵
     矩阵通常都是由一些变量来描述的,如 M。在矩阵中为表示一个特殊的单元,我们使
用的变量里面通常要用行列的值作为脚标。例如,如果图 18-1 中的 3×3 矩阵叫做 M,
那么 M2,3 就等于 6,因为它指向第二行,第三列。
     一个矩阵的单元不仅可以包含简单的数字,也可以是公式和变量。其实电子表格就是一
个大的矩阵。 我们可以用一个单元保存某一列的和,用另一个单元格将这个总和乘以一个分
数,等等。我们看到这样的矩阵应该非常有用。
矩阵运算
    一个电子表格就像一个自由组合的矩阵,我们要处理的矩阵更加有结构, 至于能用它们
做什么以及如何生成都有各自的规则。
    我所见过的大多数矩阵数学的教材都只介绍两种方法的一种。首先学校讲的是矩阵运算
的细节,使用的整个矩阵的几乎都是一些随机的数字。我们学习这些规则,但是不知道为什
么要做这些事情或所得的结果代表什么。就像在玩把数字排列成漂亮形状的游戏。
    第二个方法是详细地描述矩阵的内容但是略过手工操作, “将两个矩阵相乘得到这个
 如结果… …”让读者不知道乘法到底是怎么算的。
    为了保证大家都能了解矩阵是如何工作的,我选择一个两者兼具的方法(折衷) ,从介
绍一些数值矩阵开始,然后描述如何做矩阵乘法。
矩阵加法
    矩阵更为通常的作用是操作 3D 点。一个 3D 点包涵了 x, y, z 坐标。我们可以简单地
将它视为一个 1×3 的矩阵:
    xyz
现在假设要将这个点在空间中移动,或叫做点的平移。我们需要知道每个轴上移动多远。这
时可以将它放入一个转换矩阵(translation matrix)中。它又是一个 1×3 的矩阵:
    dx dy dz
这里 dx, dy, dz 是每个轴移动的距离。现在我们要想办法将转换矩阵加到点矩阵上面。这就
是矩阵加法,  非常简单。我们只需要将相应的单元进行相加形成一个新的包含了每个单元之
和的矩阵。很明显,要让两个矩阵相加,它们的大小都应该是相同的。转换方法如下:
    x y z + dx dy dz = (x + dx) (y + dy) (z + dz)
获得的矩阵可以叫做 x1, y1, z1,转换之后包含了该点的新坐标。让我们用实数来试一下。
假设点在 x, y, z 轴上的位置分别为 100, 50, 75,要让它们分别移动 -10, 20, -35。则应该是
这样的:
    100 50 75 + -10 20 -35 = (100 - 10) (50 + 20) (75 - 35)
因此,当进行加法运算时,所得该点的新坐标就是 90, 70, 40。非常简单,不是吗?大家也
许已经注意到了速度间的相互关系,   每个轴上的速度都加到了另一个矩阵的相应位置上。   公
平交易嘛。
    如果我们有一个较大的矩阵,那么继续使用同样的方法,匹配每个单元。我们不会去处
理大于 3×1 的矩阵加法,但是我会给大家这样一个抽象的例子:
    abc               jkl         (a + j) (b + k) (c + l)
    def         +     mno       = (d + m) (e + n) (f + o)
    ghi               pqr         (g + p) (h + q) (i + r)
  以上就是我们需要知道矩阵加法的一切。 在介绍了矩阵乘法之后,我将展示如何将现有的函
数使用在矩阵 3D 引擎中。
矩阵乘法
      在 3D 转换中应用更为广泛的是矩阵乘法(matrix multiplication),常用于缩放与旋转。
在本书中我们实际上不会用到 3D 缩放,因为例子中的点缩放,影片也没有 3D 的“厚度”,
因此只有二维的缩放。当然,大家可以建立一个可缩放整个 3D 立体模型的更为复杂的引
擎。这就需要写一些根据新的影片大小改变 3D 点的函数。这些已经超出了我们讨论的范
围,但是由于缩放是非常简单的,并且使用矩阵乘法很容易实现,因此我将带大家看一下这
个例子。
使用矩阵进行缩放
    首先,需要知道一个物体现有的宽度,高度和深度 —— 换句话讲,它是三个轴上每个
轴分量的大小。当然可以建立一个 3×1 的矩阵:
      whd
我们知道 w, h, d 代表宽度(width),高度(height)和深度(depth)。下面需要缩放这个矩
阵:
      sx  0  0
      0  sy  0
      0   0 sz
这里 sx, sy, sz 是对应轴上的缩放比例。它们都将是分数或小数,1.0 为 100%,2.0 为
200%,0.5 为 50%,等等。稍后大家会看到为什么矩阵是用这种形式分布的。
    要知道,矩阵乘法是为了让两个矩阵相乘,第一个矩阵的列数必需与另一个矩阵的行数
相同。只要符合这个标准,第一个矩阵可以有任意多个行,第二个矩阵可以有任意多个列。
本例中,由于第一个矩阵有三列(w, h, d),因此缩放矩阵就有三行。那么它们如何进行乘
法运算呢?让我们来看一下这个模式:
            sx 0 0
    w h d * 0 sy 0
            0 0 sz
矩阵的计算结果如下:
     (w*sx + h*0 + d*0) (w*0 + h*sy + d*0) (w*0 + h*0 + d*sz)
删除所有等于 0 的数:
     (w*sx) (h*sy) (d*sz)
非常有合乎逻辑,因为我们是用宽度 (x 轴分量) 乘以 x 缩放系数,高度乘以 y 缩放系数,
深度乘以 z 缩放系数。但是,我们究竟在做什么呢?那些所有等于 0 的数都像被遮盖上了,
因此让我们将这个模式抽象得更清晰一点。
        a  b  c
  uvw * d  e  f
        g  h  i

现在可以看到该模式的结果为:
    (u*a + v*d + w*g) (u*b + v*e + w*h) (u*c + v*f + w*i)
我们将第一个矩阵的第一行(u, v, w)与第二个矩阵每行的第一个元素相乘。将它们加起来
就得到了结果的第一行的第一个元素。在第二个矩阵的第二列(b, e, h)中使用相同的方法
就得到了第二列的结果。
    就要在第二行中重复上述动作,就会得到第二行的结果:
    如果第一个矩阵的行数大于 1,
  u v w   a b c
  x y z * d e f
          g h i
就得到了这个 3×2 的矩阵:
    (u*a + v*d + w*g) (u*b + v*e + w*h) (u*c + v*f + w*i)
    (x*a + y*d + z*g) (x*b + y*e + z*h) (x*c + y*f + z*i)
现在让我们看一些实际中用到的矩阵乘法 —— 坐标旋转。希望通过这个缩放的例子会让它
看起来更加清晰。
使用矩阵进行坐标旋转
首先,要挖出我们的 3D 点矩阵:
    x y z
它保存了该点所有的坐标。当然,还要有一个旋转矩阵。我们可以在三个轴的任意一轴上进
行旋转。我们将分别创建每种旋转的矩阵。先从 x 轴旋转矩阵开始:
    1    0      0
    0   cos   sin
    0  -sin   cos
这里有一些正余弦值, “sin 和 cos 是什么?”很明显,这就是我们要旋转的角度的正余弦
值。如果让这个点旋转 45 度,则这两个值就是 45 的正弦和余弦值。 (当然,在代码中要
使用弧度制)现在,我们让该矩阵与一个 3D 点的矩阵相乘,看一下结果。
          1      0     0
  x y z * 0     cos   sin
          0    -sin   cos
由此得到:
    (x*1 + y*0 + z*0) (x*0 + y*cos - z*sin) (x*0 + y*sin + z*cos)
整理后结果如下:
    (x) (y*cos - z*sin) (z*cos + y*sin)
这句话用 ActionScript 大略可以翻译成:
    x = x;
    y = Math.cos(angle) * y - Math.sin(angle) * z;
    z = Math.cos(angle) * z + Math.sin(angle) * y;
回忆一下第十章,在讨论坐标旋转时,我们会看到这实际上就是 x 轴的坐标旋转。不要惊
讶,矩阵数学只是观察和组织各种公式和方程的不同方法。至此,要创建一个 y 轴旋转的
矩阵就非常容易了:
      cos  0  sin
       0   1   0
     -sin  0  cos
最后,z 轴的旋转为:
      cos sin  0
     -sin cos  0
       0   0   1
这是一个很好的尝试,用 x, y, z 的矩阵乘以每个旋转矩阵的单位,证明所得到的结果与第
十章的坐标旋转公式完全相同。
编写矩阵
      OK,现在大家已经有了足够的基础将这些知识转换为代码了。下面,我们对第十五章
的 RotateXY.as 进行重新转换。这个类中有 rotateX 和 rotateY 两个方法, 用以实现 3D 坐
标旋转。我们要让它们以矩阵的方式工作。
      从 rotateX 函数开始。它会用到小球的 x, y, z 坐标,将它们放入 1×3 矩阵,然后创
建一个给定角度的 x 旋转矩阵。这个矩阵将使用数组的形式表示。最后使用 matrixMultiply
函数让两个矩阵相乘,当然还需要创建这个函数!相乘后的矩阵还要用另一个数组进行保存,
因为我们需要将这些数值再存回小球的 x, y, z 坐标中。下面是新版的方法:
private function rotateX(ball:Ball3D, angleX:Number):void {
  var position:Array = [ball.xpos, ball.ypos, ball.zpos];
  var sin:Number = Math.sin(angleX);
  var cos:Number = Math.cos(angleX);
  var xRotMatrix:Array = new Array();
  xRotMatrix[0] = [1, 0, 0];
  xRotMatrix[1] = [0, cos, sin];
  xRotMatrix[2] = [0, -sin, cos];
  var result:Array = matrixMultiply(position, xRotMatrix);
  ball.xpos = result[0];
  ball.ypos = result[1];
  ball.zpos = result[2];
}
下面是矩阵乘法的函数:
private function matrixMultiply(matrixA:Array, matrixB:Array):Array {
  var result:Array = new Array();
  result[0] = matrixA[0] * matrixB[0][0] +
  matrixA[1] * matrixB[1][0] +
  matrixA[2] * matrixB[2][0];
  result[1] = matrixA[0] * matrixB[0][1] +
  matrixA[1] * matrixB[1][1] +
  matrixA[2] * matrixB[2][1];
  result[2] = matrixA[0] * matrixB[0][2] +
  matrixA[1] * matrixB[1][2] +
  matrixA[2] * matrixB[2][2];
  return result;
}
现在,  这个矩阵乘法的函数是手工写出的一个 1×3 和 3×3 矩阵的乘法,这就是我们后面
用在每个例子中的函数。大家也可以使用 for 循环创建出更为动态的可处理任何大小的矩
阵函数,但是现在我要让代码保持简洁。
      最后创建 rotateY 函数。如果你了解 rotateX 函数, 那么这个函数应该非常显而易见了。
只需要创建一个 y 旋转矩阵来代替 x 旋转矩阵即可。
private function rotateY(ball:Ball3D, angleY:Number):void {
  var position:Array = [ball.xpos, ball.ypos, ball.zpos];
  var sin:Number = Math.sin(angleY);
  var cos:Number = Math.cos(angleY);
  var yRotMatrix:Array = new Array();
  yRotMatrix[0] = [ cos, 0, sin];
  yRotMatrix[1] = [ 0, 1, 0];
  yRotMatrix[2] = [-sin, 0, cos];
  var result:Array = matrixMultiply(position, yRotMatrix);
  ball.xpos = result[0];
  ball.ypos = result[1];
  ball.zpos = result[2];
}
就是这样。大家也可以创建一个 rotateZ 函数,由于我们的例子中实际上不需要用到它,所
以我将它作为练习留给大家完成。
      现在,运行一下 RotateXY.as,与第十五章的版本相比,它们看上去实际是一样的。 AS
                                                                                在
2 中,我发现非矩阵版本的运行得更为流畅一些。原因是我们为 3D 旋转和缩放执行了非
常大量的数学运算。当我们使用矩阵数学进行计算时,会产生额外的计算。在进行矩阵乘法
时,我们实际是做了四次乘以零的操作,并将这四个结果与其它数值相加。这八次数学运算
实际上没有任何作用。将这些操作乘以 50 个对象,每帧旋转二次,每帧就多做了 800 次
额外计算!这两个版本在 AS 3 中的运行时看不出任何的不同,这就是 Flash CS3 与 AS 3
强大的证明。但是,当加入的物体越来越多时,我们就要为这些巨大的计算量付出代价。我
给大家的这些代码都非常基本的。你也许可以使它更加优化一些,让性能得到提升。
  即使在 3D 中不使用矩阵,我们仍可以发现它们在其它方面的用途,我将在下面一节进行
介绍。在 3D 中使用矩阵是一个很好的引子,因为这样可以让大家看到它们是如何与已知
公式相关联的。同样,矩阵在其它语言的 3D 制作中应用得非常之广泛,而且比我们现在
的 ActionScript 更为有效。在这些语言中,只需付出一点点 CPU 就可以得到矩阵所带来
的组织良好的代码。如果大家试图在 Flash 以外的其它软件中进行 3D 动画编程,那么就
一定要使用到矩阵。还是那句话,谁知道 Flash 播放器几年后会成为什么样?终会有一天,
所有的这些技术都能与 Flash 完美地结合。


Matrix 类
    刚刚提到,学习矩阵的一个很好的理由是它被用在许多 ActionScript 类的内核中。事
实上,我们有一个内置矩阵类。浏览一下 Flash 帮助文档中的 flash.geom.Matrix 类,就会
发现那里写得非常清楚详细。如果本章前面内容您都能理解,那么要掌握这些材料就一定没
问题。文档写得非常好,我就不再浪费空间将这些内容重复一遍了,但是我会给大家一个快
速的总结并举出两个例子。
    矩阵主要用于对显示对象的转换(旋转, 缩放和平移) 现在,任何一个显示对象(Sprite,

影片剪辑,文本类等)都有名为 transform (转换)的属性。这是 flash.geom.Transform 类的

一个实例,它还包含有另一个名为 matrix 的属性。如果我们创建一个 Matrix 类的实例,

并把它赋给显示对象的 transform.matrix 属性,那么它将会改变这个对象的形状、大小或位
置。我们马上会看到一些具体的例子。
基本来说 Matrix 类的矩阵是一个 3×3 的矩阵,形式如下:
    a  b tx
    c  d ty
    u  v w
其中 u, v, w 内部自动被设置为 0, 0, 1。而且它们是不可改变的,因此不需要管它们。(更
为具体的解释请参见帮助文档)我们使用下述语法来创建一个新的 Matrix:
    import flash.geom.Matrix;
    var myMatrix:Matrix = new Matrix(a, b, c, d, tx, ty);
那么这些字母是什么意思呢?tx 和 ty 非常简单。它们通过改变矩阵来控制显示对象的 x
和 y 轴。而 a, b, c, d 有些难度,因为它们都相互依赖。如果设置 b 和 c 为 0,就可以使
用 a 和 d,在 x 和 y 轴上缩放一个对象。如果设置 a 和 d 为 1,就可以使用 b 和 c,
分别在 y 和 x 轴上倾斜一个对象。   最后,可以用一种我们非常熟悉的方式来使用 a, b, c, d。
在本例中,设置如下:
     cos  sin  tx
    -sin  cos  ty
       u   v   w
当然, 我们可以看到这里包含了一个旋转矩阵,它确实可以旋转一个物体。自然本例中的 cos
和 sin 代表我们想要旋转的某个角度的正弦和余弦值(弧度制)让我们试验一下这个例子。
                                                             。
     这里可见 MatrixRotate.as,这个类中用红色正方形创建了一个简单影片。然后设置一个
enterFrame 处理函数,所有的动作都加在其中:

package {
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.geom.Matrix;
 public class MatrixRotate extends Sprite {
  private var angle:Number = 0;
  private var box:Sprite;
  public function MatrixRotate() {
    init();
  }
  private function init():void {
    box = new Sprite();
    box.graphics.beginFill(0xff0000);
      box.graphics.drawRect(-50, -50, 100, 100);
      box.graphics.endFill();
      addChild(box);
      addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
    private function onEnterFrame(event:Event):void {
      angle += .05;
      var cos:Number = Math.cos(angle);
      var sin:Number = Math.sin(angle);
      box.transform.matrix = new Matrix(cos, sin,
      -sin, cos,
      stage.stageWidth / 2,
      stage.stageHeight / 2);
    }
  }
}
这里有一个 angle 变量,每帧都会增加。代码求出了角度的正弦和余弦值并将它们赋给新
的矩阵对象,以这种方式指定 rotation。我同时还设置了平移,根据舞台的宽度和高度把影
片放置到中心。新的矩阵被赋给了影片的 transform.matrix 属性。测试该影片就得到了一个
旋转的正方形。
      现在,也许有人会问,你什么不改变影片的 rotation 属性。在一个简单的例子中使用
rotation 没有问题,这是一个更为简单的解决方法。但是,也许在一些处理多个角度、弧度、
正弦、余弦的例子中,相比将一切转换回角度制并改变 rotation 值而言,像这样的矩阵赋
值确实要简单很多。
      再给大家一些实际的说明,让我们试一下倾斜。倾斜(Skewing)意思是将物体在一个
轴上进行拉伸以便使一个部分走一条路, 另一个部分走另一条路。  斜体字就是一个倾斜的例
子。字母顶部的部分向右倾斜,而底部的部分向左倾斜。这是 Flash 中一个众所周知的一
个难点,但是使用 Matrix 类将会惊人地简单。如同我前面所说,设置矩阵的 a 和 d 为 1。
属性 b 是 y 轴倾斜的值,属性 c 控制 x 轴的倾斜值。让我们先来试一下 x 倾斜。在
SkewX.as 中,我几乎使用了与前一个例子完全相同的设置,只不过改变了 onEnterFrame 方
法中矩阵的创建。
private function onEnterFrame(event:Event):void {
  var skewX:Number = (mouseX - stage.stageWidth / 2) * .01;
  box.transform.matrix = new Matrix(1, 0,
  skewX, 1,
  stage.stageWidth / 2,
  stage.stageHeight / 2);
}

这里相对于鼠标的 x 坐标创建了一个 skewX 变量,以舞台的中心为偏移量。然后将它乘
以 .01 让倾斜的值处于可控范围,并将此值赋给矩阵。
     测试影片后,我们将看到如何让一个完整的影片进行倾斜,如图 18-2 所示。有了
Matrix 类一切都变得可能,如果你知道有谁在试图做这样的事,那么就把上述代码拿给他
们看,等着看他们开始流口水吧!如果您亲自测试了这段代码,那么肯定已经知道我的意思
了。

转 <wbr>第十八章 <wbr>矩阵数学 <wbr>(as3.0)

图 18-2 影片在 x 轴上的倾斜
在 SkewXY 中,我在 y 轴上做了同样的事情:
private function onEnterFrame(event:Event):void {
  var skewX:Number = (mouseX - stage.stageWidth / 2) * .01;
  var skewY:Number = (mouseY - stage.stageHeight / 2) * .01;
  box.transform.matrix = new Matrix(1, skewY,
  skewX, 1,
  stage.stageWidth / 2,
  stage.stageHeight / 2);
}
从图 18-3 中可以看到影片在两个轴上的倾斜


转 <wbr>第十八章 <wbr>矩阵数学 <wbr>(as3.0)

图 18-3 影片在两个轴上的倾斜
如此简单就能实现这样的效果的确让人惊喜。如果您不确定这种效果能用在哪里,那么我告
诉您,倾斜效果在伪 3D 效果中使用得非常频繁。当我们在上个例子中移动鼠标时,如果
这个图形正在倾斜并旋转,那么大家已经可以看到了它是如何显示出透视来的。这不是特别
精确的 3D,但是它可以用在一些非常棒的效果中。在网上有一些这方面的教程,告诉我们
如何使用倾斜实现这种伪 3D 效果。Matrix 的使用也许会将代码缩短一半。
     大家一定要为 Matrix 类查一查帮助文档,因为这里还有其它好多好东西。要知道上述
这 些 并 不 是 AS 3 唯 一 使 用 矩 阵 的 地 方 。 大 家 还 应 该 看 看 ColorMatrixFilter ,
这些不同的制图 API 填充和渐变的方法,以及 flash.geom.Transform 类。
ConvolutionFilter,
所以说矩阵的应用非常广泛!

 

PS:矩阵 flash.geom.Transform 类现在已经用的非常广泛了,这里虽然介绍的很简单,但是前面

分析的很透彻,相信刚接触的朋友也能很容易看懂的……

(如果要转载请注明出处http://blog.sina.com.cn/jooi,谢谢)

【企业管理】【管理科学】企业全岗位综合运营与组织知识矩阵体系01 岗位类别核心职责工作内容(详细)协作模式协商焦点博弈策略信任建立机制序列化工作流程关键绩效指标研发类​技术创新与产品开发1.需求分析:R=f(U,M,T) 2.概念设计:C=D(S,B) 3.原型开发 4.测试验证 5.文档编写敏捷团队、跨功能协作技术方案、资源分配、优先级纳什均衡:ui​(si​,s−i​)≥ui​(si′​,s−i​)代码审查、技术分享、结果透明瀑布模型/敏捷迭代1.专利数量P 2.技术就绪度TRL 3.缺陷密度D<0.1/KLOC其中:U=用户需求, 阅读详情

相关推荐

YOLOv8【第十八章:3D 目标检测与点云处理篇·第7节】多视图融合(Multi-View):前视+鸟瞰+侧视特征对齐!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 462

Matrix 图片按度数旋转 as3.0

//btnOK按钮事件,doorMC是元件加载的一个图片 //点击按钮图片旋转270度 import flash.geom.Matrix; btnOK.addEventListener(MouseEvent.CLICK,rotateEvent); function rotateEvent(e:Event):void {   var myMatrix:Matrix = doorMC.t

win的小屋 4126

YOLOv8【第十八章:3D 目标检测与点云处理篇·第9节】点云遮挡处理:引入 PointNet++ 辅助 YOLOv8

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 317

as3.0----Matrix的使用(旋转Sprite)

DisplayObject.transform.matrix对象的使用过程如下: (1)创建一个Matrix对象myMatrix。 (2)将目标显示对象的transform.matrix对象复制到myMatrix之中。 (3)通过Matrix类的各种方法对myMatrix进程操作。 (4)用myMatrix替换显示对象内部的transform.matrix。AS3的...

weixin_33713707的博客 386

YOLOv8【第十八章:3D 目标检测与点云处理篇·第3节】Mono3D 单目深度估计 + YOLOv8 融合实战!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 352

AS3.0 图片点击缩放、旋转移动

带例子,第三方类库,使用方便,能移动,缩放、旋转图片,可自定义样式

AS3 Matrix的一些总结

一直觉得ActionScript 3.0还有很多不知名的语法常在某个角落里,这些又偏偏是晋升“强力”的垫脚石。(因为没什么其他人知道,其他那些烂大街的功能几乎每一本书都有写,也就不值钱了) 今天介绍一下关于矩阵Matrix的一些基础知识吧···想到哪写到哪···也没什么组织···呵呵···就算给自己巩固一下了。 先说一下自己的理解,Matrix是flash.geom包里的,主要是做一些数学运算

Jave.Lin 的学习笔记 4447

简单的as3.0代码实现文字旋转

简单的as3.0代码实现文字旋转,成圆形旋转,并与鼠标有交互功能,非常常见的as效果。

as3.0的ColorMatrixFilter颜色矩阵滤镜详细介绍

颜色矩阵 在 flash中可以用矩阵方便的操作颜色。在flash8以前的版本,操作颜色的唯一途径就是通过修改颜色对象中红,绿,蓝三个通道的值,在 Flash8,"颜色矩阵滤镜" ColorMatrixFilter (flash.filters.ColorMatrixFilter) 在颗粒等级上提供给你更好的控制方法。"颜色矩阵滤镜"为 4行5列的多维矩阵(20个元素的数组)。图 4 是 与"颜色

Katichar 2265

BSL编程语言 —— 系统化程序设计

BSL编程语言简介 文章目录0. 选择编程语言1. 写简单的表达式(Expression) 0. 选择编程语言 如果你第一次使用DrRacket,打开后需要选择Beginning Student Language (BSL) Language -> Choose Language (或直接按Ctrl + L),看到如下洁面后选择Beginning Student,点击OK 定义区【De...

CSDoneRight的博客 6451

【人工智能】《Deep Dive into LLMs like ChatGPT 》—— Andrej Karpathy 第三阶段:强化学习(Reinforcement Learning, RL)

摘要:强化学习(RL)阶段通过让模型自主生成并验证答案,突破SFT阶段的模仿局限,使其在数学、代码等领域形成独特的推理路径。RL流程包括批量生成解答、自动批改筛选正确路径,并采用PPO/GRPO算法优化模型。模型会自发涌现自我检查、回滚等策略,显著提升正确率(如AIME竞赛准确率从15%升至56%)。与SFT模型相比,RL模型具备主动链式思维、验算能力,响应时间更长但效果更优,形成真正的“思考模型”。三阶段对比显示,RL通过可验证题的对错奖励机制,赋予模型超越人类范式的推理能力。

奶爸的编程之路,也就一周冷个三天 150

转 第四章 渲染技术(2)(as3.0)

使用 beingGradientFill 创建渐变填充     下面开始学习绘图 API 的强大函数:beginGradientFill(fillType, colors, alpha, ratios, matrix)。与线条样式相同,这个方法也有很多额外的可选参数——扩散方

roadProgram的专栏 1974

本地部署大模型:dgx-spark-ai项目硬件选型、部署与私有化AI构建指南

大语言模型(LLM)的本地部署是当前AI工程实践中的重要方向,其核心原理在于将模型权重与计算过程完全置于用户可控的硬件环境中。这项技术的核心价值在于实现了数据主权与隐私安全,避免了云端服务的延迟、持续订阅成本及数据外泄风险。从技术实现看,本地部署的关键在于硬件选型与软件环境适配,尤其是NVIDIA GPU的CUDA生态、显存容量与内存带宽的匹配。在应用场景上,本地化部署特别适合对数据敏感性要求高的领域,如企业内部代码助手、金融分析或医疗研究,能够支持私有化模型微调与定制化工作流构建。本文以dgx-spark

weixin_42531579的博客 506

龍魂系统隐私接入规则 v2.0 · 算法数学增强版

摘要: 《龍魂系统隐私接入规则v2.0》是最高级别(P0++)的永久性隐私保护框架,由诸葛鑫(UID9622)创建。该版本在v1.0基础上进行了重大升级,修复了8类结构性缺失和6处逻辑漏洞,新增了数学算法模型和用户权利保障机制。核心内容包括:五级数据分类(L0-L4)、四大天条原则(隐私不可传、本地优先、国家主权、数据最小化)、以及基于数学公式的自动化判定体系。特别强化了未成年人数据保护(自动归类为最高级L4)和跨境数据传输管控。所有规则采用不可篡改的DNA追溯码技术,通过三色审计(安全/审查/阻断)实现全

UID9622的博客 518

Allegro快速编辑丝印文字操作指导

选择setup-Application Mode-placement edit。Allegro支持丝印文字的编辑,下面介绍快速编辑丝印文字的两种方法如下。这个功能还支持拷贝粘贴,可以从其它地方拷贝过来,免去了书写的麻烦。出现text edit窗口,输入自己需要的文字,点击ok。鼠标移动到丝印文字位置,文字会被高亮起来。Allegro快速编辑丝印文字操作指导。点击丝印文字,丝印会被高亮起来。选择Text edit 命令。输入需要更改后的文字,如下。右击选择text edit。以编辑下方丝印文字为例。

weixin_54787054的博客 4193

基于BERTopic模型的英文20新闻数据集主题聚类及可视化

BERTopic是基于深度学习的一种主题建模方法。BERT是一种用于NLP的预训练策略,它成功地利用了句子的深层语义信息。

Cachel Wood的博客 1461

《数学之美》学习笔记

学习材料:数学之美 学习计划:每天1~2章 学习时长:7.20左右【超时,预计8月初完成】 第一章 文字和语言vs 数字和信息 香农:信息论之父 非洲是人类文明的摇篮 汉字大约有十万个,常用的七千个 信息的载体不仅可以是文字,也可以是数字(0和1) 信息冗余,虽然麻烦但是信息会更安全。比如有多个语言的书 十进制的原因是人类有十根手指 古印度人创造了阿拉伯数字,而不是阿拉伯人 ...

Haipai1998的博客 545

大数据领域存算分离:教育行业的数据应用探索

在当今数字化时代,教育行业积累了海量的数据,如学生的学习记录、考试成绩、在线学习行为等。如何高效地存储、管理和分析这些数据,以挖掘其潜在价值,为教育决策、教学改进和学生个性化发展提供支持,成为教育行业面临的重要挑战。大数据领域的存算分离技术为解决这一问题提供了新的思路和方法。本文旨在探索存算分离技术在教育行业的数据应用,分析其原理、优势和实际应用场景,为教育行业的数据管理和分析提供参考。本文共分为十个部分。第一部分介绍背景,包括目的和范围、预期读者、文档结构概述和术语表;

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 815

第十八章 Unity 5更新了什么

文章目录1.场景更亮了2.表面着色器更容易“报错了”3.当家做主:自己控制非统一缩放的网格4.固定管线着色器逐渐退出历史舞台 Unity 5相比较与之前的版本来说,在Shader方面做了许多重要的更新。一些更新很容易被大家察觉,例如,如果读者直接把在Unity 4中使用的一些Shader源代码粘贴到Unity 5中,往往会发现和Unity 4中得到的渲染结果不尽相同,甚至还会报错。本章会对Unit...

御坂御坂001的博客 378

【Unity实战篇】| 游戏轮播图效果,多种实现思路及完整教程

在众多游戏的主界面、商城、图鉴或关卡选择界面中,我们常常能看到轮播图的身影。 它以动态、直观的方式展示游戏角色、皮肤、成就或场景,不仅极大地提升了界面的美观度和交互性,还能高效地引导玩家聚焦于核心内容。 本篇文章将从零开始,一步步在Unity中构建一个功能完备、性能优良的游戏轮播图。 使用UGUI系统,通过代码驱动,实现包括自动轮播、手动拖拽、分页指示器、无限循环等核心功能。 无论是UI新手还是希望优化现有方案的开发者,这篇文章都将为你提供清晰的思路和完整的解决方案。

努力前行,总会成为自己心中的那道光 4万+

撸毛笔记-电信营业厅 v5.03

电信营业厅 v5.03签到和完成部分金豆任务, 喂宠物7天,15天,28天连签抽奖, 宠物等级权益兑换自己设置电信的服务密码, 把 手机号#服务密码 填到变量里:每天运行一两次const $ = new Env("电信营业厅");

xiaoshun007的专栏 4500

学好数学的底层逻辑 | 学习心法、数学家思维与怀尔斯的研究启示

……

u013669912的博客 2269

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

第十八章:语音识别:深度学习与端到端方法

1.背景介绍 1. 背景介绍 语音识别,也被称为语音转文本(Speech-to-Text),是一种将人类语音信号转换为文本的技术。它在日常生活、办公自动化、语音助手等方面发挥着重要作用。随着深度学习技术的发展,语音识别技术的性能得到了显著提升。本章将介绍深度学习在语音识别领域的应用,以及端到端方法的实现。 2. 核心概念与联系 2.1 语音识别的主要技术 隐马尔科夫模型(HMM):一种...

AI天才研究院 1206

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

第十八章:PyTorch的图神经网络和图深度学习

1.背景介绍 图神经网络(Graph Neural Networks,GNNs)和图深度学习(Graph Deep Learning)是一种新兴的人工智能技术,它们旨在处理和分析结构化数据。这些数据通常以图的形式表示,例如社交网络、知识图谱、物理系统等。在本章中,我们将深入探讨PyTorch的图神经网络和图深度学习,涵盖背景、核心概念、算法原理、最佳实践、应用场景、工具和资源推荐以及未来发展趋势...

AI天才研究院 369

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

高等数学需要记住的一些点

正定五种情况是,A正定然后其余都正定 特征向量也是五种情况,使用和A一样的线性变换,除了一个P逆AP的除外。

Caesar2334的博客 1339

Making Things Move! 中文版

 Making Things Move! 中文版 今已全部杀青今天是我最后一次发部关于这本书的中文版(非官方“邮电”译版)的消息了,因为我已经将它全部译完了。    历经四个月的时间,今天终于把 Foundation Actionscript 3.0 Animation —— Making Things Move! 一书全部译完。非常感谢本书作者 Keith Peters 带给我们这么好的

xyzvalue的专栏 1296
上一篇: 转 第十七章 背面剔除与flash 3D 灯光 (as3.0)
下一篇: 转 第十九章 flash实用技巧 (1)(as3.0)
coding_most
博客等级 码龄15年 13粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值