在数组中的点之间递归地添加中点

克里斯

我正在尝试创建一个函数,该函数接受数组中的所有点,并返回在每对相邻点之间有一个附加点的数组。例如,从(2,10)开始,我将获得以下迭代到列表中:

(2, 14)
(2, 8, 14)
(2, 5, 8, 11, 14)
(2, 3.5, 5, 6.5, 8, 9.5, 11, 12.5, 14)

我的代码:

var Width = 1000
var Height = 1000
const svg = document.getElementById('svg1')
svg.setAttribute('width', Width)
svg.setAttribute('height', Height)

var seg = function(point) {
  var segment = document.createElementNS("http://www.w3.org/2000/svg", "circle")
  segment.setAttribute("cx", point.x)
  segment.setAttribute("cy", point.y)
  segment.setAttribute("r", 1)
  segment.setAttribute("fill", "none")
  segment.setAttribute('stroke', "#f00")
  segment.setAttribute('stroke-width', 0.5)
  svg.appendChild(segment)
}

const mid = function(pa, pb) {
  let cx = (pa.x + pb.x) / 2
  let cy = (pa.y + pb.y) / 2
  return {
    x: cx,
    y: cy
  }
}

var testarray = [{
  x: 0,
  y: 100
}, {
  x: 400,
  y: 50
}]

const split = function(a) {

  let b = []
  let c = []
  for (i = 0; i < a.length - 1; i++) {
    b.push(mid(a[i], a[i + 1]))
    c.push(a[i])
    c.push(b[i])
  }
  c.push(a[a.length - 1])
  return c

}

while (testarray.length < 30) {
  var testarray = split(testarray)
}

var counter = 0
while (counter < testarray.length) {
  seg(testarray[counter])
  counter++
}
<svg id="svg1"></svg>

固定代码,谢谢!

修剪

问题是您在遍历列表正在修改列表别这样:-)

创建一个从原始列表生成的第二个列表,然后返回第二个列表。或者,您可以尝试以相反的顺序进行迭代,但这使您依赖于拼接语义-这仍然是一种危险的做法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递归函数以在数组中添加元素

来自分类Dev

迭代地在数组中添加值并替换值

来自分类Dev

如何递归地向数组中的对象添加层 PHP

来自分类Dev

在数组中递归移动

来自分类Dev

在数组点之间插值

来自分类Dev

计算 Array 中点之间的距离并返回它们之间小于 5km 的点的数组

来自分类Dev

使用For循环在数组中递归搜索

来自分类Dev

在数组数组中添加数组

来自分类Dev

递归地反转数组中的元素

来自分类Dev

递归地选择numpy数组中的元素

来自分类Dev

寻找两点之间的中点

来自分类Dev

两点之间的Geokit LatLng中点

来自分类Dev

两点之间的Geokit LatLng中点

来自分类Dev

在JavaScript中在数组中添加空间

来自分类Dev

在数组中添加数字,没有任何循环。我解决了使用递归。有没有更好的办法?

来自分类Dev

在数组中添加多行

来自分类Dev

在数组中添加或删除元素

来自分类Dev

在数组中添加多个值

来自分类Dev

在数组中添加元素

来自分类Dev

CUDA循环在数组添加中展开

来自分类Dev

在数组中添加和删除哈希

来自分类Dev

在数组中添加对象的键值对

来自分类Dev

如何在数组中添加整数

来自分类Dev

在数组中添加多个值

来自分类Dev

在数组中添加文件名

来自分类Dev

如何在数组中添加空格

来自分类Dev

在数组元素中添加子文档

来自分类Dev

在数组中添加特定元素?

来自分类Dev

如何在数组中添加条件?