2个2D向量计算交点的夹角和补角
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向量计算交点的夹角和补角的更多相关文章
- Everything Has Changed(HDU6354+圆交+求周长)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6354 题目: 题意:用一堆圆来切割一个圆心为原点,半径为R的圆A,问切割完毕后圆A外围剩余部分的周长( ...
- hdu6354 Everything Has Changed (圆的相交弧长)
题目传送门 题意: 用一堆圆来切割一个圆心为原点,半径为R的圆A,问切割完毕后圆A外围剩余部分的周长(图中的红线部分). 思路: 首先判定圆与圆A的关系,这题我们只需要与A内切.相交的圆. 然后就是求 ...
- 2D空间中求线段与圆的交点
出处: https://answers.unity.com/questions/366802/get-intersection-of-a-line-and-a-circle.html 测试脚本(返回值 ...
- 2D空间中求两圆的交点
出处:https://stackoverflow.com/questions/19916880/sphere-sphere-intersection-c-3d-coordinates-of-colli ...
- Morley's Theorem (计算几何基础+向量点积、叉积、旋转、夹角等+两直线的交点)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- 【Unity Shaders】Diffuse Shading——使用2D ramp texture来创建一个假的BRDF(双向反射分布函数)
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- 2d 点云匹配算法
#include "dbtype.h" #include "dbkdtree.h" #include <pcl/point_cloud.h> #in ...
- UVA-12304 2D Geometry 110 in 1! (有关圆的基本操作)
UVA-12304 2D Geometry 110 in 1! 该问题包含以下几个子问题 CircumscribedCircle x1 y1 x2 y2 x3 y3 : 三角形外接圆 Inscribe ...
- CSS 3学习——transform 2D转换
首先声明一点,transform属性不为none的元素是它的定位子元素(绝对定位和固定定位)的包含块,而且对内创建一个新的层叠上下文. 注意:可以通过 transform-box 属性指定元素的那个盒 ...
随机推荐
- StroyBoard中UICollectionView中添加Header和footer
到Storyboard中,选择collection view controller中的"Collection View".在Attributes inspector中,选择&quo ...
- web前端代码规范 - HTML代码规范
Bootstrap HTML编码规范 本文转载自w3cschool. 由于bootstrap得到了世界的认可,因此,此规范用于规范html代码有一定的说服力. 交流qq群:164858883.欢迎各位 ...
- 【百度之星2014~初赛(第二轮)解题报告】Chess
声明 笔者近期意外的发现 笔者的个人站点http://tiankonguse.com/ 的非常多文章被其他站点转载.可是转载时未声明文章来源或參考自 http://tiankonguse.com/ 站 ...
- hadoop集群监控工具ambari安装
Apache Ambari是对Hadoop进行监控.管理和生命周期管理的基于网页的开源项目.它也是一个为Hortonworks数据平台选择管理组建的项目.Ambari支持管理的服务有: Apache ...
- with admin option 与with grant option
在赋予user 权限或者role 时,常常会用到with admin option 和with grant option,而在使用中,可能会很容易出现混淆的情况,现把他们的相同点和不同点总结如下:相同 ...
- js数字精度丢失
http://www.cnblogs.com/snandy/p/4943138.html
- (转)Windows Server 2008 默认"照片库查看器" 无法打开图片, 只能用画图程序打开
1.解决[启用Win2008照片查看器] Win2008 中放了一些图片,本来以为可以象Win7那样直接用“照片查看器”打开,可是Win2008默认竟然是用“画图”打开的,非常不方便. 再仔细一看,“ ...
- (原)10-folder交叉验证
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6069731.html 参考网址: https://github.com/cmusatyalab/ope ...
- Jquery各版本下载,附Jquery官网下载方法
jQuery version 2.1.1 http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.js http://ajax.aspnetcdn.com ...
- Python 学习日记(第三周)
知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...