通过给定的点集识别图形的类型

时间:2010-04-20 22:01:07

标签: graph line image-recognition curve

我正在尝试设计一个程序,在给定一组点(x,y)的情况下绘制图形,并且它还应该识别曲线(直线,夸张,抛物线),只有点的帮助。 有算法吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

如果四个是共线的,那么你有一个简并的圆锥曲线,由四条共线点的线和第五条线与第一条线不平行的任何直线给出。

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

如果没有三个共线,则你有一个独特的,非退化的圆锥曲线。

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

如果你有超过5分,选择五个点(最好不要三个共线),找到圆锥曲线,然后检查剩下的点是否在圆锥曲线上。