| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 565 人关注过本帖
标题:请教高手 BEZIER曲线 程序问题
只看楼主 加入收藏
onizukafz
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-11-15
结帖率:66.67%
收藏
 问题点数:0 回复次数:0 
请教高手 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 ;
}
搜索更多相关主题的帖子: 曲线 BEZIER 
2009-11-15 15:10
快速回复:请教高手 BEZIER曲线 程序问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021420 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved