From: Gerardo H. <ma...@us...> - 2007-02-04 06:27:16
|
Update of /cvsroot/jrman/drafts/src/org/jrman/primitive In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv2065/src/org/jrman/primitive Modified Files: CubicCurve.java Log Message: Fixed bug in implementation of rational cubic curves (didn't handle Pw parameter at the curve level). Index: CubicCurve.java =================================================================== RCS file: /cvsroot/jrman/drafts/src/org/jrman/primitive/CubicCurve.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** CubicCurve.java 30 Dec 2006 16:32:23 -0000 1.6 --- CubicCurve.java 4 Feb 2007 06:27:13 -0000 1.7 *************** *** 45,49 **** public class CubicCurve extends Primitive { ! static Point3f tmpPoint = new Point3f(); boolean periodic; --- 45,53 ---- public class CubicCurve extends Primitive { ! private final static Declaration DECL_PW = new Declaration("Pw", ! Declaration.StorageClass.VERTEX, ! Declaration.Type.HPOINT, 1); ! ! static Point4f tmpPoint = new Point4f(); boolean periodic; *************** *** 54,57 **** --- 58,70 ---- this.periodic = periodic; this.parameters = parameters; + VaryingScalarTuple3f param3f = + (VaryingScalarTuple3f) parameters.getParameter("P"); + + if (param3f != null) { + parameters.removeParameter("P"); + parameters.addParameter( + new VaryingScalarHPoint(DECL_PW, param3f)); + } + VaryingScalarFloat widthParam = (VaryingScalarFloat) parameters.getParameter("width"); *************** *** 73,78 **** Parameter param = parameters.getParameter("v"); if (param == null && !periodic) { ! VaryingScalarTuple3f points = ! (VaryingScalarTuple3f) parameters.getParameter("P"); int n = (points.getCount() - 4) / attributes.getVStep() + 2; float[] values = new float[n]; --- 86,91 ---- Parameter param = parameters.getParameter("v"); if (param == null && !periodic) { ! VaryingScalarHPoint points = ! (VaryingScalarHPoint) parameters.getParameter("Pw"); int n = (points.getCount() - 4) / attributes.getVStep() + 2; float[] values = new float[n]; *************** *** 91,100 **** public BoundingVolume getBoundingVolume() { ! VaryingScalarTuple3f points = ! (VaryingScalarTuple3f) parameters.getParameter("P"); ConvexHull3f ch = new ConvexHull3f(); for (int i = 0, n = points.getCount(); i < n; i++) { points.getValue(i, tmpPoint); ! ch.addPoint(tmpPoint); } return ch; --- 104,113 ---- public BoundingVolume getBoundingVolume() { ! VaryingScalarHPoint points = ! (VaryingScalarHPoint) parameters.getParameter("Pw"); ConvexHull3f ch = new ConvexHull3f(); for (int i = 0, n = points.getCount(); i < n; i++) { points.getValue(i, tmpPoint); ! ch.addHpoint(tmpPoint); } return ch; *************** *** 102,107 **** public Primitive[] split() { ! VaryingScalarTuple3f points = ! (VaryingScalarTuple3f) parameters.getParameter("P"); int n = points.getCount(); int vStep = attributes.getVStep(); --- 115,120 ---- public Primitive[] split() { ! VaryingScalarHPoint points = ! (VaryingScalarHPoint) parameters.getParameter("Pw"); int n = points.getCount(); int vStep = attributes.getVStep(); *************** *** 144,152 **** private static class CubicSegment extends Primitive { - final static Declaration DECL_PW = - new Declaration("Pw", - Declaration.StorageClass.VERTEX, - Declaration.Type.HPOINT, 1); - static Point4f pa = new Point4f(); --- 157,160 ---- *************** *** 211,221 **** private void extractPoints() { - VaryingScalarTuple3f param3f = - (VaryingScalarTuple3f) parameters.getParameter("P"); - if (param3f != null) { - parameters.removeParameter("P"); - parameters.addParameter( - new VaryingScalarHPoint(DECL_PW, param3f)); - } VaryingScalarHPoint paramHp = (VaryingScalarHPoint) parameters.getParameter("Pw"); --- 219,222 ---- |