作业帮 > 综合 > 作业

求矩形相交的面积c语言(急)

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 10:50:10
求矩形相交的面积c语言(急)
求平面上两个正方形相交的面积.给出两个正方形的各个顶点的坐标,计算出相交部
分的面积.输入为8对整数,分别依次为第一个正方形的4个顶点坐标和第二个正方形的4个
顶点坐标.且保证两个正方形的边都与坐标轴平行.输出为一个整数,即相交部分的面积.
样例输入:
0 0 2 2 0 2 2 0 1 0 3 0 3 1 1 1
样例输出:
1
把点描出来后发现,1 0 3 0 3 1 1 1这个围成的根本不是正方形
不过,我可以给你个思路:
这个题目由于是正方形且保证两个正方形的边都与坐标轴平行,那么就变得简单的多了
(1)对于你输入的8个点,找到可以包含这8个点的正方形square的四个点的坐标(如果觉得难找也没有关系,可以不找,直接弄个范围足够大的正方形)
(2)由于根据题目的描述,最后围成的面积一定是整数(也就是说由若干个小的1*1的正方形构成)
(3)说到这里很容易可以想到,把所有在square内的点(n/2,n/2)找到,利用循环很容易做到这一点,判断这些特定的点是不是既在第一个正方形内也在第二个正方形内,两个都在的那些点有k个的话,输入的两个正方形的重合的部分就有k个1*1的小正方形,最后用k*1就是最后需要求出的面积咯
提示:求点在正方形内可以用叉积法,也可以百度去找“程序实现点在多边形内的方法”,有很多方法.
再问: 是老师题目写错了,我求的就是矩形的~
再答: 那你只要把第一步中的范围弄大点就行了,其他的都一样,是校程序大赛的题目吧,上周就做过了
再问: 可是如果点在边界上呢?
再答: n/2 n是奇数,也就是说每个点(n/2,n/2)都是1*1的小正方形的中心,你输入的所有点的坐标都是整数,也就是说输入的两个矩形有若干个1*1的小正方形组成,就不可能在边界上了