計算兩條直線的交點–C語言

來源:互聯網
上載者:User

呵呵,有點急。。。

#include<stdio.h>

typedef struct point{
    int x;
    int y;
}point;

typedef struct line{
    point point1;
    point point2;
}line;

//計算兩條直線的交點
point getCross(line line1, line line2)
{
    point CrossP;
    //y = a * x + b;
    int a1 = (line1.point1.y - line1.point2.y) / (line1.point1.x - line1.point2.x);
    int b1 = line1.point1.y - a1 * (line1.point1.x);

    int a2 = (line2.point1.y - line2.point2.y) / (line2.point1.x - line2.point2.x);
    int b2 = line2.point1.y - a1 * (line2.point1.x);

    CrossP.x = (b1 - b2) / (a2 - a1);
    CrossP.y = a1 * CrossP.x + b1;
    return CrossP;
}

void main()
{
    line line1;
    line line2;

    //line1
    line1.point1.x = 10;
    line1.point1.y = 10;
    line1.point2.x = 50;
    line1.point2.y = 50;

    //line2
    line2.point1.x = 2;
    line2.point1.y = 60;
    line2.point2.x = 60;
    line2.point2.y = 0;

    point CointP = getCross(line1, line2);
    printf("%d,%d\n", CointP.x, CointP.y);

}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.