【问题标题】:Recognising the type of graph by given set of points通过给定的一组点识别图形的类型
【发布时间】:2010-04-20 22:01:07
【问题描述】:

我正在尝试设计一个程序,该程序可以在给定一组点 (x, y) 的情况下绘制图形,并且它还应该仅在点的帮助下识别曲线(直线、双曲线、抛物线)。 有没有算法可以做到这一点?

【问题讨论】:

    标签: graph line image-recognition curve


    【解决方案1】:

    如果曲线可以是直线或圆锥曲线(双曲线、抛物线、椭圆、圆),则需要五个点。

    如果这五个点共线,你就有一条直线。 (或者是退化的圆锥曲线?但如果你期望的是直线,这应该是一条直线。)

    如果四个共线,则您有一个退化的圆锥曲线,由通过四个共线点的线和通过第五个点但不平行于第一条线的任何线给出。

    如果三个共线,则有一个退化圆锥曲线,由通过三个共线点的线和通过其他两个点的线给出。 (除非这两条线平行,在这种情况下这不是圆锥曲线。)

    如果没有三个点共线,则您有一个唯一的非退化圆锥。

    要找到这个圆锥曲线的方程 (Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0),请查看 this page,特别是 DETAILS 部分中的公式。输入您的五个 x 和 y 值,根据 x 和 y 计算矩阵的行列式,这将为您提供圆锥曲线的公式。然后查看here,根据 A、B 和 C 的值来判断你有什么样的圆锥。

    如果您有 5 个以上的点,请选择 5 个点(最好不要三个点共线),找到圆锥曲线,然后检查剩余的点是否位于圆锥曲线上。

    【讨论】:

      【解决方案2】:

      你可以通过观察极端函数来做到这一点,但可能不是这个问题的最佳解决方案(我的意思是抛物线函数中的一个问题,如 y = sqrt(x*x-1))。 对于直线,您可以通过 2 个随机点计算 y = ax + b 并检查其他点等于该条件(如果是)。如果没有,这是一条直线,您可以检查其他 2 个异常或任何异常。也许其他人会为接下来的 2 个案例找到解决方案?

      【讨论】:

        猜你喜欢
        • 2012-06-30
        • 1970-01-01
        • 1970-01-01
        • 2011-04-17
        • 1970-01-01
        • 2016-03-22
        • 2019-08-14
        • 1970-01-01
        • 2021-04-28
        相关资源
        最近更新 更多