博客
关于我
poj3349——多边形相交
阅读量:658 次
发布时间:2019-03-15

本文共 880 字,大约阅读时间需要 2 分钟。

在创建客户徽标时,ACM使用图形实用程序绘制一张图片,稍后可以将其剪切为特殊的荧光材料。为确保正确处理,图片中的形状不能相交。但是,有些徽标包含这样的相交形状。有必要检测它们并决定如何改变图片。

给定一组几何图形,要确定它们的所有交点。如果一个形状完全位于另一个形状内,则不将其计算为交点。

输入包含多个图片。每张图片最多描述26个形状,每一个都在单独的行上说明。该行以一个大写字母开头,该字母唯一标识对应图片中的形状。然后是一种形状类型和两个或多个点,所有内容用空格分隔。

可能的形状类型有:

  • 正方形:后面是两个不同的点,表示正方形对角的两个点。
  • 矩形:给定三个点,连接第一个点和第二个点的线段始终存在直角,第二个点和第三个点的线段也始终存在直角。
  • 直线:指定直线段,给出两个不同的端点。
  • 三角形:给出三个点,保证它们不共线。
  • 多边形:后跟一个整数n(3 ≤ n ≤ 20),然后是n个点,指定多边形的顶点,顶点按顺时针或逆时针顺序排列。多边形不会与自身相交,且边的长度不为零。

所有点都以“(X,Y)”的格式给出,X和Y是整数字符,绝对值不超过10000。图片描述以包含“-”的行结尾。在最后一张图片后,有一行包含一个点(“.”)。

输出中,每个形状按字母顺序排列。输出行也是按字母顺序排列,每一行要么说明该形状没有交点,要么列出它与其他形状的交点。

以下是代码的主要逻辑:

  • 解析输入,构建不同形状类型的点集。
  • 对于每个形状,检查它与其他形状的边是否相交。
  • 判断两个图形是否有交点,且一个图形不与另一个图形完全包含。
  • 为每个形状生成相交情况报告。
  • 代码使用了以下数据结构和函数:

    • struct Point:表示二维点。
    • struct Line:表示直线段,包含两个端点。
    • bool SegmentProperIntersection(Line l1, Line l2):判断两条线段是否相交且在合理范围内。
    • cmp函数:用于对形状进行排序。
    • judge函数:判断两个多边形是否相交。

    读取输入并解析完成后,程序对每个形状进行交点检查,然后按照要求输出结果。

    转载地址:http://rgymz.baihongyu.com/

    你可能感兴趣的文章
    Position属性四个值:static、fixed、absolute和relative的区别和用法
    查看>>
    POSIX thread编程中关于临界区内条件变量的分析
    查看>>
    POSIX与程序可移植性
    查看>>
    posix多线程有感--自旋锁
    查看>>
    SpringBoot中集成海康威视SDK实现布防报警数据上传/交通违章图片上传并在linux上部署(附示例代码资源)
    查看>>
    POSIX标准和XSI扩展
    查看>>
    post install error,please remove node_moules before retry
    查看>>
    postcss-pxtorem 参数之selectorBlackList、exclude的用法
    查看>>
    Postek博思得标签打印机更换电脑,打印出来标签空白
    查看>>
    postfix+ dovecot搭建邮件服务器
    查看>>
    postfix在邮件服务器中的使用
    查看>>
    PostGIS 3.1.2软件安装详细教程(地图工具篇.8)
    查看>>
    PostGIS中获取所有EPSG的编码以及对应Proj4字符串
    查看>>
    PostGIS在Windows上的下载与安装
    查看>>
    Qt开发——网络编程之UDP客户端
    查看>>
    postgis数据库优化_postgresql 性能优化
    查看>>
    postgis求面积、交集等相关函数
    查看>>
    postgis相关函数
    查看>>
    Postgres Docker版本安装mysql_fdw 插件
    查看>>
    Postgres invalid command \N数据恢复处理
    查看>>