zoukankan      html  css  js  c++  java
  • Flash向量3加法和投影

    基础。处理多个向量。

    1个单独的向量,在很多的时候,让你觉得已经足够的智能和强大,去应付这个世界上的各种问题。然而事实上,你很少只需要1个向量,通常,你需要使用2个,3个甚至更多的向量。所以管理多个向量是非常重要的,否则它们会脱离你的控制,要知道和一个失控的向量战斗不是一件好玩的事情。

    首先,多数情况下,有多个向量影响物体。一个例子就是重力:当物体本身在移动(用一个向量表示),而重力会把物体往下拉。重力和其他的力一样,可以用一个向量来表示。此时就有2个向量,你需要找到2个向量的综合效果,以确定物体到底该怎么移动。为了将2个向量加起来,你需要把他们的分量加起来:

    1.resultv={};

    2.resultv.vx=v1.vx+v2.vx;

    3.resultv.vy=v1.vy+v2.vy;

    如果你有更多的向量,你可以用同样的办法,把它们都加起来。

    向量的投影。

    有时候我们非常需要知道2个向量的方向关系,他们到底是把我们的物体往同一个方向牵引,还是一东一西呢。

    1.dp = v1.vx*v2.vx + v1.vy*v2.vy;

    我们将2个向量的x分量相乘,y分量相乘,然后在相加。得到结果dp,称为“向量v1和向量v2的点乘”。dp并不是一个向量,而是一个数字,如果是正数,那么2个向量的方向是相同的(夹角小于90度),如果是负数,那么2个向量的方向是相反的(夹角大于90度)。

    下面说下2个向量的投影问题。将向量在其他任意的坐标系(向量v2和它的法线构成了一个坐标系)里面进行转换是非常有用的,这样投影的分量就可以单独变化。计算v1在v2上的投影的办法是:

    1.proj.vx=dp*v2.dx;

    2.proj.vy=dp*v2.dy;

    向量的投影也是一个向量。我们先计算出2个向量的点乘,再乘以向量v2的归一化向量,就得到了投影。

    以下是我制作的一个关于投影向量的例子。你可以四处拖动那些点,以观察投影分量的变化:

    黑线是向量v1,蓝线是向量v2以及它的法线,绿线和红线分别是v1在v2和v2的法线上的投影。你可以下载fla源文件

  • 相关阅读:
    BlockingQueue(阻塞队列)详解
    支付宝系统架构(内部架构图)
    微博的消息队列
    JVM源码分析之堆外内存完全解读
    滑动冲突的补充——Event的流程走向
    BaseFragment的定义—所有Fragment的父类
    BaseActivity的定义——作为所有Activity类的父类
    BGARefreshLayout-Android-master的简单使用
    分析BGARefreshLayout-master
    简便数据库——ORMLite框架
  • 原文地址:https://www.cnblogs.com/happysky97/p/1882107.html
Copyright © 2011-2022 走看看