Example #1
0
void main( )
{
	struct polynode *first, *second, *mult ;
	int i = 1 ;

	first = second = mult = NULL ;  /* empty linked lists */

	poly_append ( &first, 3, 5 ) ;
	poly_append ( &first, 2, 4 ) ;
	poly_append ( &first, 1, 2 ) ;

	display_poly ( first ) ;

	poly_append ( &second, 1, 6 ) ;
	poly_append ( &second, 2, 5 ) ;
	poly_append ( &second, 3, 4 ) ;

	printf ( "\n\n" ) ;
	display_poly ( second ) ;

	printf ( "\n" );
	while ( i++ < 79 )
		printf ( "-" ) ;

	poly_multiply ( first, second, &mult ) ;

	printf ( "\n\n" ) ;
	display_poly ( mult ) ;
}
Example #2
0
static void poly_edge_clip(poly sub, vec x0, vec x1, int left, poly res)
{
    int i, side0, side1;
    vec_t tmp;
    vec v0 = sub->v + sub->len - 1, v1;
    res->len = 0;
 
    side0 = left_of(x0, x1, v0);
    if (side0 != -left) poly_append(res, v0);
 
    for (i = 0; i < sub->len; i++) {
        v1 = sub->v + i;
        side1 = left_of(x0, x1, v1);
        if (side0 + side1 == 0 && side0)
            /* last point and current straddle the edge */
            if (line_sect(x0, x1, v0, v1, &tmp))
                poly_append(res, &tmp);
        if (i == sub->len - 1) break;
        if (side1 != -left) poly_append(res, v1);
        v0 = v1;
        side0 = side1;
    }
}
Example #3
0
int main( )
{
    struct polynode *first, *second, *total ;
    int i = 0 ;

    first = second = total = NULL ;  /* empty linked lists */

    poly_append ( &first, 1.4f, 5 ) ;
    poly_append ( &first, 1.5f, 4 ) ;
    poly_append ( &first, 1.7f, 2 ) ;
    poly_append ( &first, 1.8f, 1 ) ;
    poly_append ( &first, 1.9f, 0 ) ;

    system ( "cls" ) ;

    display_poly ( first ) ;

    poly_append ( &second, 1.5f, 6 ) ;
    poly_append ( &second, 2.5f, 5 ) ;
    poly_append ( &second, -3.5f, 4 ) ;
    poly_append ( &second, 4.5f, 3 ) ;
    poly_append ( &second, 6.5f, 1 ) ;

    printf ( "\n\n" ) ;
    display_poly ( second ) ;

    /* draws a dashed horizontal line */
    printf ( "\n" ) ;
    while ( i++ < 79 )
        printf ( "-" ) ;
    printf ( "\n\n" ) ;

    poly_add ( first, second, &total ) ;
    display_poly ( total ) ;  /* displays the resultant polynomial */
    return 0 ;
}