查找线条是平行的,重合的还是相交的。如果它们相交,找到交叉点

时间:2016-10-30 13:31:52

标签: c geometry lines

我试图创建一个程序,在其中输入两行(a1x + b1和a2x + b2)的系数,并计算它们是否重合,平行或是否相交,它会找到交点。我无法成功地比较系数,程序的输出总是如下:它们在点(0.00,0.00)处相交。我做错了什么?

#include <stdio.h>
#include <math.h>

#define epsilon 0.001

int main() {

    float a1, b1, a2, b2;
    float x = 0;
    float y = 0;


    printf("Insert a1,b1,a2,b2: ");
    scanf("%f %f %f %f", &a1, &b1, &a2, &b2);
    if (fabs(a1 - a2) < epsilon && fabs(b1 - b2) < epsilon) {
        printf("Coincident");
    } else if (fabs(a1 - a2) < epsilon && fabs(b1 - b2) > epsilon) {
        printf("Parallel");
    } else if (((fabs(a1 - a2) > epsilon && fabs(b1 - b2) > epsilon) ||
            (fabs(a1 - a2) > epsilon && fabs(b1 - b2) < epsilon))) {
        x = (b2 - b1) / (a1 - a2);
        y = a1 * x + b1;
        printf("They intersect at point (%.2f, %.2f)", x, y);
    }

    return 0;
}

1 个答案:

答案 0 :(得分:2)

right demo

这是对的。也许,你的输入是错的。就像这个〜wrong demo