判断线段相交,朴素的方法(初中直线方程的判断方法),就是先计算两条直线的交点,然后再判断交点是否在其中一条的线段上。这也是笔者能唯一想到的方法,后来抱着试试看有没有更好方法的想法,搜了一下网络。哦, 真有,即所谓的快速排斥和跨立实验。
请参考:
https://www.cnblogs.com/TangMoon/archive/2017/09/29/7611115.html

快速排斥很容易理解,跨立实验,要用到矢量计算。要理解叉乘和点乘的概念。
参考:
https://zhuanlan.zhihu.com/p/359975221

有关矢量乘法,本人早已忘得精光了,因此,我要得只是结论,也不想探究其本质了。当时学的时候,就对矢量不感兴趣,没想到现在用上了。
本人的C#代码

 /// <summary>///  judge if the 2 segments intersected.///  From ————————————————///        版权声明:本文为CSDN博主「Siannodel_」的原创文章,遵循CC 4.0 BY - SA版权协议,转载请附上原文出处链接及本声明。///原文链接:https://blog.csdn.net/qq826309057/article/details/70942061/// </summary>/// <returns></returns>public static bool SegIntersectedSeg(PointF l1_p1, PointF l1_p2, PointF l2_p1, PointF l2_p2){//快速排斥实验if ((l1_p1.X > l1_p2.X ? l1_p1.X : l1_p2.X) < (l2_p1.X < l2_p2.X ? l2_p1.X : l2_p2.X) ||(l1_p1.Y > l1_p2.Y ? l1_p1.Y : l1_p2.Y) < (l2_p1.Y < l2_p2.Y ? l2_p1.Y : l2_p2.Y) ||(l2_p1.X > l2_p2.X ? l2_p1.X : l2_p2.X) < (l1_p1.X < l1_p2.X ? l1_p1.X : l1_p2.X) ||(l2_p1.Y > l2_p2.Y ? l2_p1.Y : l2_p2.Y) < (l1_p1.Y < l1_p2.Y ? l1_p1.Y : l1_p2.Y)){return false;}//跨立实验// var Z1 = ((l1_p1.X - l2_p1.X) * (l2_p2.Y - l2_p1.Y) - (l1_p1.Y - l2_p1.Y) * (l2_p2.X - l2_p1.X));var Z2 = ((l1_p2.X - l2_p1.X) * (l2_p2.Y - l2_p1.Y) - (l1_p2.Y - l2_p1.Y) * (l2_p2.X - l2_p1.X));var Z3 = ((l2_p1.X - l1_p1.X) * (l1_p2.Y - l1_p1.Y) - (l2_p1.Y - l1_p1.Y) * (l1_p2.X - l1_p1.X));var Z4 = ((l2_p2.X - l1_p1.X) * (l1_p2.Y - l1_p1.Y) - (l2_p2.Y - l1_p1.Y) * (l1_p2.X - l1_p1.X));// floating calculation error processing Z1 = ZeroProcess(Z1);Z2 = ZeroProcess(Z2);Z3 = ZeroProcess(Z3);Z4= ZeroProcess(Z4);if (Z1*Z2 > 0 || Z3 *Z4 > 0){return false;}return true;}

说明:参考代码中用的都是理论值,但是实际应用中,计算都有误差,笔者在调试过程当中,发现由于误差导致判断错误,因此根据实际情况对误差做了近似处理,主要是0 的判断。采用浮点数计算时,对于本算法用的点的精度(计算机屏幕分辨率的量级)而言,小数点后面三位就够了。因此增加了一个0 值处理的函数,代码如下:

    private static float ZeroProcess(float f){if (Math.Abs(f) < 1e-3){f = 0;}return f;}

上述代码在1920*1280 分辨率,调试通过。

maraSun 2022–4-32 BJFWDQ

关注SHFY,关注国家发展。

七巧板复原算法——计算机图形学基本算法之二,线段相交判断相关推荐

  1. 七巧板复原算法——计算机图形学基本算法之一, 点在多边形内部的判断

    注:此时我已经完成了一个演示版本,但是为了文章的渐进性,我将把开发过程一步步的写出来,用来记录. 本实验代码用到的图形学关系和算法列举如下: 基本计算机图形学关系和算法 1.点在多边形内部的 点在多边 ...

  2. GIS地图界面和计算机图形学填充算法

    一 GIS地图界面 GIS程序最常见的界面就是,不同区域被边界隔开,填充为不同的颜色: 如下三个:是超图iServer自带: 京津地区土地利用现状,京津地区人口分布,京津地区地貌分布:用于学习是很好资 ...

  3. 计算机图形学算法详解,计算机图形学裁剪算法详解

    <计算机图形学裁剪算法详解>由会员分享,可在线阅读,更多相关<计算机图形学裁剪算法详解(10页珍藏版)>请在人人文库网上搜索. 1.裁剪算法详解在使用计算机处理图形信息时,计算 ...

  4. 计算机图形学常见算法原理,计算机图形学常用算法及代码大全

    <计算机图形学常用算法及代码大全>由会员分享,可在线阅读,更多相关<计算机图形学常用算法及代码大全(41页珍藏版)>请在人人文库网上搜索. 1.2.1.1 生成直线的DDA算法 ...

  5. 计算机图形学要学什么语言,计算机图形学:算法与实现

    计算机图形学:算法与实现 语音 编辑 锁定 讨论 上传视频 <计算机图形学:算法与实现>一书的出版社是清华大学出版社,出版时间是第1版 (2012年1月1日). 书    名 计算机图形学 ...

  6. Games101计算机图形学入门基础之二:光栅化

    Games101计算机图形学入门基础之二:光栅化 引言 三角形的离散化 采样 走样 走样带来的瑕疵 反走样 先模糊再采样 傅里叶变换 低通滤波 卷积 多重采样抗锯齿(超采样) 深度缓存 可见性与遮挡( ...

  7. 计算机图像学试题,北交20秋《计算机图形学》在线作业二题目

    北交20秋<计算机图形学>在线作业二题目 2020-10-13 10:10:52 154 有学员问关于北交20秋<计算机图形学>在线作业二题目的题目的参考答案和解析,具体如下: ...

  8. 【计算机图形学】小白谈计算机图形学(四)二维三维图形变换—1

    小白谈计算机图形学(四)二维三维图形变换-1 窗口与视图 二维图形的几何变换 平移变换 比例变换 旋转变换 二维图形变换的矩阵表示 三种变换 齐次坐标变换 原二维线性变换 齐次坐标法 复合变换 例题: ...

  9. 计算机图形学直线算法论文,《计算机图形学》中直线生成算法的教学心得

    摘要:<计算机图形学>是计算机科学与技术专业一门重要的专业课,其中直线生成算法是教学重点之一.该文通过分析几种直线生成算法的特点,阐述了理论教学和实践教学的重点和难点,总结了教学的体会和心 ...

最新文章

  1. wp 删除独立存储空间文件(多级非空文件夹删除)
  2. Java中的Set操作
  3. Leetcode 220. 存在重复元素 III 解题思路及C++实现
  4. 打算写的文章,先写个标题
  5. Python学会使用虚拟环境——pipenv
  6. java map 输入 查询 修改_map的查询和修改方法
  7. F-Secure Client Security 注册机
  8. 轻轻一扫立刻扣款,付款码技术原理大揭秘 | 原力计划
  9. 清明节,如何用代码让网页变灰
  10. 项目结构设计 java_Java项目架构设计
  11. Velocity常用语法
  12. OP负反馈放大电路的自激振荡
  13. Google Gmail十年回首
  14. DS18B20的CRC验证算法
  15. 拼多多店铺销量达到多少适合做付费推广?
  16. 1、MyBatis框架入门学习CRUD
  17. Python数据分析库pandas高级接口dt的使用详解
  18. AgNCs-NIPAM-AAc温度响应性银纳米簇荧光探针
  19. ios实现qq空间飘落的花瓣(swift—粒子发射器)
  20. 国防科大计算机学院教学科研处,国防科大计算机学院工学博士学位论文 摘要...

热门文章

  1. go语言入门教程01-go工具+go语法+go module
  2. Android Service保活方法总结(不被杀死)双进程守护
  3. 基于Springcloud搭建电商平台实现高性能高并发微服务
  4. javaweb JAVA JSP失物招领系统源码JSP寻物启事JSP校园失物招领系统
  5. 启益电商:无货源店铺怎么做
  6. 用友U8采购请购单批量订货设置单价不可修改
  7. 机动车发生交通事故造成人身伤亡,财产损失的,赔偿责任如何承担?
  8. java入门基础四(方法和数组)
  9. 微信支付宝二维码图片批量改名工具
  10. APISIX网关简介与应用