+ inWriter.write(" texture { pigment {color rgb <0.6 1.0 0.2>} finish {phong 1} }");
+ inWriter.write(inLineSeparator);
+ inWriter.write(" no_shadow");
+ inWriter.write(inLineSeparator);
+ inWriter.write("}");
+ inWriter.write(inLineSeparator);
+ }
+
+
+ /**
+ * Write out a single polygon-based wall for the tubes-and-walls style
+ * @param inWriter Writer to use for writing file
+ * @param inModel model object for getting data points
+ * @param inSegment model segment to draw
+ * @param inLineSeparator line separator to use
+ * @throws IOException on file writing error
+ */
+ private static void writePolygonWall(FileWriter inWriter, ThreeDModel inModel, ModelSegment inSegment, String inLineSeparator)
+ throws IOException
+ {
+ // wall
+ inWriter.write(inLineSeparator);
+ inWriter.write("// wall between sweep and floor:");
+ inWriter.write(inLineSeparator);
+ // Loop over all points in this segment again and write out polygons
+ int prevIndex = -1;
+ for (int i=inSegment.getStartIndex(); i<=inSegment.getEndIndex(); i++)
+ {
+ if (inModel.getPointType(i) != ThreeDModel.POINT_TYPE_WAYPOINT)
+ {
+ if (prevIndex >= 0)
+ {
+ double xDiff = inModel.getScaledHorizValue(i) - inModel.getScaledHorizValue(prevIndex);
+ double yDiff = inModel.getScaledVertValue(i) - inModel.getScaledVertValue(prevIndex);
+ double dist = Math.sqrt(xDiff * xDiff + yDiff * yDiff);
+ if (dist > 0)
+ {
+ inWriter.write("polygon {");
+ inWriter.write(" 5, <" + inModel.getScaledHorizValue(prevIndex) + ", 0.0, " + inModel.getScaledVertValue(prevIndex) + ">,");
+ inWriter.write(" <" + inModel.getScaledHorizValue(prevIndex) + ", " + inModel.getScaledAltValue(prevIndex) + ", "
+ + inModel.getScaledVertValue(prevIndex) + ">,");
+ inWriter.write(" <" + inModel.getScaledHorizValue(i) + ", " + inModel.getScaledAltValue(i) + ", "
+ + inModel.getScaledVertValue(i) + ">,");
+ inWriter.write(" <" + inModel.getScaledHorizValue(i) + ", 0.0, " + inModel.getScaledVertValue(i) + ">,");
+ inWriter.write(" <" + inModel.getScaledHorizValue(prevIndex) + ", 0.0, " + inModel.getScaledVertValue(prevIndex) + ">");
+ inWriter.write(" pigment { color wall_colour } no_shadow");
+ inWriter.write("}");
+ inWriter.write(inLineSeparator);
+ }
+ }
+ prevIndex = i;
+ }
+ }