求位于同一平面内的两条直线的交点

  1. #include <tchar.h>
    #include <iostream>
    #include <math.h>
    using namespace std;
    
    struct Point
    {
        Point()
        {
            dX = 0.0;
            dY = 0.0;
        }
        double dX;
        double dY;
    };
    
    //    第一条直线式:a11X + a12Y = b1
    //    第二条直线式:a21X + a22Y = b2
    //    利用行列式计算交点
    //    返回值 true -- 函数执行成功, false -- 函数执行失败(两条直线平行)
    bool BeeLineInterSection(double da11, double da12, double db1, double da21, double da22, double db2, Point& PtInterSection)
    {
        double dD = da11 * da22 - da21 * da12;
        if (fabs(dD) < 0.0001)
        {
            return false;
        }
    
        double dD1 = db1 * da22 - db2 * da12;
        double dD2 = da11 * db2 - da21 * db1;
        PtInterSection.dX = dD1 / dD;
        PtInterSection.dX = dD2 / dD;
        return true;
    }
    
    int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
    {
        /* 计算下列两个直线的交点
        X + 3Y = 1
        2X - 4Y = 5
        */
    
        Point PtResult;
        if(BeeLineInterSection(1, 3, 1, 2, -4, 5, PtResult))
        {
            cout << PtResult.dX << _T(" ") << PtResult.dY << endl;
        }
        else
        {
            cout << _T("两条直线没有交点") << endl;
        }
        return 0;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值