示例#1
0
文件: cylin.c 项目: cheque/s3d
iMesh *cylin_uv_decomp(Prim *p, Real level)
{
  int i, j, nu = 20 * level, nv = 20 * level;
  Real u, v, iu = ULEN/(Real)nu, iv = VLEN/(Real)nv;
  Vector3 *pts = NEWARRAY((nu+3)*(nv+1), Vector3);
  Vector3 *pvals = NEWARRAY((nu+3)*(nv+1), Vector3);
  iTri *tl = NULL;
  iMesh *m = NULL;

  for (u = UMIN - iu, i = 0; i <= nu+2; u += iu, i++) {
    for (v = VMIN, j = 0; j <= nv; v += iv, j++) {
      pts[IDX2(i,j,nu+3)] = v3_make(u,v,0);
      pvals[IDX2(i,j,nu+3)] = prim_point(p,u,v);
    }
  }
  m = imesh_alloc((nu+3) * (nv+1), NULL, NULL);
  m->m = pts;
  m->p = pvals;
  for (i = 0; i < nu+2; i++) {
    for (j = 0; j < nv; j++) {
      tl = itri_insert(tl,
		       itri_make(IDX2(i,j,nu+3),IDX2(i,j+1,nu+3),IDX2(i+1,j,nu+3), m));
      tl = itri_insert(tl,
		       itri_make(IDX2(i+1,j+1,nu+3),IDX2(i+1,j,nu+3),IDX2(i,j+1,nu+3), m));
    }
  }
  m->t = tl;
  return m;
}
示例#2
0
LEG* New_LEG(int size){
	 LEG *newLEG = malloc(sizeof(LEG));
	    assert(newLEG != NULL);
	NEWARRAY(newLEG->L,size);
	NEWARRAY(newLEG->E,size);
	NEWARRAY(newLEG->G,size);
	return newLEG;
}
示例#3
0
文件: hpoly.c 项目: mattjakob/s3d
Hpoly *hpoly_alloc(int n)
{
  Hpoly *p = NEWSTRUCT(Hpoly);
  p->n = n;
  p->v = NEWARRAY(n, Vector4);
  return p;
}
示例#4
0
文件: affine.c 项目: mattjakob/s3d
Matrix4 *affine_group(int l, int m, char *t, Real **p)
{
  int v;
  Matrix4 *h = NEWARRAY(m, Matrix4);
  for (v = 0; v < m; v++)
    h[v] = m4_compxform(l, t, p, v);
  return h;
}
示例#5
0
文件: stack.c 项目: mattjakob/s3d
Stack4 *s4_initstack(int size)
{
  int i;
  Matrix4 *m;
  Stack4 *s  = NEWSTRUCT(Stack4);
  
  s->size = size;
  s->mbot = NEWARRAY(size, Matrix4);
  s->ibot = NEWARRAY(size, Matrix4);

  for (m = s->mbot, i = 0; i < s->size; i++)
    *m++ = m4_ident();
  for (m = s->ibot, i = 0; i < s->size; i++)
    *m++ = m4_ident();

  s->mtop = s->mbot;
  s->itop = s->ibot;

  return s;
}
示例#6
0
文件: gc.c 项目: ajpaparelli/ecucsci
void initialize_gc(void)
{
	int x;
	astMem = NEWARRAY(AST, AST_MEM_SIZE);

	for(x = 0; x < AST_MEM_SIZE; x++)
	{
		astMem[x] = NEW(ASTNODE);
		freelist = addFreeNode(freelist,astMem[x]);
	}
}
示例#7
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;
}
示例#8
0
wxVariant
LuaInputStream::Read()
{
	wxVariant res;
	int type = (unsigned char)m_is->GetC();
	switch (type)
	{
		case TYPE_BOOLEAN:
			res = (m_is->GetC() == 0) ? false : true;
			break;
		case TYPE_TRUE:
			res = true;
			break;
		case TYPE_FALSE:
			res = false;
			break;
		case TYPE_NUMBER:
		{
			double d;
			m_is->Read((void *)&d, sizeof(d));
			res = d;
			break;
		}
		case TYPE_BYTE:
		{
			tchar_t b;
			m_is->Read((void *)&b, sizeof(b));
			res = (long)b;
			break;
		}
		case TYPE_WORD:
		{
			short w;
			m_is->Read((void *)&w, sizeof(w));
			res = (long)w;
			break;
		}
		case TYPE_INT:
		case TYPE_DWORD:
		{
			int i;
			m_is->Read((void *)&i, sizeof(i));
			res = (long)i;
			break;
		}
		case TYPE_STRING:
		{
			int len;
			m_is->Read((void *)&len, sizeof(len));
			tchar_t *str = NEWARRAY(tchar_t, len + 1);
			m_is->Read((void *)str, len);
			str[len] = 0;
			res = str;
			DESTROYARRAY(str);
			break;
		}
		case TYPE_STRING2:
		{
			int len = (int)ReadNumber();
			tchar_t *str = NEWARRAY(tchar_t, len + 1);
			m_is->Read((void *)str, len);
			str[len] = 0;
			res = str;
			DESTROYARRAY(str);
			break;
		}
		default:
			if (type >= TYPE_STR_0 && type <= TYPE_STR_127)
			{
				int len = type - TYPE_STR_0;
				tchar_t *str = NEWARRAY(tchar_t, len + 1);
				m_is->Read((void *)str, len);
				str[len] = 0;
				res = str;
				DESTROYARRAY(str);
				break;
			}
			break;
	}
	return res;
}