mlopes
#1
Ola galera…
Eu tenho o seguinte problema.
Sendo (x,y) e (w,z) dois pontos no plano cartesiano, como desenhar um arco que comece no x,y e termine no w,z ?
Não importa muito a curvatura.
Alguém tem idéia ? Eu estu tendo problemas com a geometria… não lembro mais como fazer.
Valeu.
[]'s
mlopes
#2
Ok, descobri!!!
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red);
g2.setStroke(new BasicStroke(3));
QuadCurve2D.Double curve;
int coordinatesLength = xPoints.length;
for (int i = 1; i < coordinatesLength; i++) {
double deltaX = xPoints[i] - xPoints[i - 1];
double deltaY = yPoints[i] - yPoints[i - 1];
double h = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));
double control = (Math.max(Math.abs(deltaY), Math.abs(deltaX))) / 2;
double controlX = (xPoints[i - 1] + (deltaX / 2)) - ((control * deltaY) / h);
double controlY = yPoints[i - 1] + (deltaY / 2) + ((control * deltaX) / h);
curve = new QuadCurve2D.Double(xPoints[i - 1], yPoints[i - 1], controlX, controlY,
xPoints[i], yPoints[i]);
g2.draw(curve);
}
[]'s