2维向量如何计算与某一个交点之间的夹角,假设A,B是向量,C是他们共同连接的一个点计算出A-C-B形成的角度

 

我们先了解几个简单的计算:

2D向量的乘积计算 (A.x * B.x + A.y * B.y)  
2D向量的取摸 开平方(A.x * A.x + A.y * A.y)  
弧度转换角度 弧度 除以 圆周率 再乘以180  
角度转换弧度 角度 乘以 圆周率 后再除以180  
补角 计算方式1:  补角 = 180 - 正角.
计算方式1:  两个向量方向一正一反就可以计算出补角
 

如果你理解了以上公式,那么来看看如何计算夹角的公式,两向量夹角余弦等于向量数量积除以两向量模的乘积

公式1: cos角度=(ac+bd)/( 根号(a*a+b*b) ) * ( 根号(c*c+d*d))

推导1: 弧度= 反cos((ac+bd)/(根号a*a+b*b) * (根号(c*c+d*d)))

推导2: 角度= 反cos((ac+bd)/(根号a*a+b*b) * (根号(c*c+d*d))) / 圆周率 * 180;

 

公式代码实现:

public void JiSun()
{
hudu = Math.Acos(
(ac.x * cb.x
+ ac.y * cb.y)
/ (Mathf.Sqrt(ac.x * ac.x + ac.y * ac.y)
* Mathf.Sqrt(cb.x * cb.x + cb.y * cb.y))); //弧度转换角度
jiajiao = hudu / Math.PI * 180;
补角.text = jiajiao + "度";
}

 

项目源码:http://yunpan.cn/cdrmEcDjfSDMD  访问密码 d262

效果图:

 

工程代码:

using UnityEngine;
using System.Collections;
using UnityEditor;
using System; public class Test : MonoBehaviour { public Transform a;
public Transform b;
public Transform c;
public TextMesh 正角;
public TextMesh 补角; // Update is called once per frame
void Update () { Vector3 ac = a.position - c.position;
Vector3 bc = b.position - c.position;
Vector3 cb = c.position - b.position; /*
* cos<A,B>=(ac+bd)/(根号a*a+b*b)(根号c*c+d*d)
* 两向量夹角余弦等于向量数量积除以两向量模的乘积
*/
double hudu = Math.Acos(
(ac.x * bc.x
+ ac.y * bc.y)
/ (Mathf.Sqrt(ac.x * ac.x + ac.y * ac.y)
* Mathf.Sqrt(bc.x * bc.x + bc.y * bc.y)));
//弧度转换角度
double jiajiao = hudu / Math.PI * 180; 正角.text = jiajiao + "度";
//补角.text = (180 - jiajiao) + "度"; hudu = Math.Acos(
(ac.x * cb.x
+ ac.y * cb.y)
/ (Mathf.Sqrt(ac.x * ac.x + ac.y * ac.y)
* Mathf.Sqrt(cb.x * cb.x + cb.y * cb.y))); //弧度转换角度
jiajiao = hudu / Math.PI * 180;
补角.text = jiajiao + "度"; } //绘制线段
public void OnDrawGizmos()
{
Gizmos.DrawLine(a.position, b.position);
Gizmos.DrawLine(a.position, c.position);
Gizmos.DrawLine(b.position, c.position);
} //以原点计算两个坐标的夹角
public void OriginAngle()
{
double hudu = Math.Acos(
(a.position.x * b.position.x
+ a.position.y * b.position.y)
/ (Mathf.Sqrt(a.position.x * a.position.x + a.position.y * a.position.y)
* Mathf.Sqrt(b.position.x * b.position.x + b.position.y * b.position.y))); double jiajiao = hudu / Math.PI * 180;
正角.text = jiajiao + "度";
} }

2个2D向量计算交点的夹角和补角的更多相关文章

  1. Everything Has Changed(HDU6354+圆交+求周长)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6354 题目: 题意:用一堆圆来切割一个圆心为原点,半径为R的圆A,问切割完毕后圆A外围剩余部分的周长( ...

  2. hdu6354 Everything Has Changed (圆的相交弧长)

    题目传送门 题意: 用一堆圆来切割一个圆心为原点,半径为R的圆A,问切割完毕后圆A外围剩余部分的周长(图中的红线部分). 思路: 首先判定圆与圆A的关系,这题我们只需要与A内切.相交的圆. 然后就是求 ...

  3. 2D空间中求线段与圆的交点

    出处: https://answers.unity.com/questions/366802/get-intersection-of-a-line-and-a-circle.html 测试脚本(返回值 ...

  4. 2D空间中求两圆的交点

    出处:https://stackoverflow.com/questions/19916880/sphere-sphere-intersection-c-3d-coordinates-of-colli ...

  5. Morley's Theorem (计算几何基础+向量点积、叉积、旋转、夹角等+两直线的交点)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  6. 【Unity Shaders】Diffuse Shading——使用2D ramp texture来创建一个假的BRDF(双向反射分布函数)

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  7. 2d 点云匹配算法

    #include "dbtype.h" #include "dbkdtree.h" #include <pcl/point_cloud.h> #in ...

  8. UVA-12304 2D Geometry 110 in 1! (有关圆的基本操作)

    UVA-12304 2D Geometry 110 in 1! 该问题包含以下几个子问题 CircumscribedCircle x1 y1 x2 y2 x3 y3 : 三角形外接圆 Inscribe ...

  9. CSS 3学习——transform 2D转换

    首先声明一点,transform属性不为none的元素是它的定位子元素(绝对定位和固定定位)的包含块,而且对内创建一个新的层叠上下文. 注意:可以通过 transform-box 属性指定元素的那个盒 ...

随机推荐

  1. 解决&nbsp在IE与firefox宽度不一致的问题

    浏览器默认不同的字体问题,字体分为“等宽”和“不等宽”字体,所以&nbsp在IE与firefox内间距是不等的.   解决办法:   body{font-family: 宋体, simsun; ...

  2. java动态代理和cglib动态代理

    动态代理应用广泛,Spring,Struts等框架很多功能是通过动态代理,或者进一步封装来实现的. 常见的动态代理模式实现有Java API提供的动态代理和第三方开源类库CGLIB动态代理. Java ...

  3. Windows7 32位机上,OpenCV中配置GPU操作步骤

    1.  查看本机配置,查看显卡类型是否支持NVIDIA GPU: 2.  从http://www.nvidia.cn/Download/index.aspx?lang=cn下载最新驱动并安装: 3.  ...

  4. H264编码技术

    H.264的目标应用涵盖了眼下大部分的视频服务,如有线电视远程监控.交互媒体.数字电视.视频会议.视频点播.流媒体服务等.H.264为解决不同应用中的网络传输的差异.定义了两层:视频编码层(VCL:V ...

  5. Android ActionBar应用实战,高仿微信主界面的设计

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ...

  6. Hexo博客搭建图文教程

    准备 你需要准备好以下软件: Node.js环境 Git Windows 配置Node.js环境 下载Node.js安装文件: Windows Installer 32-bit Windows Ins ...

  7. 利用JS实现简单的瀑布流效果

    哈哈, 我又来啦, 在这一段时间里, 我简单的学习了一下javascript(JS), 虽然不是很懂啦, 但是我也简单的尝试着做了点小东西, 就比如现在流行的瀑布流效果, 经过我的努力终于成功的完成了 ...

  8. C#基础:关键字和数据类型

    [关键字]  #region 和 #endregion 关键字可以折叠代码  checked 用于整型算术运算时控制当前环境中的溢出检查  unchecked 操作符用于整型算术运算时控制当前环境中的 ...

  9. js 闭包和回调

    原文:http://www.cnblogs.com/yuyuj/p/4525530.html 之前的工作都是基于老大搭建的框架,仿照他写的例子写的请求,很多东东也都做好了封装,只需要了解下直接调用就好 ...

  10. Docker的简单认知

    Docker images: docker image是一个只读打模板,用来创建Docker 容器 Docker Registers 互联网上存储images的地方 Docker containers ...