【发布时间】:2012-08-26 09:28:46
【问题描述】:
我有一个四边形类型,定义为:
typedef struct __point {
float x;
float y;
} point_t;
typedef struct __quad {
point_t p1;
point_t p2;
point_t p3;
point_t p4;
} quad_t;
如果我在同一平面上有两个四边形,我希望能够计算出这些四边形的交点。例如,如果我们有 quad A 和 quad B,如果 B 的任何点落在 A 之外,则算法应该产生一个包含点的四边形,如下图所示(A 为红色,B 为紫色):
编辑:点的顺序并不重要,因为我稍后会使用这些点来构造一个将在 A 内绘制的四边形。
【问题讨论】:
-
WhatHaveYouTried?
-
那么你想找到重叠区域的顶点吗?点的顺序重要吗?
-
@DavidSchwartz:在图中找不到两个点
-
"稍后我将使用这些点来构造一个将在 A 内绘制的四边形" - 是什么让您认为结果将是一个四边形?如果两个正方形以 45 度角重叠在一起呢?
标签: c algorithm geometry computational-geometry