public static Vector div(Vector v, float n) { return new Vector(v.x / n, v.y / n); }
protected Vector linearInterpolation(float x1, float y1, float x2, float y2, float c) { Vector r = new Vector(x1 + (x2 - x1) * c, y1 + (y2 - y1) * c); return r; }
public static Vector mult(Vector v, float n) { return new Vector(v.x * n, v.y * n); }
public static Vector add(Vector v1, Vector v2) { return new Vector(v1.x + v2.x, v1.y + v2.y); }
public static Vector sub(Vector v1, Vector v2) { return new Vector(v1.x - v2.x, v1.y - v2.y); }
private void fit(CanvasSize cs) { Vector box = new Vector(cs.getWidth(), cs.getHeight()); Vector semiBox = Vector.div(box, 2F); Vector topLeft = new Vector(cs.getX(), cs.getY()); Vector center = new Vector(width / 2F, height / 2F); Vector scaledCenter = Vector.add(topLeft, semiBox); trans.set(center); trans.sub(scaledCenter); } }
private PreviewMouseEvent buildPreviewMouseEvent(MouseEvent evt, PreviewMouseEvent.Type type) { int mouseX = evt.getX(); int mouseY = evt.getY(); PreviewMouseEvent.Button button = PreviewMouseEvent.Button.LEFT; if (SwingUtilities.isMiddleMouseButton(evt)) { button = PreviewMouseEvent.Button.MIDDLE; } else if (SwingUtilities.isLeftMouseButton(evt)) { button = PreviewMouseEvent.Button.LEFT; } else if (SwingUtilities.isRightMouseButton(evt)) { button = PreviewMouseEvent.Button.RIGHT; } Vector pos = screenPositionToModelPosition(new Vector(mouseX, mouseY)); return new PreviewMouseEvent((int) pos.x, (int) pos.y, type, button, null); }
private PreviewMouseEvent buildPreviewMouseEvent(MouseEvent evt, PreviewMouseEvent.Type type) { int mouseX = evt.getX(); int mouseY = evt.getY(); PreviewMouseEvent.Button button = PreviewMouseEvent.Button.LEFT; if (SwingUtilities.isMiddleMouseButton(evt)) { button = PreviewMouseEvent.Button.MIDDLE; } else if (SwingUtilities.isLeftMouseButton(evt)) { button = PreviewMouseEvent.Button.LEFT; } else if (SwingUtilities.isRightMouseButton(evt)) { button = PreviewMouseEvent.Button.RIGHT; } Vector pos = screenPositionToModelPosition(new Vector(mouseX, mouseY)); return new PreviewMouseEvent((int) pos.x, (int) pos.y, type, button, null); }
public void refresh(PreviewModel m, RenderTarget target) { if (m == null) { return; } if (!inited) { CanvasSize cs = getSheetCanvasSize(m); scaling = computeDefaultScaling(cs); fit(cs); inited = true; } g2.setTransform(new AffineTransform()); background = m.getProperties() .getColorValue(PreviewProperty.BACKGROUND_COLOR); if (background != null) { g2.setColor(background); g2.fillRect(0, 0, width, height); } // user zoom Vector center = new Vector(width / 2F, height / 2F); Vector scaledCenter = Vector.mult(center, scaling); Vector scaledTrans = Vector.sub(center, scaledCenter); g2.translate(scaledTrans.x, scaledTrans.y); g2.scale(scaling, scaling); // user move g2.translate(trans.x, trans.y); //Draw target previewController.render(target); }
public Helper(final Item item) { node = ((Edge) item.getSource()).getSource(); Item nodeSource = item.getData(SOURCE); x = nodeSource.getData(NodeItem.X); y = nodeSource.getData(NodeItem.Y); Float size = nodeSource.getData(NodeItem.SIZE); v1 = new Vector(x, y); v1.add(size, -size); v2 = new Vector(x, y); v2.add(size, size); } }
final Vector direction = new Vector(x2, y2); direction.sub(new Vector(x1, y1)); direction.normalize(); p1 = new Vector(direction.x, direction.y); p1.mult(radius); p1.add(new Vector(x2, y2)); final Vector p1r = new Vector(direction.x, direction.y); p1r.mult(radius - size); p1r.add(new Vector(x2, y2)); p2 = new Vector(-direction.y, direction.x); p2.mult(size * BASE_RATIO); p2.add(p1r); p3 = new Vector(direction.y, -direction.x); p3.mult(size * BASE_RATIO); p3.add(p1r);
Vector direction = new Vector(_x2, _y2); direction.sub(new Vector(_x1, _y1)); direction.normalize(); direction.mult(targetRadius); direction.add(new Vector(_x2, _y2)); _x2 = direction.x; _y2 = direction.y; Vector direction = new Vector(_x1, _y1); direction.sub(new Vector(_x2, _y2)); direction.normalize(); direction.mult(sourceRadius); direction.add(new Vector(_x1, _y1)); _x1 = direction.x; _y1 = direction.y;
private Vector screenPositionToModelPosition(Vector screenPos) { Vector center = new Vector(getWidth() / 2f, getHeight() / 2f); Vector scaledCenter = Vector.mult(center, target.getScaling()); Vector scaledTrans = Vector.sub(center, scaledCenter); Vector modelPos = new Vector(screenPos.x, screenPos.y); modelPos.sub(scaledTrans); modelPos.div(target.getScaling()); modelPos.sub(target.getTranslate()); return modelPos; }
private Vector screenPositionToModelPosition(Vector screenPos) { Vector center = new Vector(getWidth() / 2f, getHeight() / 2f); Vector scaledCenter = Vector.mult(center, target.getScaling()); Vector scaledTrans = Vector.sub(center, scaledCenter); Vector modelPos = new Vector(screenPos.x, screenPos.y); modelPos.sub(scaledTrans); modelPos.div(target.getScaling()); modelPos.sub(target.getTranslate()); return modelPos; }
public Helper( final Item item, final PreviewProperties properties) { sourceItem = item.getData(SOURCE); targetItem = item.getData(TARGET); x1 = sourceItem.getData(NodeItem.X); x2 = targetItem.getData(NodeItem.X); y1 = sourceItem.getData(NodeItem.Y); y2 = targetItem.getData(NodeItem.Y); final Vector direction = new Vector(x2, y2); direction.sub(new Vector(x1, y1)); final float length = direction.mag(); direction.normalize(); final float factor = properties.getFloatValue(BEZIER_CURVENESS) * length; final Vector n = new Vector(direction.y, -direction.x); n.mult(factor); v1 = computeCtrlPoint(x1, y1, direction, factor, n); v2 = computeCtrlPoint(x2, y2, direction, -factor, n); }
Float size = sourceItem.getData(NodeItem.SIZE); Vector v1 = new Vector(x, y); v1.add(size, -size); Vector v2 = new Vector(x, y); v2.add(size, size); Vector direction = new Vector(x2, y2); direction.sub(new Vector(x1, y1)); float length = direction.mag(); direction.normalize(); Vector n = new Vector(direction.y, -direction.x); n.mult(factor); Vector v1 = new Vector(direction.x, direction.y); v1.mult(factor); v1.add(new Vector(x1, y1)); v1.add(n); Vector v2 = new Vector(direction.x, direction.y); v2.mult(-factor); v2.add(new Vector(x2, y2)); v2.add(n);