import org.opensourcephysics.display.DrawingPanel; //导入方法依赖的package包/类
/**
* Paint the contour.
* @param g
*/
public synchronized void draw(DrawingPanel panel, Graphics g) {
if(!visible||(griddata==null)) {
return;
}
if(!autoscaleZ && showColoredLevels) {
g.setColor(colorMap.getFloorColor());
int w = panel.getWidth()-panel.getLeftGutter()-panel.getRightGutter();
int h = panel.getHeight()-panel.getTopGutter()-panel.getBottomGutter();
g.fillRect(panel.getLeftGutter(), panel.getTopGutter(), Math.max(w, 0), Math.max(h, 0));
}
accumulator.clearAccumulator();
contour_stepz = (zmax-zmin)/(contour_lines+1);
double z = zmin;
for(int c = 0; c
if(!autoscaleZ&&(c==contourColors.length-1)) {
contourColors[c] = colorMap.getCeilColor();
} else {
contourColors[c] = colorMap.doubleToColor(z);
}
z += contour_stepz;
}
double x = griddata.getLeft(), dx = (griddata.getRight()-griddata.getLeft())/(nx-1);
double y = griddata.getTop(), dy = -(griddata.getTop()-griddata.getBottom())/(ny-1);
for(int i = 0, mx = internalData.length-1; i
y = griddata.getTop();
for(int j = 0, my = internalData[0].length-1; j
contour_vertex[0][0] = x;
contour_vertex[0][1] = y;
contour_vertex[0][2] = internalData[i][j];
contour_vertex[1][0] = x;
contour_vertex[1][1] = y+dy;
contour_vertex[1][2] = internalData[i][j+1];
contour_vertex[2][0] = x+dx;
contour_vertex[2][1] = y+dy;
contour_vertex[2][2] = internalData[i+1][j+1];
contour_vertex[3][0] = x+dx;
contour_vertex[3][1] = y;
contour_vertex[3][2] = internalData[i+1][j];
createContour(panel, g);
y += dy;
}
x += dx;
}
if(showContourLines) {
g.setColor(lineColor);
accumulator.drawAll(g);
int lpix = panel.xToPix(griddata.getLeft());
int tpix = panel.yToPix(griddata.getTop());
int rpix = panel.xToPix(griddata.getRight());
int bpix = panel.yToPix(griddata.getBottom());
g.drawRect(Math.min(lpix, rpix), Math.min(tpix, bpix), Math.abs(lpix-rpix), Math.abs(tpix-bpix));
}
}