各位帮帮忙。急用!我自己也改了的,但是指针在那里总是弄不好,请高手哥哥们帮帮忙呀!
c代码如下:
void TForm1::paowuxian(int * x, int * y, int n, unsigned int k)
{
unsigned int i,j;
float t1,t2,t3,t,a,b,c,d,tx,ty;
*x=*(x+1);*(y)=*(y+1);
*(x+n+1)=*(x+n);*(y+n+1)=*(y+n);
t=0.5/k;
//setcolor(10);
Canvas->MoveTo(*(x+1),*(y+1));
for(i=0;i<n-1;i++)
{
for(j=1;j<k;j++)
{
t1=j*t;
t2=t1*t1;
t3=t2*t1;
a=4*t2-t1-4*t3;
b=1-10*t2+12*t3;
c=t1+8*t2-12*t3;
d=4*t3-2*t2;
tx=a*(*(x+i))+b*(*(x+i+1))+c*(*(x+i+2))+d*(*(x+i+3));
ty=a*(*(y+i))+b*(*(y+i+1))+c*(*(y+i+2))+d*(*(y+i+3));
Canvas->LineTo(tx,ty);
}
}
Canvas->LineTo(*(x+i+2),*(y+i+2));}
void __fastcall TForm1::btn1Click(TObject *Sender)
{
int x[10];
int y[10];
x[0] = 0;
y[0] = 400;
x[1] = 60;
y[1] = 40;
x[2] = 120;
y[2] = 120;
x[3] = 180;
y[3] = 100;
x[4] = 240;
y[4] = 160;
x[5] = 300;
y[5] = 200;
x[6] = 360;
y[6] = 360;
x[7] = 400;
y[7] = 200;
x[8] = 480;
y[8] = 280;
x[9] = 540;
y[9] = 400;
Canvas->Pen->Color = clRed;
Canvas->MoveTo(x[0],y[0]);
for(int i=1;i<10;i++)
{
Canvas->LineTo(x[i],y[i]);
}
Canvas->Pen->Color = clBlue;
Canvas->MoveTo(x[0],y[0]);
paowuxian(x, y,8,100);
}
c代码如下:
void TForm1::paowuxian(int * x, int * y, int n, unsigned int k)
{
unsigned int i,j;
float t1,t2,t3,t,a,b,c,d,tx,ty;
*x=*(x+1);*(y)=*(y+1);
*(x+n+1)=*(x+n);*(y+n+1)=*(y+n);
t=0.5/k;
//setcolor(10);
Canvas->MoveTo(*(x+1),*(y+1));
for(i=0;i<n-1;i++)
{
for(j=1;j<k;j++)
{
t1=j*t;
t2=t1*t1;
t3=t2*t1;
a=4*t2-t1-4*t3;
b=1-10*t2+12*t3;
c=t1+8*t2-12*t3;
d=4*t3-2*t2;
tx=a*(*(x+i))+b*(*(x+i+1))+c*(*(x+i+2))+d*(*(x+i+3));
ty=a*(*(y+i))+b*(*(y+i+1))+c*(*(y+i+2))+d*(*(y+i+3));
Canvas->LineTo(tx,ty);
}
}
Canvas->LineTo(*(x+i+2),*(y+i+2));}
void __fastcall TForm1::btn1Click(TObject *Sender)
{
int x[10];
int y[10];
x[0] = 0;
y[0] = 400;
x[1] = 60;
y[1] = 40;
x[2] = 120;
y[2] = 120;
x[3] = 180;
y[3] = 100;
x[4] = 240;
y[4] = 160;
x[5] = 300;
y[5] = 200;
x[6] = 360;
y[6] = 360;
x[7] = 400;
y[7] = 200;
x[8] = 480;
y[8] = 280;
x[9] = 540;
y[9] = 400;
Canvas->Pen->Color = clRed;
Canvas->MoveTo(x[0],y[0]);
for(int i=1;i<10;i++)
{
Canvas->LineTo(x[i],y[i]);
}
Canvas->Pen->Color = clBlue;
Canvas->MoveTo(x[0],y[0]);
paowuxian(x, y,8,100);
}
解决方案 »
- SPCOMM控件做个例子却不好使,无法打开端口
- 双CPU 禁用一个CPU怎么实现?请高手指点
- win2000如何在局域網內訪問win2000 server域服務器中的一個共享目錄文件
- 将trichedit里的字保存到sql里为什么读出来以后当初设置好的字体大小没有保存进去?
- 关于Table的问题。100分求教。
- 100分提问:怎么样在RICHEDIT中插入表格
- 请问设置窗体什么属性可以不让程序最大化,和不让grid有左右滚动条移动
- 请问如何调用 ZLIB.DLL 呢?
- 关于新FORM的缺省值
- 听说borland不再发展delphi了,而转向bcb,不知是否正确?
- 求一个任意日期加上60天后得出年、月、日的算法
- 如何,在2个窗口中交换数据啊。
procedure TForm1.paowuxian(x: pinteger;y: pinteger;n: integer;k: Cardinal);
var
i,j: Cardinal;
t1,t2,t3,t,a,b,c,d,tx,ty: Single;
begin
x^:= Integer(Pointer((Integer(x) + sizeOf(integer) * 1))^);
y^ := Integer(Pointer((Integer(y) + sizeOf(integer) * 1))^);
Integer(Pointer(integer(x) + (n+1)*sizeOf(integer))^) := integer((Pointer(integer(x)+n))^);
Integer(Pointer(integer(y) + (n+1)*sizeOf(integer))^) := integer((Pointer(integer(y)+n))^);
t:=0.5 / k;
//setcolor(10);
Canvas.MoveTo(Integer(Pointer(integer(x)+sizeOf(integer)*1)^), Integer(Pointer(integer(y)+sizeOf(integer)*1)^));
for i:=0 to n-2 do
begin
for J:=1 to k-1 do
begin
t1:=j*t;
t2:=t1*t1;
t3:=t2*t1;
a:=4*t2-t1-4*t3;
b:=1-10*t2+12*t3;
c:=t1+8*t2-12*t3;
d:=4*t3-2*t2;
tx:= a*(Integer(Pointer(integer(x)+sizeOf(integer)*i)^))+
b*(Integer(Pointer(integer(x)+sizeOf(integer)*(i+1))^))+
c*(Integer(Pointer(integer(x)+sizeOf(integer)*(i+2))^))+
d*(Integer(Pointer(integer(x)+sizeOf(integer)*(i+3))^));
ty:= a*(Integer(Pointer(integer(y)+sizeOf(integer)*i)^))+
b*(Integer(Pointer(integer(y)+sizeOf(integer)*(i+1))^))+
c*(Integer(Pointer(integer(y)+sizeOf(integer)*(i+2))^))+
d*(Integer(Pointer(integer(y)+sizeOf(integer)*(i+3))^));
Canvas.LineTo(Trunc(tx),Trunc(ty));
end;
end;
Canvas.LineTo(Integer(Pointer(integer(x)+sizeOf(integer)*(i+2)^),
Integer(Pointer(integer(y)+sizeOf(integer)*(i+2))^));
end;
procedure TForm1.Button1Click(Sender: TObject);
var x: array[0..9] of integer;
y: array[0..9] of integer;
begin
x[0] := 0;
y[0] := 400;
x[1] := 60;
y[1] := 40;
x[2] := 120;
y[2] := 120;
x[3] := 180;
y[3] := 100;
x[4] := 240;
y[4] := 160;
x[5] := 300;
y[5] := 200;
x[6] := 360;
y[6] := 360;
x[7] := 400;
y[7] := 200;
x[8] := 480;
y[8] := 280;
x[9] := 540;
y[9] := 400;
Canvas.Pen.Color := clRed;
Canvas.MoveTo(x[0],y[0]);
for i:=1 to 9 do
begin
Canvas.LineTo(x[i],y[i]);
end;
Canvas.Pen.Color := clBlue;
Canvas.MoveTo(x[0],y[0]);
paowuxian(x, y,8,100);end;