1.凸包、极点、极边基础概念

目录

1.凸包

2.调色问题

3.极性(Extrem)

4.凸组合(Convex Combination)

 5.问题转化(Strategy)​编辑

6.In-Triangle test

7.To-Left-test

8.极边(Extream Edges)


1.凸包

凸包就是上面蓝色皮筋围出来的范围

这些钉子可以转换到坐标轴中,横纵坐标表示颜色的比例

2.调色问题

上述问题可以进行一个抽象,抽象为一个color space

结论

  • 如果有1种颜料可以被2种颜料勾兑出来,它必然位于二者之间的那条连线上
  • 如果有1种颜料可以被3种颜料勾兑出来,它必然位于三角形内
  • 勾兑比例与距离成反比

3.极性(Extrem)

蓝色的为极点

极点上存在一条直线,使得所有的点落在它的一侧

4.凸组合(Convex Combination)

为什么最小值必须>=0 ?

因为这种颜色大不了不用,但也不可能是负的

 5.问题转化(Strategy)

如果是极点那么久不可能在一个三角形的内部,所以采用排除法,剩下的就是极点

6.In-Triangle test

遍历所有可能的三角线组合,排除非极点

低效做法

更加聪明的做法,如果一个点位于三条直线的left,那么它一定位于三角形内

7.To-Left-test

如何高效的判断一个点是否是包含在一个三角形的内部是计算几何里的一个基础问题。

In Triangle Test问题也可以用来解决计算几何里的一个基础问题就是 凸包问题 。

问题描述

给出一个点s,判断其是否在一个三角形(p, q, r)内部。

问题求解

判断一个点是否在三角形内部等价于对于三条边分别做To left test的结果一致。

那么现在的问题就是如何高效和精确的实现To left test。

只有s位于pq这条线段左侧才会取正。

关于这个可以使用空间坐标系的海伦公式来求解。

              | p.x p.y 1 |

2 * S =   | q.x q.y 1 |

              | s.x s.y 1 |

并且这个公式是有向的,当三个点是逆时针排列的时候该行列式的返回结果是正数,当三个点是顺时针排列的时候行列式的返回结果是负数

1

2

3

4

5

6

7

8

bool to_left_test(int[] p, int[] q, int[] s) {

    return area2(p, q, s) > 0;

}

int area2(int[] p1, int[] p2, int[] p3) {

    return p1[0] * p2[1] + p1[1] * p3[0] + p2[0] * p3[1] -

        p2[1] * p3[0] - p1[1] * p2[0] - p1[0] * p3[1];

}  

To left test 几乎贯穿了整个计算几何,不仅是计算凸包的核心,也是很多其他计算几何问题的关键算法。

例如:判断两条线段是否相交,只需要做4次to left test即可。 

8.极边(Extream Edges)

极边:所有的点落在同一侧,就是极边

算法实现

极边的算法效率高于极点的算法效率

参考

In Triangle Test / To Left Test - hyserendipity - 博客园

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

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

相关文章

《如何用 Function 实现动态配置驱动的处理器注册机制?》

大家好呀!👋 今天我们来聊聊一个超实用的技术话题 - 如何用Java的Function接口实现动态配置驱动的处理器注册机制。听起来很高大上?别担心,我会用最简单的方式讲清楚!😊 一、为什么要用Function实现处理器…

【最新版】芸众商城独立版源码 425+插件 全新后台框架

一.系统介绍 芸众商城系统最新版 已经更新425全插件版,一套系统支持各种新零售、商城、模式,天天美丽链动商城。不要相信那些外面的旧版本。旧版本等于是废品,无法小程序运营的,框架还是旧的! 芸众系统最新版 服务器可…

java 设计模式之单例模式

简介 单例模式:一个类有且仅有一个实例,该类负责创建自己的对象,同时确保只有一个对象被创建。 特点:类构造器私有、持有自己实例、对外提供获取实例的静态方法。 单例模式的实现方式 饿汉式 类被加载时,就会实例…

Milvus 索引如何选择

以下是几种索引类型的特点及适用场景,可据此选择: AUTOINDEX 特点:数据库自动选择合适索引类型,无需深入了解索引细节。适用场景:对索引知识了解有限,或不确定哪种索引适合当前数据和查询需求&#xff0c…

CentOS 7 安装教程

准备: 软件:VMware Workstation 镜像文件:CentOS-7-x86_64-bin-DVD1.iso (附:教程较为详细,注释较多,故将操作的选项进行了加粗字体显示。) 1、文件–新建虚拟机–自定义 2、硬盘…

TAS启动与卸载

3. 启动TAS(Thin-Agent服务) TAS在安装完成后通常会自动启动,并在系统重启时自启。如需手动启动,请按以下步骤操作:  3.1 在Windows上启动TAS 1. 打开 Windows服务管理器: ◦ 按下 Win R&…

Redis面试——数据结构

一、SDS如何防止缓冲区溢出? Redis 的 String 类型通过 SDS(Simple Dynamic String)来防止缓冲区溢出,具体机制如下: Redis 的 String 类型底层采用 SDS 实现,即 Simple Dynamic StringSDS 底层维护的数据…

Doris的向量化执行如何支撑分布式架构和复杂查询

Doris 的向量化执行能力与其 分布式架构 和 复杂查询优化 深度结合,通过 批处理 列式计算 分布式调度 的协同设计,解决传统分布式数据库在复杂查询场景下的性能瓶颈。以下是具体原理展开: 一、向量化如何适配分布式架构? Doris…

DataInputStream 终极解析与记忆指南

DataInputStream 终极解析与记忆指南 一、核心本质 DataInputStream 是 Java 提供的数据字节输入流,继承自 FilterInputStream,用于读取基本数据类型和字符串的二进制数据。 作用:1.专门用来读取使用DataOutputStream流写入的文件 注意:读取的顺序要和写入的顺序一致(…

云转型(cloud transformation)——不仅仅是简单的基础设施迁移

李升伟 编译 云转型不仅仅是迁移基础设施,更是重塑企业运营、创新及价值交付的方式。它具有战略性、持续性,并影响着人员、流程和平台。 ☁️ 云转型涉及以下内容: 🔄 应用现代化——从单体架构转向微服务架构。 ⚙️ 运营自动…

Java HTTP Client API详解

Java HTTP Client API详解 Java的HTTP客户端API经历了多次演进,从早期的HttpURLConnection到第三方库如Apache HttpClient,再到Java 11引入的标准HttpClient。本文将全面解析Java中主要的HTTP客户端API,包括特性对比、使用方法和最佳实践。 …

如何深入理解引用监视器,安全标识以及访问控制模型与资产安全之间的关系

一、核心概念总结 安全标识(策略决策的 “信息载体) 是主体(如用户、进程)和客体(如文件、数据库、设备)的安全属性,用于标记其安全等级、权限、访问能力或受保护级别,即用于标识其安全等级、权限范围或约束…

京东3D空间视频生成技术探索与应用

1. 背景 近年来,随着社交媒体、流媒体平台以及XR设备的快速发展,沉浸式3D空间视频的需求迅猛增长,尤其是在短视频、直播和电影领域,正在重新定义观众的观看体验。2023年,苹果公司发布的空间视频技术为这一趋势注入了新…

惊爆!Cursor 限制多设备登录,网友疯狂吐槽,退订潮汹涌来袭,直呼:没理由再给它掏钱!

大家好,我是小程程。 吃瓜吃瓜,知名 AI 编程工具 Cursor 惹事了! ① 遭遇强制登出 前几天有 Cursor 用户发现,自己要是从多台设备登录,就会被强制下线。 比方说,你正在台式电脑上干活,中途换到笔…

React JSX 语法深度解析与最佳实践

本文系统梳理 JSX 语法的完整知识体系。通过原理剖析、代码示例和开发警示&#xff0c;帮助开发者建立严谨的 JSX 使用认知。 一、JSX 本质解析 1.1 编译机制 JSX 通过 Babel 转换为 React.createElement 调用&#xff0c;以下为转换对照&#xff1a; // 原始 JSX <MyCo…

若依改用EasyCaptcha验证码

若依自带的验证码样式比较单一&#xff0c;所以想改用EasyCaptcha验证码&#xff0c;另外EasyCaptcha算术验证码可能会有负数&#xff0c;输入时需要写负号&#xff0c;比较麻烦&#xff0c;所以使用一个简单的方法过滤掉负数结果 原本的验证码依赖和代码可删可不删&#xff0c…

趣味编程之go与rust的爱恨情仇

声明:此篇文章利用deepseek生成。 第一章&#xff1a;出身之谜 Go&#xff08;江湖人称"高小戈"&#xff09;是名门之后——谷歌家的三少爷。生来就带着"简单粗暴"的家族基因&#xff0c;口号是**“少写代码多搬砖&#xff0c;并发处理赛神仙”**。它爹Ro…

【cocos creator 3.x】速通3d模型导入, 模型创建,阴影,材质使用,模型贴图绑定

1、右键创建平面&#xff0c;立方体 2、点击场景根节点&#xff0c;shadows勾选enabled3、点击灯光&#xff0c;shadow enabled勾选 4、点击模型&#xff0c;勾选接收阴影&#xff0c;投射阴影&#xff08;按照需要勾选&#xff09; 5、材质创建 6、选中节点&#xff0c;找…

告别昂贵语音合成服务!用GPT-SoVITS生成你的个性化AI语音

文章目录 前言1.GPT-SoVITS V2下载2.本地运行GPT-SoVITS V23.简单使用演示4.安装内网穿透工具4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 今天给大家介绍一款AI语音克隆工具——GPT-SoVITS。这款由花儿不哭大佬开发的工具是一款强大的训练声音模型与音频生成工具…

Doris FE 常见问题与处理指南

在数据仓库领域&#xff0c;Apache Doris 凭借其卓越性能与便捷性被广泛应用。其中&#xff0c;FE&#xff08;Frontend&#xff09;作为核心组件&#xff0c;承担着接收查询请求、管理元数据等关键任务。然而&#xff0c;在实际使用中&#xff0c;FE 难免会遭遇各类问题&#…