如何解决具有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 举报,一经查实,本站将立刻删除。