zoukankan      html  css  js  c++  java
  • 初中生问题:求任意凸多边形的交叉面积

    一个初中生问题:求任意凸多边形的交叉面积

    类似的几种情况


            



    第一种0:两个多边形无交叉,没有相交多边形,且一方在另一方没有内点,相交面积为0。

    第二种1:两个多边形无交叉,且一方在另一方有内点。称之为包含。

    第三种2:两个多边形有交叉,有相交多边形,且一方在另一方有内点。

    第四种3:两个多边形有交叉,有相交多边形,且两方在另一方有内点。

    第五种4:两个多边形有交叉,有相交多边形,且无内点。

    第六种5:奇异情况,重合。


    总结:可以看出,多边形相交的面积,即是 所有交点和内点组成的多边形连成的面积。

    问题:是不是遗漏了其他情况?


    算法描述

    1. 判断两个多边形是否相交

         1.1 遍历一个多边形的所有边,判断是否与另一个多边形相交

         1.2  找出所有的交点

    2.判断一个多边形在另一多边形内是否有内点

       2.1 遍历一个多边形的所有点,判断是否为另一个多边形内点   

       2.2

    3. 根据内点情况和交叉点情况,判断相交情况

        3.1 收集所有内点和交点,

        3.2 计算质心,计算点到质心的角度

        3.3 根据角度排序,连成凸多边形

        3.4 从一点开始,划分多个三角形

        3.5 计算多个三角形的面积,累加:

                  三角形面积计算公式:

       

    double p = (a + b + c) / 2;
    		double s2 = p * (p - a) * (p - b) * (p - c);

    4.返回面积累加和


  • 相关阅读:
    !!!最常用正则表达式语法
    RunMessageScript from spy
    已知进程、线程、窗体三者中某一个的句柄,需要查找另外两者的句柄。
    如何抓取一个当前运行软件所使用的内存
    谢谢你的伤害
    游摸底河有感
    九月无诗
    游石人公园有感
    影响35岁前成功的好习惯与坏习惯
    创业经验十二谈,愿有志者共勉(转)
  • 原文地址:https://www.cnblogs.com/wishchin/p/9199907.html
Copyright © 2011-2022 走看看