【发布时间】:2017-09-15 03:16:24
【问题描述】:
开始编辑
给定一组点,
每个由纬度和经度定义,
找到形成三角形的三个点内的点之间的方向连接的有序列表,使得该三角形的内部点相互连接并且这三个点产生最大三角形,具有以下约束:
-
两点的连接是有方向的,输出连接的数量可以达到某个变量
maxOutgoing的值,每个输出连接的长度可以达到某个变量maxOutgoingLength的值。传入数量和长度不受限制。 -
连接可能不会相互交叉。
-
对于每个点,我们最多可以应用 四个 修饰符的组合:
-
increaseOutgoing,通过某个常量increaseOutgoingBy的值增加传出次数,并且 -
increaseOutgoingLength将传出连接的长度增加了某个常量increaseOutgoingLengthBy的值。
-
-
连接顺序重要:
一旦一个点被一个三角形包围,就不能再建立传出连接了。
在这个问题的原始形式中,我想为解决方案的每个参与点找到一个唯一的“路径”和“符号”。
结束编辑
简介:
我有一个递归函数,可以找到给定三点的中心。 我从顶点 a、b 和 c 开始。 中心标记为 (abc)。 中心将三角形 abc 分成三个三角形:(abc)ab、(abc)ac 和 (abc)bc,中心分别为:((abc)ab)、((abc)ac) 和 ((abc)bc)。等等。 我的函数对顶点的名称进行排序 - 括号字符代码小于字母,这就是为什么 ((abc)ab) 而不是,例如 (ab(abc))。 我注意到每个点都有唯一的 a、b 和 c 计数(以及括号,可以忽略)。
正在寻找:
一种视觉方式(我可以并且确实绘制三角形:每个顶点到其他两个顶点和中心)到达一个给定名称的点,但它可能会变得很长,所以,也许,使用字母-数数。例如:点 (((abc)ab)((abc)a((abc)ab))((abc)((abc)ab)((abc)a((abc)ab)))) 有一个, b, 和 c 的字母数分别为 13、11 和 7,并得到它,假设 a 是顶部顶点,b 位于 a 下方且向右,c 位于 a 下方且向左(例如。它们可以按任何顺序/方向),我们(1)去中心,(2)然后是右上右,(3)然后左上左,(4)然后右下,和,最后,(5) 从右到右 - 一直沿着画线(下图中的绿色路径)。
如何从点的名称/字母数中获取这些方向?!?而不是痛苦地剖析点的名称并使用铅笔和纸......
忽略下图中的灰线。
【问题讨论】:
-
不幸的是,您的解释没有充分定义基本问题。首先,which center 你在用吗?您的插图使用了一个几乎等边的等腰三角形;这混淆了这个问题。你还混淆了中心的建设;这个过程将帮助我们区分。
-
另外,您想要的输出也不清楚。您似乎想要一系列方向,例如“up-left-up”,但您没有解释符号背后的基本原理:为什么“up-left-up”而不是“up-up-left”?为什么不只是“左上角”?另请注意,对于某些三角形和某些中心定义,这不足以选择所需的路径。
-
地图中左上角:东-北-东。再上左上:比东北更靠东。在第一部分中,我解释了除了外部顶点之外的每个点都是 3 个点的中心,从外部顶点开始。在第二部分中,我的意思是主中心 = 外部顶点的中心。
-
好的:对于 direction,您需要罗盘的 16 个主要点中最近的一个。对于center,我的问题仍然存在。请查阅我提供的链接。几何术语中没有“主要中心”。
-
我的“中心”可能以质心开始,并且可以更改为同一内三角形内的任何点,因此,“中心”读作:三角形内的一个点(但不在任何边缘上)。我的“主要中心”是最外层三角形的中心(如前所述)。在欧几里得几何中,我可以通过它的 (x,y) 坐标找到任何点,并且与中心 = (0,0) 相比,我可以通过它的符号确定一个点在哪个象限中。我的三角形和中心有欧几里得值,但不是象限,而是三角形(?!?!?),主(外)三角形可以是任何大小、类型、方向...
标签: javascript graph path notation