2D向量,求某个向量或是某个点相对另一个向量来说是左边、还是右边
/** author: jave.lin, date: 2017-12-05 */
###已知点A(ax,ay),B(bx,by),C(cx,cy),C’(cpx,cpy)
V(A指向B)=简写V(AB)
V(A->B) = B-A=(bx-ax,by-ay)
V(A->C) = C-A=(cx-ax,cy-ay)
V(A->C’) = C’-A=(cpx-ax,cpy-ay)
###使用向量叉乘
如有向量P(px,py),Q(qx,qy)
PxQ=px * qy - py * qx (具体大家去百度:2D向量叉乘,可看看那另一篇BLOG有讲解2D的,3D的3D向量叉乘的理解和记忆)
结果是个标量,叉乘标量结果有个特性:
PxQ<0说明P在Q的逆时针方位
PxQ>0说明P在Q的顺时针方位
PxQ=0说明P、Q共线(同向、反向)
// 伪代码
float value = V(A->B) x V(A->C);
if ( value < 0 )printf("向量V(A->B在向量V(A->C)的左边");
else if ( value > 0 )printf("向量V(A->B在向量V(A->C)的右边");
elseprintf("向量V(A->B、向量V(A->C)共线");
// 同理以下 V(A->B) x V(A->C')可与同上求法处理
value = V(A->B) x V(A->C')
// 判断value结果即可
###as3 程序演示:
package {import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.utils.getTimer;[SWF(width=800, height=600)]
public class Main extends Sprite {public function Main(){stage.frameRate = 60;stage.align = StageAlign.TOP_LEFT;stage.scaleMode = StageScaleMode.NO_SCALE;stage.color = 0x888888;_m_pTF = new TextField();var f : TextFormat = _m_pTF.defaultTextFormat;f.size = 20;f.color = 0xffffff;_m_pTF.defaultTextFormat = f;_m_pTF.setTextFormat( f );_m_pTF.autoSize = TextFieldAutoSize.LEFT;addChild(_m_pTF);_m_pTip = new TextField();var f : TextFormat = _m_pTip.defaultTextFormat;f.size = 20;f.color = 0xffffff;_m_pTip.defaultTextFormat = f;_m_pTip.setTextFormat( f );_m_pTip.autoSize = TextFieldAutoSize.LEFT;addChild(_m_pTip);stage.addEventListener( Event.ENTER_FRAME, _onEnterFrame );}private function _onEnterFrame(e : Event ) : void{var nt : int = getTimer();var iet : int = nt - _m_iLT;var fet : Number = iet * 1000;_updateI( iet );_updateF( fet );_m_iLT = nt;}private function _updateI( iDeltaTime : int ) : void{_m_iFPST += iDeltaTime;++_m_iFPS;if ( _m_iFPST >= _m_iFPSInterval ){_m_iFPST -= _m_iFPSInterval;_pushMsg( "FPS:" + _m_iFPS );_m_pTF.text = _m_aMsg.join( "\n" );_m_aMsg.length = 0;_m_iFPS = 0;}}private function _updateF( fDeltaTime : Number ) : void{var sw : Number = stage.stageWidth;var sh : Number = stage.stageHeight;var sx : Number = stage.mouseX;var sy : Number = stage.mouseY;var vx1 : Number, vy1 : Number;var vx2 : Number, vy2 : Number;graphics.clear();graphics.lineStyle( 2, 0x00ff00, 0.5 );graphics.moveTo( sw * 0.5, sh * 0.8 );graphics.lineTo( sw * 0.5, sh * 0.2 );graphics.lineStyle( 2, 0xffff00, 0.5 );graphics.moveTo( sw * 0.5, sh * 0.8 );graphics.lineTo( sx, sy );vx1 = 0; vy1 = sh * 0.2 - sh * 0.8;vx2 = sx - sw * 0.5; vy2 = sy - sh * 0.8;var v : Number = vx1 * vy2 - vy1 * vx2;if ( v > 0 ){_m_pTip.text = "right";}else if ( v < 0 ){_m_pTip.text = "left";}else{_m_pTip.text = "same line";}_m_pTip.x = ( sw - _m_pTip.width ) * 0.5;_m_pTip.y = ( sh - _m_pTip.height ) * 0.3;}private function _pushMsg( msg : String ) : void{_m_aMsg.push( msg );}private var _m_iFPS : int;private var _m_iFPST : int = 0;private var _m_iFPSInterval : int = 1000;private var _m_iLT : int;private var _m_aMsg : Array = [];private var _m_pTF : TextField;private var _m_pTip : TextField;
}
}
###运行效果:
2D向量,求某个向量或是某个点相对另一个向量来说是左边、还是右边相关推荐
- 矩阵向量求导 (转载与整理)
矩阵向量求导 (转载与整理) 矩阵向量求导 (转载与整理) 1.[刘建平Pinard老师](https://www.cnblogs.com/pinard/)的博客文章(机器学习中的矩阵向量求导) 2. ...
- 向量转置的怎么求导_机器学习中的向量求导和矩阵求导
在机器学习的各种关于向量或者矩阵的求导中,经常会出现各种需要转置或者不需要转置的地方,经常会看得人晕头转向.今天我对机器学习中关于这部分的常识性处理方法进行整理并记录下来方便大家参考. 一些约定 首先 ...
- 矩阵向量求导-刘建平Pinard|笔记
矩阵向量求导-刘建平Pinard|笔记 矩阵向量求导(刘建平Pinard) 笔记 原文链接声明 一.求导定义与求导布局 原文图片 个人笔记 二.矩阵向量求导之定义法 原文图片 个人笔记 三.矩阵向量求 ...
- 两个向量的点乘和叉乘怎么算_向量的点乘和叉乘
向量的点乘和叉乘2019-12-09 15:46:24文/董月 点乘,也叫数量积.结果是一个向量在另一个向量方向上投影的长度,是一个标量.叉乘,也叫向量积.结果是一个和已有两个向量都垂直的向量. 点乘 ...
- 两个向量的点乘和叉乘怎么算_向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读...
向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组: 向量的点乘,也叫向量的内积.数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是 ...
- 数学基础:向量求导整理
0矩阵求导网站(不包括叉乘和点乘求导) http://www.matrixcalculus.org/ 1标量对向量求导 标量(分子)分别对行/列向量(分母)各元素求导,结果仍为行/列向量(维度与分母一 ...
- 如何用法向量求点到平面距离_高中数学丨2020新标课本,空间向量与二面角所有知识点,一张表搞定...
建立空间直角坐标系常用方法: 1.底面是正方形,常以底面两条临边x轴,y轴: 2.底面是菱形,常以底面两条对角线为x轴,y轴: 3.底面是等腰三角形,常以底边及底边上的高为x轴,y轴: 4.底面为平行 ...
- 机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则
在机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法中,我们讨论了使用微分法来求解矩阵向量求导的方法.但是很多时候,求导的自变量和因变量直接有复杂的多层链式求导的关系,此时微分法使用起来也有些麻烦. ...
- 机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法
在机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法中,我们讨论了定义法求解矩阵向量求导的方法,但是这个方法对于比较复杂的求导式子,中间运算会很复杂,同时排列求导出的结果也很麻烦.因此我们需要其他的 ...
- 机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法
在机器学习中的矩阵向量求导(一) 求导定义与求导布局中,我们讨论了向量矩阵求导的9种定义与求导布局的概念.今天我们就讨论下其中的标量对向量求导,标量对矩阵求导, 以及向量对向量求导这三种场景的基本求解 ...
最新文章
- Apache htaccess 重写假设文件存在!
- Spring Cloud应用开发(三:客户端的负载均衡)
- 7怎么导入中文文献_如何下载并引用参考文献?
- .NET 导出Excel
- 小米回应将放弃“MI”字logo:不存在停止使用
- Android之用java的socket写服务器提示java.net.BindException: Address already in use
- 一个箱子的梦想_长葛这中学“建”了一个“梦想厅”……
- onblur/onfocus 失去焦点 获取焦点
- 探测远程主机操作系统指纹的全新技术
- C++引用计数(reference counting)技术简介(3)
- 机器视觉需要掌握的知识
- Web前端常用CDN网站汇总
- 路由协议常见FAQ-V1.1
- web前端中的文本居中效果
- 婚姻生活,艰难困苦中,水深火热中
- RN iOS 真机器调试
- Typora 是什么?
- EasyReport
- centos7.4下Jira6环境部署及破解操作记录(完整版)
- Python常用第三方库——简介及下载地址