首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将4个协调连接在一起的算法,使其总是产生四边形。

将4个协调连接在一起的算法,使其总是产生四边形。
EN

Stack Overflow用户
提问于 2015-05-25 12:47:37
回答 11查看 213关注 0票数 4

我们得到了二维平面上4个点的坐标。我们如何找到一个订单,将它们与行连接起来,形成一个四边形 (只要有可能)?

EN

Stack Overflow用户

发布于 2015-05-26 01:01:46

通过一个函数可以很容易地解决这个问题,这个函数可以说明两个线段是否相交。

给定点A,B,C,D,只有三种不同的顺序连接顶点: ABCD,ABDC和ACBD (顶点A要么连接到顶点B,要么不连接。如果连接到顶点B,则有两种方式来排序C和D。如果没有,则A连接到C和D,它们都必须连接到B)。

这四个点的顺序产生一个四边形,如果没有任何边缘相交(除了角)。这就为查找工作命令提供了以下程序:

代码语言:javascript
运行
复制
If AB intersects with CD then return ACBD.
If AD intersects with BC then return ABDC.
Otherwise return ABCD.

证明这一点是容易的:

  1. ABCD和ABDC都包含边AB和CD,所以如果这对边相交,那么良好的顺序必须是ACBD。
  2. ABCD和ACBD都包含边AD和BC,所以如果这对边相交,那么良好的顺序必须是ABDC。
  3. 如果AB/CD和AD/BC都不相交,那么ABCD顺序就会产生一个四边形。

如果您自己找不出,那么确定两个线段是否相交的代码可以在线找到。

票数 0
EN
查看全部 11 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30438748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档