请教高手 BEZIER曲线 程序问题
我在学校写这个程序写到这里老是有错误出现找不到问题出现在哪 请高手赐教 谢谢
#define MINLEN 8 // 最小値の2乗の値を定義しておく。
void DrawLine( int x1 , int y1 , int x2 , int y2 );
void DrawCurve( int xs , int ys , int x2 , int y2 , int x3 , int y3 , int xe , int ye )
{
int len1,len2,len3;
int xdiff , ydiff ;
int xs2 , ys2 , x23 , y23 , x3e , y3e ;
int xs223 ,ys223 ;
int x233e ,y233e ;
int xp , yp ;
// ピタゴラスの定理を用いて3辺の長さを求める。(実際は長さの2乗でよい)
xdiff = x2 - xs ; xdiff = xdiff * xdiff ; ydiff = y2 - ys ; ydiff = ydiff * ydiff ;
len1 = xdiff + ydiff ;
xdiff = x3 - x2 ; xdiff = xdiff * xdiff ; ydiff = y3 - y2 ; ydiff = ydiff * ydiff ;
len2 = xdiff + ydiff ;
xdiff = xe - x3 ; xdiff = xdiff * xdiff ; ydiff = ye - y3 ; ydiff = ydiff * ydiff ;
len3 = xdiff + ydiff ;
// 3辺とも長さが指定された値より小さい時には3辺を描画して再帰を終了する
if ( len1 <= MINLEN && len2 <= MINILEN && len3 <=MINILEN )
{
DrawLine( xs , ys , x2 , y2 );
DrawLine( x2 , y2 , x3 , y3 );
DrawLine( x3 , y3 , xe , ye );
return ;
}
// 2つの台形に分割するために、3つの中点座標を求める。
xs2 = ( xs + x2 ) / 2 ; ys2 = ( ys + y2 ) / 2 ;
x23 = ( x2 + x3 ) / 2 ; y23 = ( y2 + y3 ) / 2 ;
x3e = ( x3 + xe ) / 2 ; y3e = ( y3 + ye ) / 2 ;
// さらに、中点間を結んだ直線の中点を求める。
xs223 = ( xs2 + x23 ) / 2 ; ys223 = ( ys2 + y23 ) / 2 ;
x233e = ( x23 + x3e ) / 2 ; y233e = ( y23 + y3e ) / 2 ;
// この2点を結んだ直線の中点を求める。
xp = ( xs223 + x233e ) / 2 ; yp = ( ys223 + y233e ) / 2 ;
// 左側の台形を再帰呼び出しする。
DrawCurve( xs , ys , xs2 , ys2 , xs223 , ys223 , xp , yp );
// 右側の台形を再帰呼び出しする。
DrawCurve( xp , yp , x233e , y233e , x3e , y3e , xe , ye );
return ;
}