两点之间插值成一条直线

自己写的代码,以直线方程式为基础,记录一下,以备后用

    int X0 = PrePoint.X();
    int Y0 = PrePoint.Y();

    int X1 = CurPoint.X();
    int Y1 = CurPoint.Y();
    int nDisX = abs(X1-X0);
    int nDisY = abs(Y1-Y0);
    if (nDisX >= nDisY)//如果x轴方向距离较远,则以x轴坐标计算步长
    {
        if (X0 == X1)
        {
            return;
        }

        double StepLength = 0;
        if (X0 > X1)
        {
            StepLength = -0.4;
        }
        else
        {
            StepLength = 0.4;
        }
        double XTemp = X0+StepLength;
        for( ; X0>X1?XTemp>X1:XTemp<X1;XTemp += StepLength)
        { 
            double YTemp = 1.0*(Y1-Y0)/(X1-X0)*(XTemp-X0)+Y0;
            QPoint TargetPoint(XTemp ,YTemp );//插值所得点
        }
    }
    else //如果y轴方向距离较远,则以y轴坐标计算步长
    {
        double StepLength = 0;
        if (Y0 > Y1)
        {
            StepLength = -0.4;
        }
        else
        {
            StepLength = 0.4;
        }

        double YTemp = Y0+StepLength;
        for ( ; Y0>Y1? YTemp>Y1:YTemp<Y1; YTemp += StepLength)
        {
            double XTemp = 1.0*(YTemp-Y0)*(X1-X0)/(Y1-Y0)+X0;
            QPoint TargetPoint(XTemp ,YTemp );//插值所得点            
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

COSummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值