各位大虾:  
     帮帮忙拉,小弟我作毕业设计 ,如何实现画贝塞尔曲线曲面亚!!

解决方案 »

  1.   

    var
      a :array [0..3] of TPoint;
    begin
      a[0].x :=10;
      a[0].y :=10;
      a[1].x :=50;
      a[1].y :=40;
      a[2].x :=80;
      a[2].y :=90;
      a[3].x :=200;
      a[3].y :=150;
      Canvas.PolyBezier(@a[0]);
    end;
      

  2.   

    Bezier有很多种,给你一段代码
    是在TChart里分段绘制Bezier的,每段四个控制点
    参数1:所有的控制点坐标
    参数2:插值数
    type
      TXYValue  =record
                 X, Y :Double;  end;  procedure Bezier(CtrlPoints :array of TXYValue; const Seg :Integer=20);           
       var
         T,               
         T1 ,            
         T2,            
         T3,              
         T3_1 : Double;   
         P :TXYValue;     
         I ,Index,
         BezierCount ,   
         Step :Integer;
       begin
         BezierCount := (Length(CtrlPoints)-1) div 3;
         if BezierCount >0 then
         begin
           for Index :=0 to BezierCount-1 do
           begin
             for  I:=1 to Seg do
             begin
               T :=I/Seg;
               T1 := 1 -T;
               T2 := T1 * T1;
               T3 := T * T * T;
               T3_1 := T1 *T1 *T1;
               Step :=Index *3;   { 每段的开始点Step与该段的序号Index关系 : Step :=3 *Index }
               P.X := T3_1 * CtrlPoints[Step] .X +
                      3 * T * T2 * CtrlPoints[Step+1].X +
                      3 * T * T  * T1 * CtrlPoints[Step+2].X +
                      T3 * CtrlPoints[Step+3].X ;
     
               P.Y := T3_1 * CtrlPoints[Step].Y +
                      3* T * T2 * CtrlPoints[Step+1].Y +
                      3 *T * T * T1 * CtrlPoints[Step+2].Y +
                      T3 * CtrlPoints[Step+3].Y ;           Chart1.Series[0].AddXY(P.X, P.Y,'',clblack);
            end;   { for I}
          end; {for Index }
       end;    {if}
       Chart1.Update;
     end;