关于Toleft的一点思考
来源:互联网 发布:js中单选按钮点击事件 编辑:程序博客网 时间:2024/06/07 00:54
最近在看mooc上邓老师的《计算几何》教学视频链接,邓老师讲的很好。在学到如何判定一个点在三角形上时,邓老师的视频中给了一个行列式,老师提到行列式的正负号就可以判断一个点在直线的左边还是右边。但是没讲它是怎么来得,课下思考后才推出来了。
先看下面的图:
任给一个三角形,当你从某个顶点沿着三角形逆时针运动时,你会发现三角形内部的点始终在你的左手边。所以这就给了我们启示:如果能判断一个点在三条有向线段的左边,而且这三条有向线段构成一个三角形(首尾相接),那么这个点就在这个三角形内。
所以现在的问题是如何快速判断一个点在直线的左边还是右边。学过解析几何的同学都知道:利用两点的坐标就可以求出过2点的直线方程,而一条直线将平面分割成2个平面,如果我们指定这条直线的方向,那么就可以将要判定的点带入直线方程,看其符号:
如图,当p点坐标带入方程大于0,我们便得知p点位于直线左侧了。
原理上可行但是我们要求直线的方程,这样会不会过于麻烦了呢?确实,事实上,我们有更好的办法:向量。我们可以利用向量的叉积,如图:
到这里我们的集合描述就差不多了。现在看一下代数性质。
假设有2个三维向量
则叉积为:
当在平面上时,我们可以认为z分量为0,那么就有:
邓老师的课件上的公式却是一个3*3的行列式:
开始不明白这个怎么来得,后来才明白利用了行列式的技巧:
到这里就基本明白了。在实际编写程序的时候依然还是转化为代数:
参考文章:向量叉积和应用
0 0
- 关于Toleft的一点思考
- 关于 && 的一点思考
- 关于计算机体系结构的一点思考。
- 关于计算机体系结构的一点思考
- 关于继承的一点思考
- 关于盗版的一点思考
- 关于宏的一点思考
- 关于计算机的一点思考
- 关于编程的一点思考
- 关于软件设计的一点思考
- 关于string的一点思考
- 关于makefile的一点思考
- 关于“概念”的一点思考
- 关于重载的一点思考
- 关于XSS的一点思考
- 关于code的一点思考
- 关于前端的一点思考
- 关于建构主义的一点思考
- oracle 实现插入自增列
- Spring boot打包时报错(spring boot Unable to find a single main class from the following candidates)
- 应用启动黑屏处理
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- MVC,MVVM简单理解
- 关于Toleft的一点思考
- 标识符及命名规范
- 06、C语言-结构体
- ios UIDevice类以及Info.plist文件
- Java集合怎么一边删除一边遍历
- nyoj1311勤奋的涟漪
- Homebrew简介及安装
- Android开发——BaseAdapter的优化
- 约翰霍姆金斯大学_the I-STAR Lab