|
From: <kin...@us...> - 2004-02-10 04:40:18
|
Update of /cvsroot/teem/teem/src/limn/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8142/test Modified Files: off2eps.c soid.c tps.c Log Message: sorry, beginning debugging of limnObject re-write Index: off2eps.c =================================================================== RCS file: /cvsroot/teem/teem/src/limn/test/off2eps.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** off2eps.c 9 Feb 2004 07:02:04 -0000 1.1 --- off2eps.c 9 Feb 2004 22:48:01 -0000 1.2 *************** *** 30,39 **** hestOpt *hopt=NULL; airArray *mop; ! limnObj *obj; ! limnSP *sp; ! limnWin *win; Nrrd *nmap; FILE *file; ! int si, wire; mop = airMopNew(); --- 30,39 ---- hestOpt *hopt=NULL; airArray *mop; ! limnObject *obj; ! limnLook *look; int lookIdx; ! limnWindow *win; Nrrd *nmap; FILE *file; ! int wire, concave; mop = airMopNew(); *************** *** 65,68 **** --- 65,71 ---- hestOptAdd(&hopt, "wire", NULL, airTypeInt, 0, 0, &wire, NULL, "just do wire-frame rendering"); + hestOptAdd(&hopt, "concave", NULL, airTypeInt, 0, 0, &concave, NULL, + "use slightly buggy rendering method suitable for " + "concave or self-occluding objects"); hestOptAdd(&hopt, "wd", "5 widths", airTypeFloat, 5, 5, edgeWidth, "0.0 0.0 3.0 2.0 0.0", *************** *** 90,95 **** } ! obj = limnObjNew(10, AIR_TRUE); ! airMopAdd(mop, obj, (airMopper)limnObjNix, airMopAlways); if (!(file = airFopen(inS, stdin, "r"))) { fprintf(stderr, "%s: couldn't open \"%s\" for reading\n", me, inS); --- 93,98 ---- } ! obj = limnObjectNew(10, AIR_TRUE); ! airMopAdd(mop, obj, (airMopper)limnObjectNix, airMopAlways); if (!(file = airFopen(inS, stdin, "r"))) { fprintf(stderr, "%s: couldn't open \"%s\" for reading\n", me, inS); *************** *** 97,106 **** } airMopAdd(mop, file, (airMopper)airFclose, airMopAlways); ! si = airArrayIncrLen(obj->sA, 2); ! sp = obj->s + si + 0; ! ELL_4V_SET(sp->rgba, 1, 1, 1, 1); /* this is kind of silly */ ! ELL_3V_SET(sp->k, 0.2, 0.8, 0); ! sp->spec = 0; ! if (limnObjOFFRead(obj, file)) { airMopAdd(mop, err = biffGetDone(LIMN), airFree, airMopAlways); fprintf(stderr, "%s: trouble:\n%s\n", me, err); --- 100,109 ---- } airMopAdd(mop, file, (airMopper)airFclose, airMopAlways); ! lookIdx = airArrayIncrLen(obj->lookArr, 2); ! look = obj->look + lookIdx + 0; ! ELL_4V_SET(look->rgba, 1, 1, 1, 1); /* this is kind of silly */ ! ELL_3V_SET(look->kads, 0.2, 0.8, 0); ! look->spow = 0; ! if (limnObjectOFFRead(obj, file)) { airMopAdd(mop, err = biffGetDone(LIMN), airFree, airMopAlways); fprintf(stderr, "%s: trouble:\n%s\n", me, err); *************** *** 108,112 **** } ! win = limnWinNew(limnDevicePS); win->ps.lineWidth[limnEdgeTypeBackFacet] = edgeWidth[0]; win->ps.lineWidth[limnEdgeTypeBackCrease] = edgeWidth[1]; --- 111,115 ---- } ! win = limnWindowNew(limnDevicePS); win->ps.lineWidth[limnEdgeTypeBackFacet] = edgeWidth[0]; win->ps.lineWidth[limnEdgeTypeBackCrease] = edgeWidth[1]; *************** *** 119,127 **** win->file = airFopen(outS, stdout, "w"); ! airMopAdd(mop, win, (airMopper)limnWinNix, airMopAlways); win->scale = winscale; ! if (limnObjRender(obj, cam, win) ! || limnObjPSDraw(obj, cam, nmap, win)) { airMopAdd(mop, err = biffGetDone(LIMN), airFree, airMopAlways); fprintf(stderr, "%s: trouble:\n%s\n", me, err); --- 122,132 ---- win->file = airFopen(outS, stdout, "w"); ! airMopAdd(mop, win, (airMopper)limnWindowNix, airMopAlways); win->scale = winscale; ! if (limnObjectRender(obj, cam, win) ! || (concave ! ? limnObjectPSDrawConcave(obj, cam, nmap, win) ! : limnObjectPSDraw(obj, cam, nmap, win))) { airMopAdd(mop, err = biffGetDone(LIMN), airFree, airMopAlways); fprintf(stderr, "%s: trouble:\n%s\n", me, err); Index: soid.c =================================================================== RCS file: /cvsroot/teem/teem/src/limn/test/soid.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** soid.c 9 Feb 2004 07:05:33 -0000 1.6 --- soid.c 9 Feb 2004 22:48:01 -0000 1.7 *************** *** 54,64 **** char *me, *err, *outS; float p[3], q[4], mR[9], eval[3], len, sh, cl, cp, qA, qB; ! float matA[16], matB[16], os, sc[3], rad, edgeWidth[5]; hestOpt *hopt=NULL; airArray *mop; ! limnObj *obj; ! limnSP *sp; ! limnPart *r; ! int ri, si, res, axis, sphere; FILE *file; --- 54,64 ---- char *me, *err, *outS; float p[3], q[4], mR[9], eval[3], len, sh, cl, cp, qA, qB; ! float matA[16], matB[16], os, rad, edgeWidth[5]; hestOpt *hopt=NULL; airArray *mop; ! limnObject *obj; ! limnLook *look; int lookIdx; ! limnPart *part; int partIdx; ! int res, axis, sphere; FILE *file; *************** *** 68,72 **** edgeWidth[1] = 0; me = argv[0]; ! hestOptAdd(&hopt, "sc", "scalings", airTypeFloat, 3, 3, sc, "1 1 1", "axis-aligned scaling to do on ellipsoid"); hestOptAdd(&hopt, "os", "over-all scaling", airTypeFloat, 1, 1, &os, "1", --- 68,72 ---- edgeWidth[1] = 0; me = argv[0]; ! hestOptAdd(&hopt, "sc", "scalings", airTypeFloat, 3, 3, eval, "1 1 1", "axis-aligned scaling to do on ellipsoid"); hestOptAdd(&hopt, "os", "over-all scaling", airTypeFloat, 1, 1, &os, "1", *************** *** 90,106 **** airMopAdd(mop, hopt, (airMopper)hestParseFree, airMopAlways); ! obj = limnObjNew(10, AIR_TRUE); ! airMopAdd(mop, obj, (airMopper)limnObjNix, airMopAlways); ! /* create limnSPs for ellipsoid (#0) and for rods (#1) */ ! si = airArrayIncrLen(obj->sA, 2); ! sp = obj->s + si + 0; ! ELL_4V_SET(sp->rgba, 1, 1, 1, 1); ! ELL_3V_SET(sp->k, 0.2, 0.8, 0); ! sp->spec = 0; ! sp = obj->s + si + 1; ! ELL_4V_SET(sp->rgba, 0, 0, 0, 1); ! ELL_3V_SET(sp->k, 1, 0, 0); ! sp->spec = 0; q[0] = 1.0; --- 90,106 ---- airMopAdd(mop, hopt, (airMopper)hestParseFree, airMopAlways); ! obj = limnObjectNew(10, AIR_TRUE); ! airMopAdd(mop, obj, (airMopper)limnObjectNix, airMopAlways); ! /* create limnLooks for ellipsoid (#0) and for rods (#1) */ ! lookIdx = airArrayIncrLen(obj->lookArr, 2); ! look = obj->look + lookIdx + 0; ! ELL_4V_SET(look->rgba, 1, 1, 1, 1); ! ELL_3V_SET(look->kads, 0.2, 0.8, 0); ! look->spow = 0; ! look = obj->look + lookIdx + 1; ! ELL_4V_SET(look->rgba, 0, 0, 0, 1); ! ELL_3V_SET(look->kads, 1, 0, 0); ! look->spow = 0; q[0] = 1.0; *************** *** 112,126 **** washQtoM3(mR, q); ! sc[0] *= os; sc[1] *= os; sc[2] *= os; ! ELL_3V_COPY(eval, sc); ELL_SORT3(eval[0], eval[1], eval[2], cl); cl = (eval[0] - eval[1])/(eval[0] + eval[1] + eval[2]); cp = 2*(eval[1] - eval[2])/(eval[0] + eval[1] + eval[2]); if (cl > cp) { ! axis = ELL_MAX3_IDX(sc[0], sc[1], sc[2]); qA = pow(1-cp, sh); qB = pow(1-cl, sh); } else { ! axis = ELL_MIN3_IDX(sc[0], sc[1], sc[2]); qA = pow(1-cl, sh); qB = pow(1-cp, sh); --- 112,125 ---- washQtoM3(mR, q); ! ELL_3V_SCALE(eval, os, eval); ELL_SORT3(eval[0], eval[1], eval[2], cl); cl = (eval[0] - eval[1])/(eval[0] + eval[1] + eval[2]); cp = 2*(eval[1] - eval[2])/(eval[0] + eval[1] + eval[2]); if (cl > cp) { ! axis = ELL_MAX3_IDX(eval[0], eval[1], eval[2]); qA = pow(1-cp, sh); qB = pow(1-cl, sh); } else { ! axis = ELL_MIN3_IDX(eval[0], eval[1], eval[2]); qA = pow(1-cl, sh); qB = pow(1-cp, sh); *************** *** 130,200 **** if (sphere) { ! ri = limnObjPolarSphereAdd(obj, 0, 0, 2*res, res); } else { ! ri = limnObjPolarSuperquadAdd(obj, 0, axis, qA, qB, 2*res, res); } ! r = obj->r + ri; ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, sc[0], sc[1], sc[2]); ell_4m_post_mul_f(matA, matB); ELL_43M_INSET(matB, mR); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); if (rad) { ! ri = limnObjCylinderAdd(obj, 1, 0, res); ! r = obj->r + ri; ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, (1-sc[0])/2, rad, rad); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, (1+sc[0])/2, 0.0, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! ri = limnObjCylinderAdd(obj, 1, 0, res); ! r = obj->r + ri; ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, (1-sc[0])/2, rad, rad); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, -(1+sc[0])/2, 0.0, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! ! ri = limnObjCylinderAdd(obj, 1, 1, res); ! r = obj->r + ri; ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, rad, (1-sc[1])/2, rad); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, 0.0, (1+sc[1])/2, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! ri = limnObjCylinderAdd(obj, 1, 1, res); ! r = obj->r + ri; ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, rad, (1-sc[1])/2, rad); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, 0.0, -(1+sc[1])/2, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! ri = limnObjCylinderAdd(obj, 1, 2, res); ! r = obj->r + ri; ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, rad, rad, (1-sc[2])/2); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, 0.0, 0.0, (1+sc[2])/2); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! ri = limnObjCylinderAdd(obj, 1, 2, res); ! r = obj->r + ri; ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, rad, rad, (1-sc[2])/2); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, 0.0, 0.0, -(1+sc[2])/2); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); } --- 129,192 ---- if (sphere) { ! partIdx = limnObjectPolarSphereAdd(obj, 0, 0, 2*res, res); } else { ! partIdx = limnObjectPolarSuperquadAdd(obj, 0, axis, qA, qB, 2*res, res); } ! part = obj->part + partIdx; ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, eval[0], eval[1], eval[2]); ell_4m_post_mul_f(matA, matB); ELL_43M_INSET(matB, mR); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); if (rad) { ! partIdx = limnObjectCylinderAdd(obj, 1, 0, res); ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, (1-eval[0])/2, rad, rad); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, (1+eval[0])/2, 0.0, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! partIdx = limnObjectCylinderAdd(obj, 1, 0, res); ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, (1-eval[0])/2, rad, rad); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, -(1+eval[0])/2, 0.0, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! partIdx = limnObjectCylinderAdd(obj, 1, 1, res); ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, rad, (1-eval[1])/2, rad); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, 0.0, (1+eval[1])/2, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! partIdx = limnObjectCylinderAdd(obj, 1, 1, res); ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, rad, (1-eval[1])/2, rad); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, 0.0, -(1+eval[1])/2, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! partIdx = limnObjectCylinderAdd(obj, 1, 2, res); ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, rad, rad, (1-eval[2])/2); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, 0.0, 0.0, (1+eval[2])/2); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! partIdx = limnObjectCylinderAdd(obj, 1, 2, res); ELL_4M_IDENTITY_SET(matA); ! ELL_4M_SCALE_SET(matB, rad, rad, (1-eval[2])/2); ell_4m_post_mul_f(matA, matB); ! ELL_4M_TRANSLATE_SET(matB, 0.0, 0.0, -(1+eval[2])/2); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); } *************** *** 202,206 **** airMopAdd(mop, file, (airMopper)airFclose, airMopAlways); ! if (limnObjOFFWrite(file, obj)) { airMopAdd(mop, err = biffGetDone(LIMN), airFree, airMopAlways); fprintf(stderr, "%s: trouble:\n%s\n", me, err); --- 194,198 ---- airMopAdd(mop, file, (airMopper)airFclose, airMopAlways); ! if (limnObjectOFFWrite(file, obj)) { airMopAdd(mop, err = biffGetDone(LIMN), airFree, airMopAlways); fprintf(stderr, "%s: trouble:\n%s\n", me, err); Index: tps.c =================================================================== RCS file: /cvsroot/teem/teem/src/limn/test/tps.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** tps.c 7 Jan 2004 15:34:30 -0000 1.9 --- tps.c 9 Feb 2004 22:48:01 -0000 1.10 *************** *** 30,37 **** hestOpt *hopt=NULL; airArray *mop; ! limnObj *obj; ! limnSP *sp; ! limnWin *win; ! int ri, si; Nrrd *nmap; --- 30,37 ---- hestOpt *hopt=NULL; airArray *mop; ! limnObject *obj; ! limnLook *look; int lookIdx; ! limnWindow *win; ! int partIdx; Nrrd *nmap; *************** *** 75,135 **** return 1; } ! obj = limnObjNew(10, AIR_TRUE); ! airMopAdd(mop, obj, (airMopper)limnObjNix, airMopAlways); ! /* create limnSPs for diffuse (#0) and flat (#1) shading */ ! si = airArrayIncrLen(obj->sA, 2); ! sp = obj->s + si + 0; ! ELL_4V_SET(sp->rgba, 1, 1, 1, 1); ! ELL_3V_SET(sp->k, 0, 1, 0); ! sp->spec = 0; ! sp = obj->s + si + 1; ! ELL_4V_SET(sp->rgba, 1, 1, 1, 1); ! ELL_3V_SET(sp->k, 1, 0, 0); ! sp->spec = 0; ! ri = limnObjCylinderAdd(obj, 0, 0, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 1, 0.2, 0.2); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 1.3, 0.0, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! ri = limnObjCylinderAdd(obj, 0, 1, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 0.2, 1, 0.2); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 0.0, 1.3, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! ri = limnObjCylinderAdd(obj, 0, 2, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 0.2, 0.2, 1); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 0.0, 0.0, 1.3); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! ri = limnObjPolarSphereAdd(obj, 0, 0, 32, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 0.28, 0.28, 0.28); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 0.0, 2.6, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! ri = limnObjPolarSphereAdd(obj, 0, 1, 32, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 0.28, 0.28, 0.28); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 0.0, 0.0, 2.6); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! ri = limnObjPolarSphereAdd(obj, 0, 2, 32, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 0.28, 0.28, 0.28); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 0.0, 0.0, 3.2); ell_4m_post_mul_f(matA, matB); ! limnObjPartTransform(obj, ri, matA); ! win = limnWinNew(limnDevicePS); win->file = fopen(outS, "w"); ! airMopAdd(mop, win, (airMopper)limnWinNix, airMopAlways); ! if (limnObjRender(obj, cam, win) ! || limnObjPSDraw(obj, cam, nmap, win)) { airMopAdd(mop, err = biffGetDone(LIMN), airFree, airMopAlways); fprintf(stderr, "%s: trouble:\n%s\n", me, err); --- 75,135 ---- return 1; } ! obj = limnObjectNew(10, AIR_TRUE); ! airMopAdd(mop, obj, (airMopper)limnObjectNix, airMopAlways); ! /* create limnLooks for diffuse (#0) and flat (#1) shading */ ! lookIdx = airArrayIncrLen(obj->lookArr, 2); ! look = obj->look + lookIdx + 0; ! ELL_4V_SET(look->rgba, 1, 1, 1, 1); ! ELL_3V_SET(look->kads, 0, 1, 0); ! look->spow = 0; ! look = obj->look + lookIdx + 1; ! ELL_4V_SET(look->rgba, 1, 1, 1, 1); ! ELL_3V_SET(look->kads, 1, 0, 0); ! look->spow = 0; ! partIdx = limnObjectCylinderAdd(obj, 0, 0, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 1, 0.2, 0.2); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 1.3, 0.0, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! partIdx = limnObjectCylinderAdd(obj, 0, 1, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 0.2, 1, 0.2); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 0.0, 1.3, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! partIdx = limnObjectCylinderAdd(obj, 0, 2, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 0.2, 0.2, 1); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 0.0, 0.0, 1.3); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! partIdx = limnObjectPolarSphereAdd(obj, 0, 0, 32, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 0.28, 0.28, 0.28); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 0.0, 2.6, 0.0); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! partIdx = limnObjectPolarSphereAdd(obj, 0, 1, 32, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 0.28, 0.28, 0.28); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 0.0, 0.0, 2.6); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! partIdx = limnObjectPolarSphereAdd(obj, 0, 2, 32, 16); ELL_4M_IDENTITY_SET(matA); ELL_4M_SCALE_SET(matB, 0.28, 0.28, 0.28); ell_4m_post_mul_f(matA, matB); ELL_4M_TRANSLATE_SET(matB, 0.0, 0.0, 3.2); ell_4m_post_mul_f(matA, matB); ! limnObjectPartTransform(obj, partIdx, matA); ! win = limnWindowNew(limnDevicePS); win->file = fopen(outS, "w"); ! airMopAdd(mop, win, (airMopper)limnWindowNix, airMopAlways); ! if (limnObjectRender(obj, cam, win) ! || limnObjectPSDraw(obj, cam, nmap, win)) { airMopAdd(mop, err = biffGetDone(LIMN), airFree, airMopAlways); fprintf(stderr, "%s: trouble:\n%s\n", me, err); |