首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

查找多边形与长度为x2-x1的水平线段之间的交点数目

要查找多边形与长度为x2-x1的水平线段之间的交点数目,可以使用射线法进行求解。具体步骤如下:

  1. 确定水平线段的起点和终点坐标,分别为(x1, y)和(x2, y)。
  2. 遍历多边形的所有边,计算每条边与水平线段的交点。
  3. 对于每条边,判断其与水平线段是否相交。如果相交,则记录交点的横坐标。
  4. 统计所有交点的横坐标,并计算交点数目。

下面是对每个步骤的详细解释:

  1. 确定水平线段的起点和终点坐标,分别为(x1, y)和(x2, y)。这里的x1和x2是给定的水平线段的横坐标,y是水平线段的纵坐标。
  2. 遍历多边形的所有边,计算每条边与水平线段的交点。多边形可以由一系列顶点坐标组成,假设有n个顶点。对于每条边,可以使用射线法判断其与水平线段是否相交。具体方法是,将水平线段的起点和终点与多边形的每条边进行比较,判断是否有交点。
  3. 对于每条边,判断其与水平线段是否相交。如果相交,则记录交点的横坐标。可以使用以下条件判断两条线段是否相交:
    • 两条线段的纵坐标范围有交集。
    • 两条线段的横坐标范围有交集。
    • 两条线段的斜率不相等。
  • 统计所有交点的横坐标,并计算交点数目。将所有交点的横坐标进行排序,并统计相邻交点之间的数目。这个数目即为多边形与水平线段之间的交点数目。

需要注意的是,以上方法假设多边形是简单多边形,即没有自交或重叠的情况。对于复杂多边形,需要先对多边形进行拆分,再分别计算每个简单多边形与水平线段之间的交点数目。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,无法给出具体的产品推荐。但腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以根据具体需求选择相应的产品。可以参考腾讯云官方网站获取更多信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CGAL:线段多边形之间交点

CGAL:线段多边形之间交点? [英] CGAL: Intersection between a segment and a polygon?...查看:422 发布时间:2020/9/30 21:04:15 computational-geometry cgal 本文介绍了CGAL:线段多边形之间交点?...处理方法,对大家解决问题具有一定参考价值,需要朋友们下面随着小编来一起学习吧! 问题描述 我有一组多边形,我想测试它与线段之间交点。 我检查了手册,但找不到匹配功能。...点,线,线段,三角形,平面之间交点确实存在。 多边形之间交点也在那里。 我问题是: 有这样功能吗? 如果没有,这是否意味着我需要将多边形分解多个部分,并在这些部分之间进行相交?...(我不愿意这样做原因是,我认为CGAL实际上可能会使用这种方式在多边形之间进行相交。为什么没有这样函数将线多边形相交?)或者还有其他更好方法吗?

43830

计算几何算法概览

计算两条共线线段交点 计算线段或直线线段交点线段或直线折线、矩形、多边形交点线段或直线交点 凸包概念 凸包求法 三、算法介绍   矢量概念:   如果一条线段端点是有次序之分...,……所以很容易看出当L和多边形交点数目C是奇数时候,P在多边形内,是偶数的话P在多边形外。   ...计算线段或直线线段交点:   设一条线段L0 = P1P2,另一条线段或直线L1 = Q1Q2 ,要计算就是L0和L1交点。  1....需要注意是,我们可以将直线或线段方程改写ax+by+c=0形式,这样一来上述过程部分步骤可以合并,缩短了代码长度,但是由于先要求出参数,这种算法将花费更多时间。   ...求线段或直线折线、矩形、多边形交点:   分别求每条边交点即可。   求线段或直线交点:   设圆心O,圆半径r,直线(或线段)L上两点P1,P2。   1.

1.5K40
  • 模拟试题B

    ,则输出线段SP裁剪线交点和P ?...( ) A)多边形被两条扫描线分割成许多梯形,梯形底边在扫描线上,腰在多边形边上,并且相间排列; B)多边形某扫描线相交得到偶数个交点,这些交点间构成线段分别在多边形内、外,且相间排列;...C)用射线法判断点是否在多边形内时,若该射线多边形交点数目偶数即可认为在多边形内部,若为奇数则在多边形外部,而且不需考虑任何特殊情况; D)边连贯性表明,多边形某条边当前扫描线相交时...( ) A)对称变换 B)旋转变换 C)比例变换 D)错切变换 三、判断题(1′*9 = 9′) 1.编码裁剪算法需要求线段窗口边界交点,中点分割算法则不需求交点。...已知窗口及线段坐标分别为A(0,0)、B(0,6)、C(10,6)、D(10,0),P1(-1,10)、P2(11,0)。试用中点分割法求出P1最远可见点,当线段长度≤0.5时算法结束。

    4.2K10

    丘比特箭(点是否在面内)- HDU 1756

    射线法:从点A出发作一条射线,计算这条射线多边形P交点数量N,如果N奇数,则点A在多边形P内,否则在P外部。...(红心点A,右边有3个点,说明在多边形内部) 射线法原理:直线不可能从内部再次进入多边形,或从外部再次穿出多边形,即连续两次穿越边界情况必然成对(大概就是这个意思,不是严格证明)。...两个向量a和b叉积写作a^b = |a| |b|sinα (αa,b向量之间夹角) 叉积几何意义: 对于向量AP1向量AP2,如果叉积为0,说明夹角0,也就是共线...乘积几何意义: a·b>0 方向基本相同,夹角在0°到90°之间 a·b=0 正交,相互垂直 a·b<0 方向基本相反,夹角在90°到180°之间 子问题2:判断点A在线段P1P2...= dcmp(P2.y - P.y) > 0); if (isUpDownLine) { //2、点在射线线段交点左边 //直线应该是

    93420

    java 计算坐标点距离,平行线交点算法详解

    前言 主要记录一些关于坐标和线段计算方法。因为经常会碰见,需要在平面上,计算坐标点。 例如两个坐标点之间距离,两个线段是否平行,两个不相交线段交点。 由于程序中坐标原点,都是左上角开始。...所以很少涉及象限问题。以下一些算法,不会强调象限问题。 这里,主要介绍如何使用勾股定理计算坐标距离,斜率计算线段交点等。 2. 根据两个坐标点,计算距离 平面中,两点之间,直线最短。...而直线斜率公式:k=(y2-y1)/(x2-x1)。其中K值就是斜率结果了。...只需要知道这个直线上任意两点就可以。 点斜式斜率公式:K=(y2-y1)/(x2-x1)也可以写:K=(y1-y2)/(x1-x2) 这两个公式结果是等值。...小结 到这里,详细介绍了平面坐标系下距离判断。线段平行和线段交点计算。关于斜率计算,稍微涉及了高中知识。但是整体计算过程也就初中水平了。 只是由于很长时间没有接触了。

    67230

    判断点是否在多边形Python实现及小应用(射线法)

    判断一个点是否在多边形内有几种不同思路,相应方法有: 射线法:从判断点向某个统一方向作射线,依交点个数奇偶判断; 转角法:按照多边形顶点逆时针顺序,根据顶点和判断点连线方向正负(设定角度逆时针正...)求和判断; 夹角和法:求判断点所有边夹角和,等于360度则在多边形内部。...面积和法:求判断点多边形边组成三角形面积和,等于多边形面积则点在多边形内部。...射线法原理及实现 射线法就是以判断点开始,向右(或向左)水平方向作一射线,计算该射线多边形每条边交点个数,如果交点个数奇数,则点位于多边形内,偶数则在多边形外。...该算法对于复合多边形也能正确判断。 ? 射线法关键是正确计算射线每条边是否相交。并且规定线段射线重叠或者射线经过线段下端点属于不相交。首先排除掉不相交情况,下图情况都是需要排除掉: ?

    9.6K40

    判断点在多边形内算法C++实现

    算法思路 判断平面内点是否在多边形内有多种算法,其中射线法是其中比较好理解一种,而且能够支持凹多边形情况。该算法思路很简单,就是从目标点出发引一条射线,看这条射线和多边形所有边交点数目。...算法步骤如下: 已知点point(x,y)和多边形Polygon点有序集合(x1,y1;x2,y2;….xn,yn;); 以point起点,以无穷远为终点作平行于X轴射线line(x,y; -∞,...判断lineside是否有交点,如果有则count++。 判断交点总数count,如果奇数则返回true,偶数则返回false。 2....针对这个问题,可以规定线段两个端点,相对于另一个端点在上面的顶点称为上端点,下面是下端点。如果射线经过上端点,count加1,如果经过下端点,则count不必加1。...改进空间 很多情况下在使用该算法之前,需要一个快速检测功能:当点不在多边形外包矩形时候,那么点一定不在多边形内。

    5.9K30

    使用 SVG 和 JS 创建一个由星形变心形动画

    通常,给定一个正多边形(不管是凸多边形还是星形多边形),使用 Schläfli symbol {p,q} 表示,一条边相对圆心角就是 q·(360°/p) (弧度 q·(2·π/p))。 ?...从这个三角形中,如果我们知道内切圆半径以及多边形相对圆心角(两个半径之间锐角等于圆心角一半),我们就可以计算出外接圆半径。 ?...其中, O 是对角线交点,OT 是对角线 ST 一半。T 和 S 都位于 y 轴,所以它们 x 坐标 0 。它们 y 坐标的绝对值等于 OT 线段长度,也是对角线(OS 线段一半。...因为所有角都是 90° 并且 TS 竖轴重合,所以 TAk 和 SBk 边是水平,平行于 x 轴并且它们长度是 Ak 和 Bk 点 x 坐标: ±R∙√2....所以端点到控制点线段 C∙R 。 在这种情况下,控制点坐标 1 - C 乘以 (T, Ak and Bk) 点坐标,再加上 C 乘以这些点切线交点坐标 (Dk 和 Ek)。

    4.7K51

    CAD2007操作教程上

    Y方向(有正,负之分)距离,输入方法:X,Y值,输入时要在英文状态下 绝对极坐标:点到坐标原点之间距离是极半径,该连线X轴正向之间夹角度数极角度数,正值逆时针,负值 顺时针,输入方法,..., 相对极坐标:是指该点上一输入点之间距离,该连线X轴正向之间夹角度数极角度数,相对符号为@,....绘制外切正多形方法:先在命令栏中输入快捷键POL,在命令栏中输入边数,指定正多边形中心,输入C确定,现输入半径长度 注:“外切于圆”表示绘制多边形将外切于假想圆。...通过指定一条边绘制正多边形方法:在命令中输入快捷键POL,在命令栏中输入边数,输入E,指定正多边线段起点,指定正多边线段端点 课后练习:掌握多线绘制及样式设置,多段线绘制及。...L直线:可画出直线来 4.拖动鼠标给以线段方向,直接拖出线段长度确定 多段线线区别 1. 直线有三个交点,多段线有两个交点 2. 多段线有粗细,直线无粗细 3.

    3.6K30

    手把手教你实现手绘风格图形🔵

    首先一条线段起点和终点我们都给它加一点随机值,随机值比如就在[-2,2]之间,也可以把这个范围和线段长度关联起来,比如线段越长,随机值就越大。...扫描线填充很简单,就是一条扫描线(水平线)从多边形底部开始往上扫描,那么每条扫描线都会和多边形交点,同一条扫描线和多边形各个交点之间区域就是我们要填充,那么问题来了,怎么确定交点,以及怎么判断两个交点之间属于多边形内部...关于交点计算,首先我们交点y坐标是已知,就是扫描线y坐标,那么只要求出x,知道线段两个端点坐标,那么可以求出直线方程,然后再计算,但是有一种更简单方法,就是利用边相关性,也就是知道了线段某一点...: ​ (1)从ET表里取出当前扫描线相交边,添加到AET表里,同样按上面提到顺序排序 ​ (2)成对取出AET表里边信息xi值,在每对之间进行填充 ​ (3)从AET表里删除当前已经扫描到最后边...上图里点(x,y)原本角度a,线段r,求旋转角度b后坐标(x1,y1): x = Math.cos(a) * r// 1 y = Math.sin(a) * r// 2 x1 = Math.cos

    1.6K30

    给定一个边边可能相交多边形,求它轮廓线

    最近遇到一个需求,给定一个多边形(边边可能相交),求这个多边形轮廓线。 需要注意是,轮廓线多边形内不能有空洞,使用不是常见非零绕数规则(nonzero)以及奇偶规则(odd-even)。...所以我们首先要做是 求出目标多边形所有交点,并更新邻接表,得到一个额外带有交点信息多边形邻接表。 我们来看看具体要怎么实现。 求交点以及更新邻接表 这里需要一个求两线段交点算法。...刚好我写过,思路是解二元一次方程组,请看这篇文章:《解析几何:计算两条线段交点》 用法: getLineSegIntersection( { x: 1, y: 1 }, { x: 4, y: 4...更新邻接表 // ... } } } 记录新交点在哪四个点之间,我们要维护一个表。...它 key 代表某条线段,value 一个有序数组,记录落在该线段点,以及它们到线段起点距离。该数组按距离从小到排序。

    14910

    【Web技术】1139- 手把手教你实现手绘风格图形

    首先一条线段起点和终点我们都给它加一点随机值,随机值比如就在[-2,2]之间,也可以把这个范围和线段长度关联起来,比如线段越长,随机值就越大。...扫描线填充很简单,就是一条扫描线(水平线)从多边形底部开始往上扫描,那么每条扫描线都会和多边形交点,同一条扫描线和多边形各个交点之间区域就是我们要填充,那么问题来了,怎么确定交点,以及怎么判断两个交点之间属于多边形内部...关于交点计算,首先我们交点y坐标是已知,就是扫描线y坐标,那么只要求出x,知道线段两个端点坐标,那么可以求出直线方程,然后再计算,但是有一种更简单方法,就是利用边相关性,也就是知道了线段某一点...:(1)从ET表里取出当前扫描线相交边,添加到AET表里,同样按上面提到顺序排序 (2)成对取出AET表里边信息xi值,在每对之间进行填充 (3)从AET表里删除当前已经扫描到最后边,即y...也可以把线段首尾交替相连变成一笔画效果: 具体实现可以去源码里看,接下来我们看最后一个问题,就是让填充线倾斜一点角度,目前都是水平

    81710

    一种快速判断点在多边形算法

    我们可以归纳出: 当射线穿越多边形边界次数偶数时,所有第偶数次(包括最后一次)穿越都是穿出,因此所有第奇数次(包括第一次)穿越穿入,由此可推断点在多边形外部。...当射线穿越多边形边界次数奇数时,所有第奇数次(包括第一次和最后一次)穿越都是穿出,由此可推断点在多边形内部。 实现关键点 1....思路: 先求边和点交点, 即边起点y乘以边斜率,得到交点x, 若x == X, X是参考点横坐标,则点在线上。 2....点和多边形顶点重合 思路:参考点边顶点重合,则直接是 x == X && y == Y ,其中x,y是边顶点, X,Y是参考点, 则直接返回。 3..../ 判断点是否在水平直线上 if (y == y1) && (y == y2) { return true } // 判断线段两端点是否在射线两侧 if (y >= y1 &&

    1.2K10

    hover 背后数学和图形学

    射线法原理是以待判断点坐标画一条水平直线,然后判断这条直接多边形各条边交点数量,如果是奇数则代表点在多边形内,如果是偶数则代表点在多边形之外。...如果多边形某条边是曲线怎么办? 如何判断两条线段交点? 如何获取多边形各条边端坐标? 这其实并不是一个图形绘制领域问题,而是数据制备领域问题。...所以WebGL中任何图形本质上都是多边形,既然是多边形就可以按照上文方案解决点多边形相对位置判断问题。 如何判断两条线段交点?...回顾上文提到多边形顶点数据制备,多边形边是由相邻两个顶点相连而成,顶点是有序,也就是说多边形每条边都是有向线段,所以判断两条线段是否相交这个问题准确说发应该是:判断两个有模向量是否相交。...总结 本文简单总结了前端常用各种图形技术实现hover效果方法,水平有限,聊当抛砖引玉。前端很多常用方法或API底层都很值得玩味,这不比八股文有意思?

    1.3K10

    平面几何:判断点是否在多边形内(射线法)

    之前我们讲解了如何利用叉乘 判断点是否在凸多边形内。但该算法限制较大,多边形必须凸多变形。 最近我图形编辑器又新增了星形图形,然而这个星形又不是凸多边形。...交点数如果是奇数,说明点在多边形内;如果是偶数,则点不在多边形内。 背后原因是,交点刚好把这条射线切割 “...内-外-内-外” 这样交替子区域。...自交会将多边形切割多个区域,所以我们通常需要指定 填充规则,确定哪些区域需要填充,哪些区域不需要填充。 基于射线法实现只适用其中使用了 奇偶规则 自交多边形。...射线方向没有要求,通常选择水平或垂直方向射线,能够有效减少计算量。 这里我们选择 向右射线。 然后就是遍历多边形所有边,判断边线段和射线是否有交点,有交点就给相交数 count 加 1。...: 可以将交点数变量 count 换成一个默认为 false 布尔值变量,每当找到一个交点做一个取反; 可以不交换线段两点位置,但对应判断会变成 (a.y > y) !

    25410

    模拟试题A

    ( ) A)3 B)4 C)6 D)8 5.多边形扫描线填充算法四个步骤中,保证填充无误关键步骤是( ) A)求交点 B)对交点排序 C)交点配对 D)交点所在区间填色 6.下图中四组正方体透视图错误一组是...7.假设场景中有k个多边形构成,显示分辨率m*n,则图像空间消隐算法算法复杂度 ( ) A)k*k B)m*n C)m*n*k D)m*n*k*k 8.如图B.1所示,则反射方向矢量R(...9.如图B.1所示,则不完全镜面反射光Is 计算式 ? 中θ( ) A)NH夹角 B)RN夹角 C)RV夹角 D)RH夹角 ?...计算机图形学三个核心领域 、 和 。 2. 任意简单多面体,其面(F)、边(E)、顶点(V)数目需满足公式 。 3. 显示器分辨率m*n,颜色数K显存大小V之间关系式 。...点阵表示区域常见有两种表示形式,分别是 、 6. 编码裁剪算法中,若线段两端点编码位相与运算结果不为0,表明线段窗口关系是_________。

    3.5K10

    基于Turf.js教你快速实现地理围栏合并拆分

    如下图所示,不仅可以沿线一分二,当线多边形有多段相交时也可以分为多份,另外当多边形带洞(环多边形)时也可以在拆分后保持洞形状。 [17211f4213f008de?...w=400&h=339&f=gif&s=4560436] 多边形合并是指将多个多边形合并为一个多边形,其前提条件是多边形之间有交叉区域或者共边。...利用该方法可以将plinesplitter互相切割,得到子线段集合pieceCollection 线组合为多边形:Turf提供了polygonize方法,将一组折线互相拼接组合成多边形。...可以发现用线B切线A时,实际上是先计算线B线A交点,再使用splitLineWithPoints方法用这些交点对线A进行切割。...这里先简单介绍一下判断点、线段关系计算方法,用P表示点,S0和S1两点构成线段,那么首先判断向量P-S0和S1-S0叉积(叉积表示其构成平行四边形面积)是否0,然后判断P是否在S0、S1两点之间

    3K30

    计算几何笔记

    判断点是否在多边形内部 基本思想:从点$P$向右做一条射线,判断从无限远处到点$P$,射线穿过了几条边 有两种需要特判情况 1.射线某条边重合,该边不统计入答案 2.射线端点重合 此时,我们钦定边是由编号小连向编号大...对踵点 定义:若点对$(a, b)$均为多边形点且存在过$a$点切线过$b$点切线平行,则成$(a, b)$多边形对踵点 计算方法: 设$p_{ymin}$表示$y$最小点,$q_{...接下来以相同角速度逆时针旋转两条射线,当其中一条穿过多边形下一个端点$p_{next}$时,用$p_{next}$作为新端点,同时$q_{pre}$构成新对踵点。...求凸多边形直径 定义:凸多边形直径多边形上最远点对距离 很显然,直径一定是在对踵点处取得,直接枚举对踵点即可 double RotatingCaliper_diameter(Point Poly...凸多边形宽度 凸多边形最小面积外接矩形 凸包-Andrew算法 首先按照$x$第一关键字,$y$第二关键字从小到大排序,并删除重复点 用栈维护凸包内点 1、把$p_1, p_2$放入栈中

    1.3K20
    领券