Дополнена ЛР-1 вариант 8

This commit is contained in:
Victor 2014-02-22 15:28:20 +02:00
parent 4598326648
commit ca47e798c3

View File

@ -13,44 +13,50 @@ public class LR_1_v8 extends Application {
new LR_1_v8(); new LR_1_v8();
} }
private static final double ARROW_WIDTH = 0.5;
private static final double ARROW_HEIGHT = 0.2;
private static final double[][] ARROW_PTS = { private static final double[][] ARROW_PTS = {
{0.0, 0.5, 0.4, 0.4, 0.5}, // x, y
{0.0, 0.00, 0.2, -0.2, 0.00}, {0.0, 0.0},
{ARROW_WIDTH, 0.0},
{4d * ARROW_WIDTH / 5d, ARROW_HEIGHT},
{4d * ARROW_WIDTH / 5d, -ARROW_HEIGHT},
{ARROW_WIDTH, 0.0},
}; };
private static final double N = 30; private static final double N = 30;
public LR_1_v8() { public LR_1_v8() {
super(900, 480); super(900, 500);
setTitle("LR_1 v8"); setTitle("LR_1 v8");
} }
@Override @Override
protected void paint(GraphicsExt g) { protected void paint(GraphicsExt g) {
double x1 = 0, y1 = 2; double x1 = 0, y1 = 2.5;
for (int i = 0; i < N; i++) { for (int i = 0; i < N; i++) {
double x2 = x1 + (i / 50d); final double scaleValue = (i / 24d);
double x2 = x1 + ARROW_WIDTH * scaleValue;
double y2 = y1 + Math.sin(x2) / 5d; double y2 = y1 + Math.sin(x2) / 5d;
g.reset(); g.reset();
g.translate(x2, y2); g.translate(x2, y2);
g.rotate(-Math.atan2(y2 - y1, x2 - x1)); g.rotate(-Math.atan2(y2 - y1, x2 - x1));
drawArrow(g, i); drawArrow(g, scaleValue);
x1 = x2; x1 = x1 + ARROW_WIDTH * scaleValue;
y1 = y2; y1 = y2;
} }
} }
private void drawArrow(GraphicsExt g, int num) { private void drawArrow(GraphicsExt g, double scaleValue) {
final int length = ARROW_PTS[0].length; final int length = ARROW_PTS.length;
double[][] points = new double[2][length]; double[][] points = new double[length][2];
double scale = num / 30d;
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
points[0][i] = ARROW_PTS[0][i] * scale; points[i][0] = ARROW_PTS[i][0] * scaleValue;
points[1][i] = ARROW_PTS[1][i] * scale; points[i][1] = ARROW_PTS[i][1] * scaleValue;
} }
g.move(points[0][0], points[1][0]); g.move(points[0][0], points[0][1]);
for (int i = 1; i < length; i++) { for (int i = 1; i < length; i++) {
g.draw(points[0][i], points[1][i]); g.draw(points[i][0], points[i][1]);
} }
} }
} }