- 注册时间
- 2004-9-23
- 最后登录
- 1970-1-1
|
注意:公式中的tx不能等于k。
综上所述:你要的程序就可以这么写:
void main()
{
int x,y;//定义二次函数图象轨迹坐标
int k,h;//定义二次函数图象顶点坐标
int tx,ty;//定义二次函数图象起点坐标
int p,q;//定义公式中a的分子与分母
tx=0;ty=80;//给图象起点赋值,修改这个值可以产生不同的图象
k=80;h=0;//给图象顶点赋值,要注意k不能等于tx
p=ty-h;//求a的分子
q=(tx-k)*(tx-k);//求a的分母
for(x=tx;x<=160;x++)//让自变量x从起点横坐标开始循环至屏幕最右边
{
y=((x-k)*(x-k))*p/q+h;//求变量y的值
Point(x,y,1);//画点
}
getchar();
}
运行结果:
下面的程序可以产生小球跳跃的效果,下来你复制到LAVAX3.5IDE里编译测试一下:
#width 320
#height 240
void main()
{
int mx,my,mz;
int x,y;//定义二次函数图象轨迹坐标
int k,h;//定义二次函数图象顶点坐标
int tx,ty;//定义二次函数图象起点坐标
int p,q;//定义公式中a的分子与分母
mx=320;
my=240;
mz=230;
tx=0;ty=235;//给图象起点赋值,修改这个值可以产生不同的图象
k=80;h=5;//给图象顶点赋值,要注意k不能等于tx
p=ty-h;//求a的分子
q=(tx-k)*(tx-k);//求a的分母
x=tx;
for(;;)
{
for(;x<315;x++)//让自变量x从起点横坐标开始循环至屏幕最右边
{
ClearScreen();
Refresh();
y=((x-k)*(x-k))*p/q+h;//求变量y的值
Circle(x,y,4,1,1);//画图
Delay(10);
if(x==k*2-tx)break;
}
if(x==315)break;
mx=mx/2;
my=my/2;
mz=mz/2;
tx=tx+mx;ty=235;//给图象起点赋值,修改这个值可以产生不同的图象
k=k+my;h=h+mz;//给图象顶点赋值,要注意k不能等于tx
p=ty-h;//求a的分子
q=(tx-k)*(tx-k);//求a的分母
if(q==0)break;
}
getchar();
}
[ 本帖最后由 wqstar028 于 2008-3-27 10:58 编辑 ] |
|