平面图形原理总结(1):直线相交
前言
在平面几何中通常我们判断或求直线的相交方法是:用两直线的表达方程,判断其斜率或求二元方法解;但是这种方法经常要考虑很多特殊情况,例如:与坐标轴X平行时(斜率 k = 0 k=0 k=0),与坐标轴Y平行时(斜率 k = ∞ k=\infty k=∞)等等;这些代数几何的方法处理起来都比较琐碎,不好统一解法,因此应当考虑图形学的处理方法来解决,用向量处理解决,这样就无需考虑斜率等问题,会更加便利。具体原理可以查看参考文献,以下为本人对原理的总结。
参考文献:《计算机图形学——用OpenGL实现(第2版)》 清华大学出版社
平面直线的相交
平面直线的表达方式
两点A( a x , a y a_{x},a_{y} ax,ay),B( b x , b y b_{x},b_{y} bx,by)在直线L上,
向量 a ⃗ = B − A = B A → \vec a = B - A = \overrightarrow {BA} a =B−A=BA ,
则直线方程 L ( t ) L(t) L(t)为: L ( t ) = A + a ⃗ t L(t) = A + \vec a t L(t)=A+a t
直线的法向量(垂直于直线的向量或称为与直线正交的向量)为: n ⃗ \vec n n ;
设点R为直线上任意位置一点,则有直线L的点-法向量形式为:
n ⃗ ⋅ ( R − A ) = 0 \vec n \cdot(R - A) = 0 n ⋅(R−A)=0
另外,向量 a ⃗ ⊥ \vec a^\perp a ⊥表示为向量 a ⃗ \vec a a 的逆时针正交向量, a ⃗ ⊥ = ( − a y , a x ) \vec a^\perp = (-a_y,a_x) a ⊥=(−ay,ax)平面直线的相交
假定点A,B确定一直线,点C,D确定一直线,
那么向量 a ⃗ = B − A \vec a = B- A a =B−A,向量 c ⃗ = D − C \vec c = D - C c =D−C,
则直线AB为: A B ( t ) = A + a ⃗ t AB(t) = A + \vec a t AB(t)=A+a t
则直线CD为: C D ( u ) = C + c ⃗ u CD(u) = C + \vec c u CD(u)=C+c u
求直线相交点,即存在 A B ( t ) = C D ( u ) AB(t) = CD(u) AB(t)=CD(u)
则: A + a ⃗ t = C + c ⃗ u A+\vec a t = C + \vec c u A+a t=C+c u
令向量 b ⃗ = C − A \vec b = C - A b =C−A,那么化简可得 a ⃗ t = b ⃗ + c ⃗ u \vec a t = \vec b + \vec c u a t=b +c u
因为 c ⃗ ⊥ ⋅ c ⃗ = 0 \vec c^\perp \cdot \vec c = 0 c ⊥⋅c =0,消除未知变量u对等式的影响,则等式两边同时点乘以 c ⃗ ⊥ \vec c^\perp c ⊥,那么有上式可得 t = c ⃗ ⊥ ⋅ b ⃗ c ⃗ ⊥ ⋅ a ⃗ t = \frac {\vec c^\perp \cdot \vec b} {\vec c^\perp \cdot \vec a } t=c ⊥⋅a c ⊥⋅b
其中,当 c ⃗ ⊥ ⋅ a ⃗ = 0 \vec c^\perp \cdot \vec a = 0 c ⊥⋅a =0时,两直线平行
同理,亦可消除t对等式的影响,得到 u = a ⃗ ⊥ ⋅ b ⃗ c ⃗ ⊥ ⋅ a ⃗ u = \frac {\vec a^\perp \cdot \vec b} {\vec c^\perp \cdot \vec a} u=c ⊥⋅a a ⊥⋅b
带入直线方程可得交点I: I = A + ( c ⃗ ⊥ ⋅ b ⃗ c ⃗ ⊥ ⋅ a ⃗ ) a ⃗ I = A + ( \frac {\vec c^\perp \cdot \vec b} {\vec c^\perp \cdot \vec a } )\vec a I=A+(c ⊥⋅a c ⊥⋅b )a
或者 I = C + ( a ⃗ ⊥ ⋅ b ⃗ c ⃗ ⊥ ⋅ a ⃗ ) c ⃗ I = C + (\frac {\vec a^\perp \cdot \vec b} {\vec c^\perp \cdot \vec a}) \vec c I=C+(c ⊥⋅a a ⊥⋅b )c
平面线段的相交
根据上述平面直线相交方程 A B ( t ) = A + a ⃗ t AB(t) = A + \vec a t AB(t)=A+a t可得,当 t = 0 t=0 t=0时, A B ( t ) = A AB(t) = A AB(t)=A;当 t = 1 t=1 t=1时, A B ( t ) = B AB(t) = B AB(t)=B;
即当点在线段AB上时, 0 ≤ t ≤ 1 0 \le t \le 1 0≤t≤1
同理可得,当点在线段CD上时, 0 ≤ u ≤ 1 0 \le u \le 1 0≤u≤1
由此可判断两线段是否相交,或直线与线段是否相交,以及线段的重合等其他问题
补充:两直线相交的另外一种解法
直线 L 1 L_1 L1使用方程 L 1 ( t ) = A + a ⃗ t L_1(t)= A + \vec a t L1(t)=A+a t,A为直线 L 1 L_1 L1上已知一点,向量 a ⃗ \vec a a 为直线 L 1 L_1 L1对应的向量;
直线 L 2 L_2 L2使用方程 n ⃗ ⋅ ( P − B ) = 0 \vec n \cdot (P - B) = 0 n ⋅(P−B)=0,B为直线 L 2 L_2 L2上已知一点,向量 n ⃗ \vec n n 为直线 L 2 L_2 L2的法向量,P为待求点;
直线 L 1 L_1 L1与 L 2 L_2 L2带入方程得: n ⃗ ⋅ ( A + a ⃗ t − B ) = 0 \vec n \cdot (A+\vec a t - B) = 0 n ⋅(A+a t−B)=0
化简为 n ⃗ ⋅ ( A − B ) + n ⃗ ⋅ a ⃗ t = 0 \vec n \cdot (A - B) + \vec n \cdot \vec a t = 0 n ⋅(A−B)+n ⋅a t=0
解得 t = n ⃗ ⋅ ( B − A ) n ⃗ ⋅ a ⃗ t = \frac {\vec n \cdot (B - A)} {\vec n \cdot \vec a} t=n ⋅a n ⋅(B−A)
平面图形原理总结(1):直线相交相关推荐
- 平面图形原理总结(3):多边形相交
前言 继续总结关于图形学的问题,这次总结下多边行的相交问题,同样可以自行阅读参考文献了解,以下是本人的自行总结内容. 参考文献:<计算机图形学--用OpenGL实现(第2版)> 清华大学出 ...
- n条直线相交最多有几个邻补角_【初一】 n(n1)模型在相交线中的应用
数形结合 跳动空间思维点.线.面 分类讨论 灌溉逻辑严密的田 化归思想 悟得推己及人.大道至简 函数方程 最值求出个"醉"极限 你待数学如初见 题目待你如初恋 智慧本是星星点点 积 ...
- n条直线相交最多有几个邻补角_【东升二中数字课堂】创意微课直线的交点|Super数学璐...
感谢您关注洛阳东升二中官方微信!如果您尚未关注,请点击图片上方的文字"洛阳市东升第二中学",加关注! 课题名称 | <直线的交点> 授课教师 | 王璐 制作团队 ...
- 判断线段和直线相交 POJ 3304
1 // 判断线段和直线相交 POJ 3304 2 // 思路: 3 // 如果存在一条直线和所有线段相交,那么平移该直线一定可以经过线段上任意两个点,并且和所有线段相交. 4 5 #include ...
- n条直线相交最多有几个邻补角_【初中数学】102条做初中几何辅导线的规律
今天给大家整理的是[初中数学]102条做初中几何辅导线的规律 资料如果能帮到你,希望你可以帮忙点赞-感谢-收藏支持一下! 若你需要下载word来打印,可以查看我的个人简介,上面有资料下载方式. (资料 ...
- 程序员面试金典——7.3判断直线相交
程序员面试金典--7.3判断直线相交 Solution1:我的答案,虽然能AC,但不是很讲究,吸收教训 class CrossLine { public:bool checkCrossLine(dou ...
- 已知抛物线与直线相交两点和抛物线顶点,求抛物线和直线所围成的面积?
已知抛物线与直线相交两点和抛物线顶点,求抛物线和直线所围成的面积? 顶点:p1(-b/2a),((4ac-b^2)/2a): 抛物线方程:y=ax^2+bx+c; 直线方程:y=k*x+b; 已知:p ...
- 判断两条线段/直线相交,并求交点
一.矢量基本知识 因为后面的计算需要一些矢量的基本知识,这里只是简单的列举如下,如果需要更加详细的信息,可以自行搜索wikipedia或google. 1.矢量的概念:如果一条线段的端点是 ...
- 两条直线相交的证明以及交点的求解
一.两条直线相交的证明: 首先我们要知道向量的叉乘,向量的叉乘得到的也是一个向量,其值为以最初的两条向量为临边的平行四边形的面积,方向根据右手定则得出. 知道了这个就可以证明了,具体的看以下的图片 从 ...
最新文章
- vim的简单介绍与使用
- Uber提出损失变化分配方法LCA,揭秘神经网络“黑盒”
- Leetcode 74. 搜索二维矩阵 (每日一题 20210907)
- 【Nginx】判断URL中是否存在某个参数Parameter
- XMC-GAN:从文本到图像的跨模态对比学习
- CORS 请求未能成功_CORS攻击概述
- 计算机如何玩二十四点游戏,数学二十四点游戏有什么技巧吗?
- 设计灵感|浓浓人文感!中文活动海报设计学习案例
- php现实的九九乘法,php趣味编程 - php 输出九九乘法
- mysql数据库修改排序规则
- 颠覆传统!麦肯锡的数字化咨询:只用5步,打造创新的数据架构
- Python程序-打印九九乘法表
- FPS游戏:方框透视算法分析
- Spring Cloud基础教程 - 程序猿DD
- 【并发编程】Once 基本用法和如何实现以及常见错误
- 经典再现,看到就是赚到。尚硅谷雷神 - SpringBoot 2.x 学习笔记 - 核心功能篇
- 小学计算机教案2018六年级,2017年小学六年级下册信息技术教学计划
- 服务器cpu都有哪些型号,盘点目前性价比最高的CPU有哪些型号
- Credly 数字证书
- 快速入门 Remix IDE
热门文章
- 「马化腾 IT峰会」上微博热搜,网友:马云没去
- multiplexer protocol研究
- 2020用vue实现仿美团导航切换功能和淘宝购物车功能,实现默认第一个导航显示效果?
- 每天学一点flash(5) actionscript 3.0 外部加载mp3音乐
- E : 子串循环问题 (Ver. I)
- 成为黑客_黑客将成为2020年政府的首选武器
- Android 手机克隆/一键换机原理初探
- 3D游戏建模在游戏公司中是什么样的角色?薪资高,有前途吗
- MCE公司:MCE 中国生命科学研究促进奖获奖论文集锦二
- 如何查找一张照片的拍摄地点