List scala列表线段

List scala列表线段,list,scala,grouping,List,Scala,Grouping,我有一个由一组点组成的多边形,我想通过组合相应点的列表,然后将最后一个点与第一个点组合,找到该多边形的线段列表 例:点列表-(p1、p2、p3、p4、p5、p6) 线段列表-((p1,p2)、(p2,p3)、(p3,p4)、(p4,p5)、(p5,p6)、(p6,p1)) 我正在定义行为findLineSegment来对相应的点进行分组,但我得到的是List[List(points)]。。如何将此列表转换为线段列表?最简单的方法可能如下所示 val rot1 = simplePolygon.dr

我有一个由一组点组成的多边形,我想通过组合相应点的列表,然后将最后一个点与第一个点组合,找到该多边形的线段列表

例:点列表-(p1、p2、p3、p4、p5、p6) 线段列表-((p1,p2)、(p2,p3)、(p3,p4)、(p4,p5)、(p5,p6)、(p6,p1))


我正在定义行为findLineSegment来对相应的点进行分组,但我得到的是List[List(points)]。。如何将此列表转换为线段列表?

最简单的方法可能如下所示

val rot1 = simplePolygon.drop(1) ++ simplePolygon.take(1)
for ((pi,pj) <- simplePolygon zip rot1) yield LineSegment(pi, pj)
val rot1=simplePolygon.drop(1)++simplePolygon.take(1)

对于((pi,pj),您可以
zip
使用旋转版本的列表,然后映射到
LineSegments

(points zip ((points drop 1) ::: (points take 1))) map LineSegment.tupled
您可能还对
滑动
方法感兴趣:

points.sliding(2).map { case List(a, b) => LineSegment(a, b) } 
    :+ LineSegment(points.last, points.head)
points.sliding(2).map { case List(a, b) => LineSegment(a, b) } 
    :+ LineSegment(points.last, points.head)