具有graphics.h c ++

问题描述

我试图用B样条曲线绘制曲线。我对什么是B样条以及如何在程序算法中使用它进行了研究。在完成所有这些工作之后,我终于找到了在Stack Overflow中实现此目的的代码。我对此代码做了一些更改,并尝试在我的程序中使用。它有效,但是我有两个问题。

首先,曲线的形状正确,但位置不正确。就像应该有20-40像素的差异。

第二部分是在函数的最后一部分,我将x和y的两个结果除以一个数字,但似乎(除数)在所有情况下都必须更改。

最后,如您所见,它可用于6个坐标。

如何绑定坐标数以除数并将固定翻转固定在样条线上?

PS:我需要用C编写该代码

这是我的代码的功能:

1-这是我的B样条计算函数:

void BSplineCurve(const Dot& point1,const Dot& point2,const Dot& point3,const Dot& point4,Dot& result,const double t)
{

    const double t2 = t * t;
    const double t3 = t2 * t;
    const double mt = 1.0 - t;
    const double mt3 = mt * mt * mt;

    const double bi3 = mt3;
    const double bi2 = 3 * t3 - 6 * t2 + 4;
    const double bi1 = -3 * t3 + 3 * t2 + 3 * t + 1;
    const double bi = t3;

    result.x = point1.x * bi3 + point2.x * bi2 + point3.x * bi1 + point4.x * bi;
    result.x /= 4;

    result.y = point1.y * bi3 + point2.y * bi2 + point3.y * bi1 + point4.y * bi;
    result.y /= 4;
}

2-那是我的绘画功能:

Dot points[6] = {ControlPoint1,ControlPoint2,ControlPoint3,ControlPoint4,ControlPoint5,ControlPoint6}; 
for(double t = 5.9999;t > 2.0; t -= 0.001)
{
    const int start = static_cast<int>(t)+1;
    BSplineCurve(points[start -3 ],points[start - 2],points[start - 1],points[start ],DrawCurve,start - t);
    Draw1Dot(DrawCurve,points[0],distanceToEdges);}

3-最后是我的Draw pixel函数:

void Draw1Dot(Dot Koor,Dot mesafe,int ortala)
{

    putpixel(mesafe.x + Koor.x + ortala,mesafe.y + Koor.y + ortala,3);
}

您能帮助我了解我在做什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...