【问题标题】:Algorithm to check shape in matrix检查矩阵形状的算法
【发布时间】:2016-04-23 08:02:26
【问题描述】:

我有一个地理板,我的应用程序教小孩子数学。在geoboard中,我们要求孩子们画出正方形、矩形、三角形等基本形状。

地质板:

现在画一个正方形,有多种可能,比如:

或者

现在我从上面两个得到的矩阵是 [1,1,1,1,0,1,1,1,1] 和 [0,0,0,0,1,1,0,1, 1]

所以我的问题是,是否有任何可用的算法可以帮助确定矩阵是正方形还是任何其他基本形状?

【问题讨论】:

  • 嗯.. 加全1,检查是否平方数?
  • 形状是如何表示的还不是很清楚。正方形必须轴对齐还是倾斜正方形也算在内?拐角之间的边上的中间点呢,这些可以省略吗?对于三角形,斜率是限制在八个主要方向还是可以是任意的?如果你展示更多关于你想接受什么和你想拒绝什么的例子,这可能会很有用。

标签: algorithm math matrix


【解决方案1】:

如果您要查找的所有形状都是凸的,则可以插入凸包算法。一旦你计算了你得到的形状的凸包,你首先检查是否有任何 1 不在凸包的边界上。如果有,那么形状是错误的。

如果没有,那么您只需计算凸包多边形的边数和角度数,即可判断它是正方形、矩形还是三角形。

【讨论】:

    【解决方案2】:

    我不能说出具体的算法,但我要做的是将矩阵转换为边。每条边都会存储它的长度和下一条边的角度,例如90、0、-30 度等。然后,您将检查有多少边以查看它的形状,然后进行更具体的搜索以确保例如所有角度都是 90 度,如果您想检查它是否是正方形.

    我刚刚意识到您的矩阵不足以计算出绘制的形状,因为它只存储经过的点,而不是顺序。这意味着可以使用 [0,0,0,0,1,1,0,1,1] 绘制任意数量的形状。您还需要存储订单以执行我的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      相关资源
      最近更新 更多