zoukankan      html  css  js  c++  java
  • Flash向量2长度和法线

    基础。向量有什么?

    对于每个向量来说,它已经拥有2个点和x,y方向分量,这似乎足以让它感到满足和快乐,但是,它还有更多有用的属性哦。每个向量都有长度,长度其实是向量的起点与终点之间的距离。因为我们已经知道向量的x,y方向的分量,我们可以很容易的计算出它的长度:

    view source

    print?

    1.v.len=Math.sqrt(v.vx*v.vx+v.vy*v.vy);

    这其实就是勾股定理【中国称为勾股定理,于公元前1000年发现。国外称为毕达哥拉斯定理,于公元前500年发现。】x分量的平方,加y分量的平方,再取平方根。

    使用向量的一个好处是,你不需要使用角度或者sin等复杂的三角函数。但是,我知道很多人是喜欢角度的,我们需要能将向量转化成 角度/长度 的形式。幸运的是,这个操作还不是很麻烦:
    (是的,到目前为止,所有的东西还不是很麻烦)

    view source

    print?

    1.angle=Math.atan2(v.vy, v.vx)

    你可能知道,flash比较喜欢用弧度来衡量角的大小,所以如果你想让影片剪辑总是朝着运动矢量的方向前进,您需要将弧度(radians )转换成度(degrees)。

    view source

    print?

    1.angledeg=angle*180/Math.PI;

    有时候,你知道角度和长度,要通过这些来计算向量,你可能不知道怎么办。不用担心,你很快就可以学会,它实际上不是非常的复杂(注意:这次我没有用“简单”这个词):

    view source

    print?

    1.v.vx=v.len*Math.cos(angle);

    2.v.vy=v.len*Math.sin(angle);

    基础。什么是向量的归一化。
    【注:原作者虽然用英文写作,但把normal这个单词,理解为“正常”,这是应该是不对的,在数学中,称为“归一化”。】
    每个向量都可以被归一化,长度为1的向量,称为归一化向量。

    view source

    print?

    1.v.dx=v.vx/v.len;

    2.v.dy=v.vy/v.len;

    将x,y分量除以向量的长度,我们得到了单位向量。和普通的向量一样,归一化的向量也可以分解为x和y方向的分量。单位向量的长度为1,这一点你可以测试一下。真的,你可以用勾股定理来计算dx,dy对应的向量长度。如果你懒于测试,而直接相信我说的,那当然更好。归一化的向量只告诉了我们方向信息,而不包含距离信息。就好比当你跟人家说:“地铁站往这走”,这句话包含了方向信息,但是没有包含有多远的信息。

    做除法的时候一定要小心,不要除以0。向量的长度可以为0,而且为0的时候仍然是一个向量,但是没有办法归一化,所以向量做归一化操作时,一定要检查向量的长度是否为0。在flash中,除以0,返回的将是“Infinity”。

    向量有“法线”。法线是指与向量垂直的向量。如果你还记得角度的话,那么法线就是将向量旋转90度。因为向量是有方向的,所以法线就会有2条,分别称为左法线和右法线。假如你起身站起来(我知道其实你现在正坐着在阅读文章,你可能想坐下来,但偶尔站起来一下有利于身体健康),你面向的方向有一个向量。然后,你向2边展开双手,此时你的左右手就好比左右法线。

    右法线和左法线这样计算:

    view source

    print?

    1.v.rx = -v.vy;

    2.v.ry = v.vx;

    3.v.lx = v.vy;

    4.v.ly = -v.vx;

    最后,我制作了一个小的flash,你可以到处拖动那个点,然后观察向量的变化。

    黑色是向量,蓝色是单位向量,绿色是右法线,红色是左法线。你可以下载fla源文件

  • 相关阅读:
    WCF 第四章 绑定 在多个绑定上暴露一个服务契约
    WCF 第五章 行为 事务跨操作事务流
    WCF 第五章 导出并发布元数据(服务行为)
    WCF 第五章 行为 通过配置文件暴露一个服务行为
    WCF 第五章 不支持会话的绑定的默认并发和实例
    WCF 第五章 并发和实例(服务行为)
    WCF 第五章 行为 总结
    WCF 第四章 绑定 绑定元素
    WCF 第五章 行为 事务之选择一个事务协议OleTx 或者WSAT
    WCF 第四章 绑定 比较各种绑定的性能和可扩展性
  • 原文地址:https://www.cnblogs.com/happysky97/p/1882105.html
Copyright © 2011-2022 走看看