From: Gerardo H. <ma...@us...> - 2004-04-08 21:16:45
|
Update of /cvsroot/jrman/drafts/src/org/jrman/parser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11866/src/org/jrman/parser Modified Files: Parser.java Log Message: Refactored parameter selection. Index: Parser.java =================================================================== RCS file: /cvsroot/jrman/drafts/src/org/jrman/parser/Parser.java,v retrieving revision 1.80 retrieving revision 1.81 diff -C2 -d -r1.80 -r1.81 *** Parser.java 29 Mar 2004 16:47:30 -0000 1.80 --- Parser.java 8 Apr 2004 21:03:33 -0000 1.81 *************** *** 65,69 **** import org.jrman.parameters.UniformScalarInteger; import org.jrman.parameters.UniformScalarString; - import org.jrman.parameters.VaryingArrayFloat; import org.jrman.parameters.VaryingScalarFloat; import org.jrman.parameters.VaryingScalarTuple3f; --- 65,68 ---- *************** *** 970,991 **** else throw new IllegalArgumentException("Unknown v wrap type: " + vWrap); ! VaryingScalarTuple3f pParam = (VaryingScalarTuple3f) parameters.getParameter("P"); ! Point3f tmp = new Point3f(); for (int i = 0; i < nU; i++) for (int j = 0; j < nV; j++) { ! ParameterList nparameters = new ParameterList(parameters); ! nparameters.removeParameter("P"); ! VaryingScalarTuple3f npParam = ! new VaryingScalarTuple3f(pParam.getDeclaration(), new float[4 * 3]); ! pParam.getValue(evalIndex(i, nu, j, nv), tmp); ! npParam.setValue(0, tmp); ! pParam.getValue(evalIndex(i + 1, nu, j, nv), tmp); ! npParam.setValue(1, tmp); ! pParam.getValue(evalIndex(i, nu, j + 1, nv), tmp); ! npParam.setValue(2, tmp); ! pParam.getValue(evalIndex(i + 1, nu, j + 1, nv), tmp); ! npParam.setValue(3, tmp); ! nparameters.addParameter(npParam); ! addBilinearPatch(nparameters); } } --- 969,980 ---- else throw new IllegalArgumentException("Unknown v wrap type: " + vWrap); ! int[] indexes = new int[4]; for (int i = 0; i < nU; i++) for (int j = 0; j < nV; j++) { ! indexes[0] = evalIndex(i, nu, j, nv); ! indexes[1] = evalIndex(i + 1, nu, j, nv); ! indexes[2] = evalIndex(i, nu, j + 1, nv); ! indexes[3] = evalIndex(i + 1, nu, j + 1, nv); ! addBilinearPatch(parameters.selectValues(indexes)); } } *************** *** 997,1077 **** String vWrap, ParameterList parameters) { ! int uStep = currentAttributes.getUStep(); ! int nU; ! if (uWrap.equals("periodic")) ! nU = nu / uStep; ! else if (uWrap.equals("nonperiodic")) ! nU = (nu - 4) / uStep + 1; ! else ! throw new IllegalArgumentException("Unknown u wrap type: " + uWrap); ! int vStep = currentAttributes.getVStep(); ! int nV; ! if (vWrap.equals("periodic")) ! nV = nv / vStep; ! else if (uWrap.equals("nonperiodic")) ! nV = (nv - 4) / vStep + 1; ! else ! throw new IllegalArgumentException("Unknown v wrap type: " + vWrap); ! VaryingScalarTuple3f pParam = (VaryingScalarTuple3f) parameters.getParameter("P"); ! Point3f tmp = new Point3f(); ! int i = 0; ! for (int ii = 0; ii < nU; ii++) { ! int j = 0; ! for (int jj = 0; jj < nV; jj++) { ! ParameterList nparameters = new ParameterList(parameters); ! nparameters.removeParameter("P"); ! VaryingScalarTuple3f npParam = ! new VaryingScalarTuple3f(pParam.getDeclaration(), new float[16 * 3]); ! pParam.getValue(evalIndex(i, nu, j, nv), tmp); ! npParam.setValue(0, tmp); ! pParam.getValue(evalIndex(i + 1, nu, j, nv), tmp); ! npParam.setValue(1, tmp); ! pParam.getValue(evalIndex(i + 2, nu, j, nv), tmp); ! npParam.setValue(2, tmp); ! pParam.getValue(evalIndex(i + 3, nu, j, nv), tmp); ! npParam.setValue(3, tmp); ! pParam.getValue(evalIndex(i, nu, j + 1, nv), tmp); ! npParam.setValue(4, tmp); ! pParam.getValue(evalIndex(i + 1, nu, j + 1, nv), tmp); ! npParam.setValue(5, tmp); ! pParam.getValue(evalIndex(i + 2, nu, j + 1, nv), tmp); ! npParam.setValue(6, tmp); ! pParam.getValue(evalIndex(i + 3, nu, j + 1, nv), tmp); ! npParam.setValue(7, tmp); ! pParam.getValue(evalIndex(i, nu, j + 2, nv), tmp); ! npParam.setValue(8, tmp); ! pParam.getValue(evalIndex(i + 1, nu, j + 2, nv), tmp); ! npParam.setValue(9, tmp); ! pParam.getValue(evalIndex(i + 2, nu, j + 2, nv), tmp); ! npParam.setValue(10, tmp); ! pParam.getValue(evalIndex(i + 3, nu, j + 2, nv), tmp); ! npParam.setValue(11, tmp); ! pParam.getValue(evalIndex(i, nu, j + 3, nv) , tmp); ! npParam.setValue(12, tmp); ! pParam.getValue(evalIndex(i + 1, nu, j + 3, nv), tmp); ! npParam.setValue(13, tmp); ! pParam.getValue(evalIndex(i + 2, nu, j + 3, nv), tmp); ! npParam.setValue(14, tmp); ! pParam.getValue(evalIndex(i + 3, nu, j + 3, nv), tmp); ! npParam.setValue(15, tmp); ! nparameters.addParameter(npParam); ! addBicubicPatch(nparameters); ! j += vStep; ! } ! i += uStep; } } ! public void addNuPatch(final int nu, ! final int uorder, ! final float[] uknot, ! final float umin, ! final float umax, ! final int vu, ! final int vorder, ! final float[] vknot, ! final float vmin, ! final float vmax, ! final ParameterList parameterList) { if (inAreaLightSource) return; --- 986,1045 ---- String vWrap, ParameterList parameters) { ! int uStep = currentAttributes.getUStep(); ! int nU; ! if (uWrap.equals("periodic")) ! nU = nu / uStep; ! else if (uWrap.equals("nonperiodic")) ! nU = (nu - 4) / uStep + 1; ! else ! throw new IllegalArgumentException("Unknown u wrap type: " + uWrap); ! int vStep = currentAttributes.getVStep(); ! int nV; ! if (vWrap.equals("periodic")) ! nV = nv / vStep; ! else if (uWrap.equals("nonperiodic")) ! nV = (nv - 4) / vStep + 1; ! else ! throw new IllegalArgumentException("Unknown v wrap type: " + vWrap); ! int[] indexes = new int[16]; ! int i = 0; ! for (int ii = 0; ii < nU; ii++) { ! int j = 0; ! for (int jj = 0; jj < nV; jj++) { ! indexes[0] = evalIndex(i, nu, j, nv); ! indexes[1] = evalIndex(i + 1, nu, j, nv); ! indexes[2] = evalIndex(i + 2, nu, j, nv); ! indexes[3] = evalIndex(i + 3, nu, j, nv); ! indexes[4] = evalIndex(i, nu, j + 1, nv); ! indexes[5] = evalIndex(i + 1, nu, j + 1, nv); ! indexes[6] = evalIndex(i + 2, nu, j + 1, nv); ! indexes[7] = evalIndex(i + 3, nu, j + 1, nv); ! indexes[8] = evalIndex(i, nu, j + 2, nv); ! indexes[9] = evalIndex(i + 1, nu, j + 2, nv); ! indexes[10] = evalIndex(i + 2, nu, j + 2, nv); ! indexes[11] = evalIndex(i + 3, nu, j + 2, nv); ! indexes[12] = evalIndex(i, nu, j + 3, nv); ! indexes[13] = evalIndex(i + 1, nu, j + 3, nv); ! indexes[14] = evalIndex(i + 2, nu, j + 3, nv); ! indexes[15] = evalIndex(i + 3, nu, j + 3, nv); ! addBicubicPatch(parameters.selectValues(indexes)); ! j += vStep; } + i += uStep; + } } ! public void addNuPatch( ! final int nu, ! final int uorder, ! final float[] uknot, ! final float umin, ! final float umax, ! final int vu, ! final int vorder, ! final float[] vknot, ! final float vmin, ! final float vmax, ! final ParameterList parameterList) { if (inAreaLightSource) return; *************** *** 1083,1091 **** currentObjectInstanceList .addPrimitiveCreator(new ObjectInstanceList.PrimitiveCreator() { ! public Primitive create(Attributes attributes) { ! //NuPatch patch = ! //new NuPatch(parameters, createAttributes(transform, attributes)); ! //return patch; ! return null; } }); --- 1051,1059 ---- currentObjectInstanceList .addPrimitiveCreator(new ObjectInstanceList.PrimitiveCreator() { ! public Primitive create(Attributes attributes) { ! //NuPatch patch = ! //new NuPatch(parameters, createAttributes(transform, attributes)); ! //return patch; ! return null; } }); *************** *** 1119,1174 **** public void addPolygon(final ParameterList parameters) { VaryingScalarTuple3f pParam = (VaryingScalarTuple3f) parameters.getParameter("P"); ! VaryingArrayFloat stParam = (VaryingArrayFloat) parameters.getParameter("st"); ! VaryingScalarTuple3f nParam = (VaryingScalarTuple3f) parameters.getParameter("N"); ! Point3f point = new Point3f(); ! for (int i = 1; i < pParam.getCount() - 1; i += 1) { ! VaryingScalarTuple3f npParam = ! new VaryingScalarTuple3f(pParam.getDeclaration(), new float[4 * 3]); ! VaryingArrayFloat nstParam = null; ! if (stParam != null) ! nstParam = new VaryingArrayFloat(stParam.getDeclaration(), new float[4 * 2]); ! VaryingScalarTuple3f nnParam = null; ! if (nParam != null) ! nnParam = new VaryingScalarTuple3f(nParam.getDeclaration(), new float[4 * 3]); ! ParameterList newParameters = new ParameterList(parameters); ! pParam.getValue(0, point); ! npParam.setValue(0, point); ! pParam.getValue(i, point); ! npParam.setValue(1, point); ! pParam.getValue(0, point); ! npParam.setValue(2, point); ! pParam.getValue(i + 1, point); ! npParam.setValue(3, point); ! if (stParam != null) { ! nstParam.setValue(0, 0, stParam.getValue(0, 0)); ! nstParam.setValue(0, 1, stParam.getValue(0, 1)); ! nstParam.setValue(1, 0, stParam.getValue(i, 0)); ! nstParam.setValue(1, 1, stParam.getValue(i, 1)); ! nstParam.setValue(2, 0, stParam.getValue(0, 0)); ! nstParam.setValue(2, 1, stParam.getValue(0, 1)); ! nstParam.setValue(3, 0, stParam.getValue(i + 1, 0)); ! nstParam.setValue(3, 1, stParam.getValue(i + 1, 1)); ! } ! if (nParam != null) { ! nParam.getValue(0, point); ! nnParam.setValue(0, point); ! nParam.getValue(i, point); ! nnParam.setValue(1, point); ! nParam.getValue(0, point); ! nnParam.setValue(2, point); ! nParam.getValue(i + 1, point); ! nnParam.setValue(3, point); ! } ! newParameters.removeParameter(npParam.getDeclaration().getName()); ! newParameters.addParameter(npParam); ! if (stParam != null) { ! newParameters.removeParameter(stParam.getDeclaration().getName()); ! newParameters.addParameter(nstParam); ! } ! if (nParam != null) { ! newParameters.removeParameter(nnParam.getDeclaration().getName()); ! newParameters.addParameter(nnParam); ! } ! addBilinearPatch(newParameters); } } --- 1087,1095 ---- public void addPolygon(final ParameterList parameters) { VaryingScalarTuple3f pParam = (VaryingScalarTuple3f) parameters.getParameter("P"); ! int[] indexes = new int[] { 0, 0, 0, 0 }; ! for (int i = 1; i < pParam.getCount() - 1; i++) { ! indexes[1] = i; ! indexes[3] = i + 1; ! addBilinearPatch(parameters.selectValues(indexes)); } } |