有没有办法(如规划算法)绘制连续的折线以填充特定形状(如三角形)?

数据挖掘 机器学习 深度学习 算法 opencv
2022-03-03 20:55:12

有一个特定的形状(如三角形)区域,我正在尝试开发一个程序来在三角形内绘制一条连续的折线以填充三角形,一条线 3 层

ing

这篇文章演示了一些算法来解决这类问题。

他们都不适合这个任务,有什么想法吗?

1个回答

简单地对三角形应用几何计算以获得更小的三角形,其顶点可用于折线,这不是更容易吗?

使用Wolfram 语言

你有一个三角形。

shp = Triangle[];
Graphics[{LightGray, shp}]

数学图形

A ScalingTransformabout theRegionCentroid可以执行TransformedRegion以获得更小的内部三角形。下面,shp内部三角形按因子 0.8、0.6 和 0.4 缩放。

scaledShps =
  TransformedRegion[shp,
     ScalingTransform[{#, #},
      RegionCentroid@shp]] & /@ Range[.8, .4, -.2];
SeedRandom[456]
Graphics[{LightGray, shp, Riffle[Hue /@ RandomReal[1, Length@scaledShps], scaledShps]}]

数学图形

每个scaledShps都有顶点作为第一个参数。将这些和它们收集到一个单一的.Map (/@) FirstFlattenLine

Graphics[{
  LightGray, shp,
  Orange, Thick, Line@Flatten[First /@ scaledShps, 1]
  }]

数学图形

通过增加缩放因子的数量来获得更多层。例如,从 0.95 到 0.05,步长为 -.05

scaledShps =
  TransformedRegion[shp,
     ScalingTransform[{#, #},
      RegionCentroid@shp]] & /@ Range[.95, .05, -.05];
Graphics[{
  LightGray, shp,
  Orange, Thick, Line@Flatten[First /@ scaledShps, 1]
  }]

数学图形

Wolfram 最近发布了一个免费的 Wolfram 引擎,可以从多种语言(Python、C、...)中调用,因此您可以直接在您的项目中使用上述代码。

希望这可以帮助。