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 ----
|