zoukankan      html  css  js  c++  java
  • 2d平面向量计算

    PlaneVector.hpp

    #ifndef PlaneVector_h__
    #define PlaneVector_h__
    
    template<typename coordinate_type>
    struct PlaneVector
    {
    	coordinate_type x;
    	coordinate_type y;
    };
    
    template<typename coordinate_type>
    std::ostream& operator<<(std::ostream& out, const PlaneVector<coordinate_type>& pt) {
    	out << '(' << pt.x << ',' << pt.y << ')';
    	return out;
    }
    
    /*!
    	向量加法
    	首尾相连,连接首尾,指向终点
    */
    template<typename coordinate_type>
    PlaneVector<coordinate_type> add(const PlaneVector<coordinate_type>& p1, const PlaneVector<coordinate_type>& p2)
    {
    	return (p1.x + p2.x, p1.y + p2.y);
    }
    
    /*!
    	向量减法
    	同起点,指被减(减向量终点指向被减向量终点)
    */
    template<typename coordinate_type>
    PlaneVector<coordinate_type> sub(const PlaneVector<coordinate_type>& p1, const PlaneVector<coordinate_type>& p2)
    {
    	return (p1.x - p2.x, p1.y - p2.y);
    }
    
    /*!
    	点乘
    	a * b = |a||b|cosθ
    	a·b>0    方向基本相同,向量夹角为锐角
    	a·b=0    正交,相互垂直
    	a·b<0    方向基本相反,向量夹角为钝角
    */
    template<typename coordinate_type>
    coordinate_type dotProduct(const PlaneVector<coordinate_type>& p1, const PlaneVector<coordinate_type>& p2)
    {
    	return p1.x * p2.x + p1.y * p2.y;
    }
    
    /*!
    	叉乘
    	a ^ b = |a||b|sinθ
    	共起点向量 a 和 向量 b 所构成平行四边形的面积
    */
    template<typename coordinate_type>
    PlaneVector<coordinate_type> crossProduct(const PlaneVector<coordinate_type>& p1, const PlaneVector<coordinate_type>& p2)
    {
    	return (p1.y * 0 - 0 * p2.y, 0 * p2.x - p1.x * 0);
    }
    
    #endif // PlaneVector_h__
    
    
    转载请注明出处并保持作品的完整性,谢谢
  • 相关阅读:
    关于浏览器cookie的详解
    浏览器渲染帧
    Vue3中关于diff的优化
    JS报错 Cannot set property 'display' of undefined问题
    vue选项卡 ,循环数据点击改变class,并初始循环中的第一个为选中状态class
    Nuxt中引入elementUI
    jq 获取节点 改变元素class的显示、隐藏
    vue监听滚动条
    Nuxt中引入iconfont图标
    vue导航点击切换 2.0
  • 原文地址:https://www.cnblogs.com/cheungxiongwei/p/14478689.html
Copyright © 2011-2022 走看看