复制内容到剪贴板
代码:
#include <iostream>
#include <math.h>
using namespace std;
int main (int argc, char *argv[])
{
float x1,x2,x3,x4,y1,y2,y3,y4,x,y,t,d;
cout << "输入起点 x1:" <<endl;
cin >> x1;
cout << "输入起点 y1:" <<endl;
cin >> y1;
system("cls");
cout << "输入控制点 x2:" <<endl;
cin >> x2;
cout << "输入控制点 y2:" <<endl;
cin >> y2;
system("cls");
cout << "输入控制点 x3:" <<endl;
cin >> x3;
cout << "输入控制点 y3:" <<endl;
cin >> y3;
system("cls");
cout << "输入终点 x4:" <<endl;
cin >> x4;
cout << "输入终点 y4:" <<endl;
cin >> y4;
system("cls");
cout << "输入点集精度值:" <<endl;
cin >> d;
system("cls");
t=0;
while(t<=1+d){
x=pow((1-t),3)*x1+3*t*pow((1-t),2)*x2+3*pow(t,2)*(1-t)*x3+pow(t,3)*x4;
y=pow((1-t),3)*y1+3*t*pow((1-t),2)*y2+3*pow(t,2)*(1-t)*y3+pow(t,3)*y4;
cout << "(" << x << "," << y << ")" << endl;
t+=d;
}
system("pause");
return 0;
}
以上为程序代码
输入的数据是
复制内容到剪贴板
代码:
x1=0;
y1=0;
x5=1;
y5=5;
x3=2;
y3=5;
x4=4;
y4=0;
0.1
结果是
复制内容到剪贴板
代码:
(0,0)
(0.301,1.35)
(0.608,2.4)
(0.927,3.15)
(1.264,3.6)
(1.625,3.75)
(2.016,3.6)
(2.443,3.15)
(2.912,2.4)
(3.429,1.35)
(4,-1.78814e-006)
请按任意键继续. . .
问题出现在最后一个坐标上。按理计算结果应该是(4,0),可是Y值居然是个浮点数……这叫我很疑惑。。
希望有牛人解答。
*使用Dev-C++4.9.9.2