示例#1
0
文件: cheq.c 项目: cheque/s3d
int main(int argc, char **argv)
{
  int i;
  Real x0, x1, y0, y1, z0, z1;
  Vector3 v1, v2, v3, v4, v5, v6, v7, v8;
  Hpoly *quad[2], *hplist = NULL;

  x0 = -5;  x1 = 5;
  y0 = -2;  y1 = 2;
  z0 = -5;  z1 = 5;

  v1 = v3_make(x0, y0, z0);
  v2 = v3_make(x1, y0, z0);
  v3 = v3_make(x1, y0, z1);
  v4 = v3_make(x0, y0, z1);

  quad[0] = poly3_make(v2, v1, v3);
  quad[1] = poly3_make(v3, v1, v4);

  for (i = 0; i < 2; i++)
    hplist = poly_insert(hplist, quad[i]);

  hplist = hplist_refine(hplist, 0.0, 1);
    
  // trilist_write(plist, stdout);

  exit(1);
}
示例#2
0
void main()
{
	int n,num1,num2,i;
	node *head1=NULL,*head2=NULL,*head3=NULL;
	clrscr();

	printf("FIRST POLYNOMIAL EXPRESSION ::");
	printf("\n---------------------------\n\n");
	printf("ENTER HOW MANY NO.OF TERM YOU WANT TO GIVE :");
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		printf("\nENTER COEFFICIENT AND EXPONENT OF A TERM :");
		scanf("%d",&num1);
		scanf("%d",&num2);
		poly_insert(num1,num2,&head1);
	}
	poly_reverse(&head1);
	poly_display(&head1);

	printf("\n\nSECOND POLYNOMIAL EXPRESSION ::");
	printf("\n----------------------------\n\n");
	printf("ENTER HOW MANY NO.OF TERM YOU WANT TO GIVE :");
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		printf("\nENTER COEFFICIENT AND EXPONENT OF A TERM :");
		scanf("%d",&num1);
		scanf("%d",&num2);
		poly_insert(num1,num2,&head2);
	}
	poly_reverse(&head2);
	poly_display(&head2);

	poly_mul(&head1,&head2,&head3);

	printf("\n\nAFTER MULTIPLICATION POLYNOMIAL EXPRESSION ::");
	printf("\n------------------------------------------");
	poly_display(&head3);

	getch();

}
示例#3
0
文件: affine.c 项目: mattjakob/s3d
Poly *gener_affine(int n, Vector3 *g, int m, Matrix4 *h)
{
  int u, v;
  Poly *tl = NULL;
  Vector3 *a = NEWARRAY(n, Vector3);
  Vector3 *b = NEWARRAY(n, Vector3);

  for (v = 0; v < m; v++) {
    for (u = 0; u < n; u++) {
      b[u] = v3_m4mult(g[u], h[v]);
      if (u == 0 || v == 0)
	continue;
      tl = poly_insert(tl, poly3_make(a[u-1], a[u], b[u-1]));
      tl = poly_insert(tl, poly3_make(a[u], b[u], b[u-1]));
    }
    SWAP(a, b, Vector3 *);
  }
  efree(a); efree(b);
  return tl;
}
示例#4
0
void poly_add(node **Hpoly1,node **Hpoly2,node **Hpoly3)
{
	node *temp,*temp1,*temp2;
	temp1=*Hpoly1;
	temp2=*Hpoly2;
	while(temp1!=NULL && temp2!=NULL)
	{
		if(temp1->expn==temp2->expn)
		{
			if(temp1->coeff+temp2->coeff!=0)
				poly_insert(temp1->coeff+temp2->coeff,temp1->expn,&*Hpoly3);
			temp1=temp1->next;
			temp2=temp2->next;
		}
		else if(temp1->expn>temp2->expn)
		{
			poly_insert(temp1->coeff,temp1->expn,&*Hpoly3);
			temp1=temp1->next;
		}
		else
		{
			poly_insert(temp2->coeff,temp2->expn,&*Hpoly3);
			temp2=temp2->next;
		}
	}
	while(temp1!=NULL)
	{
		poly_insert(temp1->coeff,temp1->expn,&*Hpoly3);
		temp1=temp1->next;
	}
	while(temp2!=NULL)
	{
		poly_insert(temp2->coeff,temp2->expn,&*Hpoly3);
		temp2=temp2->next;
	}
}
示例#5
0
文件: mesh.c 项目: mattjakob/s3d
static void tri_refine(Vector3 v0, Vector3 v1, Vector3 v2, Real s, int maxrec)
{
    Real l1 = v3_norm(v3_sub(v0, v1));
    Real l2 = v3_norm(v3_sub(v1, v2));
    Real l3 = v3_norm(v3_sub(v2, v0));

    if ((MAX(l1, MAX(l2, l3))) <= s || --maxrec < 0) {
        plist = poly_insert(plist, poly3_make(v0, v1, v2));
    } else {
        Vector3 m1 = v3_scale(0.5, v3_add(v0, v1));
        Vector3 m2 = v3_scale(0.5, v3_add(v1, v2));
        Vector3 m3 = v3_scale(0.5, v3_add(v2, v0));

        tri_refine(m1, v1, m2, s, maxrec);
        tri_refine(m2, v2, m3, s, maxrec);
        tri_refine(m3, v0, m1, s, maxrec);
        tri_refine(m1, m2, m3, s, maxrec);
    }
}