Итак, у меня есть этот код, который берет данные из массива и рисует кривую:
void drawDataLine(int row) {
beginShape();
for (int col = 0; col < colCount; col++) {
if (data.isValid(row, col)) {
float value = data.getPoint(row, col);
float x = map(years[col], yearMin, yearMax, plotX1, plotX2);
float y = map(value, dataMin, dataMax, plotY2, plotY1);
//vertex(x,y) ;
curveVertex(x, y);
// Double the curve points for the start and stop
if ((col == 0) || (col == colCount-1)) {
curveVertex(x, y);
}
}
}
endShape();
}
У меня есть другая функция, которая отображает значения данных, когда курсор находится в пределах 3 пикселей от точки:
for (int col = 0; col < colCount; col++) {
if (data.isValid(row, col)) {
float radVal = ratio[col];
float value = data.getPoint(row, col);
float compareValue = compare.getPoint(row, col);
float x = map(years[col], yearMin, yearMax, plotX1, plotX2);
float y = map(value, dataMin, dataMax, plotY2, plotY1);
float ellipse1MapVal = map(value, ellipse1Min, ellipse1Max, 10, 80);
float ellipse2MapVal = map(compareValue, ellipse1Min, ellipse1Max, 10, 80);
radVal = map(radVal, radMin, radMax, 1, 7);
if (dist(mouseX, mouseY, x, y) < 3) {
if (drawCirclesPrimary || drawCirclesSecondary) {
noStroke();
if (drawCirclesPrimary) {
fill(0, 255, 0, 100);
ellipse(x, y, ellipse1MapVal, ellipse1MapVal);
}
if (drawCirclesSecondary) {
fill(255, 0, 0, 100);
ellipse(x, y, ellipse2MapVal, ellipse2MapVal);
}
fill(0);
stroke(0);
pushMatrix();
translate(x, y);
rotate(radians(radSec));
line(0, -ellipse1MapVal/2, 0, ellipse1MapVal/2);
popMatrix();
radSec += radVal;
textSize(10);
textAlign(CENTER);
text(nf(value, 0, 2) + " (" + years[col] + ")"+nf(compareValue, 0, 2), x, y-8);
}
else
text(nf(value, 0, 2) + " (" + years[col] + ")", x, y-8);
}
if ((mouseX < x+3)&&(mouseX > x-3))
{
stroke(150);
strokeWeight(1);
line(x, plotY1, x, plotY2);
} } }}
Теперь проблема в том, что curveVertex выполняет свою интерполяцию и создает хорошие кривые, но я не могу получить точки на этих кривых, кроме тех, которые у меня уже есть. Я хочу, чтобы курсор показывал значения по всем точкам на графике, а не по 10 точкам, которые у меня есть в массиве, очень похоже на графики в Google или Yahoo Finance. Я нуб, когда дело доходит до обработки, поэтому любая помощь с этим будет принята с благодарностью.
Привет