您的位置:首页 > 其它

两点之间插值成一条直线

2017-11-29 09:55 1696 查看
自己写的代码,以直线方程式为基础,记录一下,以备后用

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 );//插值所得点
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐