两直线交点算法 C

求两直线交点算法
在这里插入图片描述
有中间交点 CD在AB异侧 且AB在CD异侧
在这里插入图片描述
AB在CD异侧 但 CD在AB同侧 无中间交点

A B × A C A B × A D \nobreak AB \times AC \newline AB \times AD AB×ACAB×AD
异号

叉乘后相乘小于零

等于零的几种情况
A = B
C与AB共线
D与AB共线

求交点,可由面积比例用叉乘计算

C E C D = S A B C S A B C D . \frac{CE}{CD} =\frac{S_{ABC}}{S_{ABCD}} . CDCE=SABCDSABC.

综上 代码部分

float cross(float* A, float* B, float* C, float* D)
{return (B[0] - A[0]) * (D[1] - C[1]) - (B[1] - A[1]) * (D[0] - C[0]);
}void copyPoint(float* dst, float *src)
{dst[0] = src[0];dst[1] = src[1]; 
}
// EPS 误差自定  等零用线段长度点到直线距离替换 
int intersect(float* a, float *b, float *c, float *d, float* res)
{if (a[0] == b[0] && a[1] == b[1])  // ab同一点return 0;float a1 = cross(a,b,a,c);float a2 = cross(a,b,a,d);float a3 = cross(c,d,c,a);float a4 = cross(c,d,c,b);if (a1*a2 > 0 || a3*a4 > 0)  return -1;   //无交点if (a1 == 0)  { // 交点为ccopyPoint(res,c);return 1;}  else if (a2 == 0) {  // 交点为dcopyPoint(res,d);return 1;}    	     //中间交点 float t = a1 / (a1 - a2);   // 面积1与面积2异号  保持a1方向 res[0] = c[0] + t*(d[0] - c[0]);   res[1] = c[1] + t*(d[1] - c[1]);return 1;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/777275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS - LLVM的中间代码(IR)

文章目录 iOS - LLVM的中间代码(IR)1. 转为汇编代码2. 中间代码(IR)2.1 Objective-C在变为机器代码之前,会被LLVM编译器转换为中间代码(Intermediate Representation)2.2 可以使用以下命令行指令…

武忠祥《660题》高效刷题包+资料分享

660题的难度书虽然比较难,对于基础的考察比较深入,所以,有没有一种可能,做题太慢,是因为基础不好导致的! 所以再继续做下去,就没有什么意义了,因为这就像是用一把钝刀去砍树&#x…

VS2022 使用ClaudiaIDE设置自定义图片背景

ClaudiaIDE的下载 第一步,如下图所示,点击:扩展——管理扩展。 第二步,如下图所示,点击:联机——右上角输入ClaudiaIDE搜索——点击下载。 下载后关闭所有VS窗口,然后等待弹出一个安装窗口&…

小米汽车正式发布:开启智能电动新篇章

随着科技的不断进步,汽车产业正经历着前所未有的变革。智能电动汽车作为这一变革的重要方向,正吸引着越来越多的目光。在这个充满机遇和挑战的时代,小米汽车凭借其卓越的技术实力和深厚的市场底蕴,终于迈出了坚实的一步。今天&…

Exception in thread “main“ com.fasterxml.jackson.databind.JsonMappingException:

问题:jaskson反序列化超出最大长度 Caused by: com.fasterxml.jackson.core.exc.StreamConstraintsException: String length (5043456) exceeds the maximum length (5000000) 场景:前端传递过大base64 原因: jaskon默认已经限制了最大长…

免费|Python|【需求响应】一种新的需求响应机制DR-VCG研究

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序对应文章《Contract Design for Energy Demand Response》,电力系统需求响应(DR)用来调节用户对电能的需求,即在预测的需求高于电能供应时,希…

chrome 控制台不能粘贴

描述:chrome 控制台不能粘贴 解决方案:setting-Experiments-Filter中输入past,取消勾选

国际伦敦金行情分析中的趋势分析方法

国际伦敦金行情走势复杂多变。近期,金价曾经一度刷新历史的新高点至2222,但就在当天,金价又快速下跌跌超过30美元。不过这么多变的伦敦金行情也为我们的交易创造了空间,有空间就等于有机会,只要我们能够掌握国际伦敦金…

HCIP作业3

第一步 给PC1配置: 先给PC2配置: 第二部 给R1的接口配置ip [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 192.168.1.252 24 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip ad 100.1.1.1 24 给R2的接口配置IP [R2]int g0/0/…

Java:接口应用(Comparable接口与比较器)

目录 1.引例2.Comparable接口使用3.Comparable接口的局限性4.使用comparaTo实现排序5.比较器(Comparator接口) 1.引例 class Student{private String name;private int age;public Student(String name, int age) {this.name name;this.age age;} } p…

#孩子学习编程的目的是什么?#

谢谢今日头条编辑的盛情邀请,对此,我发表自己的一点拙见。 首先,最重要的一点,学习编程可以练习打字,加强拼音输入法的掌握。对于孩子的语文成绩有一定的提高帮助,也为将来走上工作熟练使用电脑输入法打下扎…

Linux的学习之路:3、基础指令(2)

一、echo指令 这个指令在上篇文章我也用了但是忘了说了,这个指令的大概用法就是把后面跟的文本等输出在显示器上,如下代码所示打印的“Hello Linux” [rootVM-24-9-centos ~]# echo "Hello Linux" Hello Linux二、输出重定向与输入重定向 着…

Java实现猜数字游戏:编程入门之旅

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

使用 Yoda 和 ClickHouse 进行实时欺诈检测

背景 Instacart 是北美领先的在线杂货公司,拥有数百万活跃的客户和购物者。在其平台上打击欺诈和滥用行为不仅对于维护一个值得信赖和安全的环境至关重要,也对保持Instacart的财务健康至关重要。在这篇文章中,将介绍了一个欺诈平台——Yoda,解释了为什么我们选择ClickHous…

Linux 反引号、单引号以及双引号的区别

1.单引号—— 单引号中所有的字符包括特殊字符($,,和\)都将解释成字符本身而成为普通字符。它不会解析任何变量,元字符,通配符,转义符,只被当作字符串处理。 2.双引号——" 双引号,除了$,…

AI智能分析网关智慧食安监管系统方案

3.15晚会刚过不久,淀粉肠的“屈辱”终于得以洗清,但某些品牌奶茶、梅菜扣肉、预制菜等等,生产过程仍是触目惊心。如何提升食品安全管理水平,保障食品从生产到消费环节的质量和安全?TSINGSEE青犀智利用智能分析网关V4Ea…

【图像合成】基于DCGAN典型网络的MNIST字符生成(pytorch)

关于 近年来,基于卷积网络(CNN)的监督学习已经 在计算机视觉应用中得到了广泛的采用。相比之下,无监督 使用 CNN 进行学习受到的关注较少。在这项工作中,我们希望能有所帮助 缩小了 CNN 在监督学习和无监督学习方面的成…

aws使用记录

数据传输(S3) 安装命令行 安装awscli: https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions 直到 aws configure list 可以运行 身份验证: 运行: aws config…

【QGIS从shp文件中筛选目标区域导出为shp】

文章目录 1、写在前面2、QGIS将shp文件中目标区域输出为shp2.1、手动点选2.2、高级过滤 3、上述shp完成后,配合python的shp文件,即可凸显研究区域了 1、写在前面 利用shp文件制作研究区域mask,Matlab版本,请点击 Matlab利用shp文…

网络编程综合项目-多用户通信系统

文章目录 1.项目所用技术栈本项目使用了java基础,面向对象,集合,泛型,IO流,多线程,Tcp字节流编程的技术 2.通信系统整体分析主要思路(自己理解)1.如果不用多线程2.使用多线程3.对多线…