posts - 2,comments - 1,trackbacks - 0
    void sovle()
    
{
        
this->turn_back();
        polygon a, b;
        
int i, j, k;
        point tmp; 
        p[n] 
= p[0];
        point p1( 
0 , 0 ), p2( 0 , 0 );
        
for ( i = 0 ; i < n ; i ++ )
        
{
            
if ( p[i].y >= 0 )
                a.add( p[i] );
            
if ( p[i].y <= 0 )
                b.add( p[i] );
            
if( sig( p[i].y * p[i + 1 ].y ) < 0 )
            
{
                tmp.x 
= p[i].x + ( p[i].y /( p[i].y - p[i+1].y ))*( p[i+1].x - p[i].x );
                
// 如此可包含 + - 号的问题 
                tmp.y = 0;
                a.add( tmp );
                b.add( tmp );
            }

        }

        p1 
= a.poly_centroid();
        p2 
= b.poly_centroid();
        
        
if ( sig( p1.x - p2.x ) == 0 )
            printf(
"Balanced.\n");
        
else if ( sig ( p1.x - p2.x ) < 0 )
            printf(
"CE is aft of CLR by %.2lf units.\n",fabs(p1.x-p2.x));
        
else
            printf(
"CE is forward of CLR by %.2lf units.\n",fabs(p1.x-p2.x));
    }

int main()
{
    polygon poly;
    
    
while( poly.read() != EOF )
    
{
        poly.sovle();
    }

    
return 0;
}
 
posted on 2009-08-28 17:59 Huicpc217 阅读(95) 评论(0)  编辑 收藏 引用 所属分类: 计算几何

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理