Package geom

Examples of geom.Offset


        forceX = scale * sign(m.x) * m.x * m.x;
        forceY = scale * sign(m.y) * m.y * m.y;

        for (int j=0; j<nodes.size(); j++) {
          Node n = nodes.get(j);
          Offset r = m.inversePower(n);
          forceX += r.width;
          forceY += r.height;
        }
        Offset tension = m.tension(edgeLength);
        diff[i] = new Offset(tension.width + forceX/nodes.size(), tension.height + forceY/nodes.size());
      }
      /* DEBUG INFO
      if (q==0 || q==N-1) {
        double sum = 0.0;
        for (Offset offset : diff) {
View Full Code Here


    Vector<Label> labels = new Vector<Label>(groups.keySet());
    Offset[] diff = new Offset[labels.size()];
    int N = 100;
    for (int q=0; q<N; q++) {
      for (int i=0; i<labels.size(); i++) {
        diff[i] = new Offset(0.0, 0.0);
        Label m = labels.get(i);
        if (groups.get(m).size()<2) {
          continue;
        }
        double forceX = 0.0;
        double forceY = 0.0;
        for (int j=0; j<labels.size(); j++) {
          if (groups.get(m).size()<2) {
            continue;
          }
          Label n = labels.get(j);
          Offset r = m.inversePower(n);
          forceX += r.width;
          forceY += r.height;
        }
        diff[i].width += forceX;
        diff[i].height += forceY;
View Full Code Here

    double sumY = 0.0;
    for (Node n : nodes) {
      sumX += n.x;
      sumY += n.y;
    }
    return new Offset(sumX/nodes.size(), sumY/nodes.size());
  }
View Full Code Here

    }
    return new Offset(sumX/nodes.size(), sumY/nodes.size());
  }

  public void moveToCentreOfMass() {
    Offset centreOfMass = calcCentreOfMass();
    for (Node n : nodes) {
      n.x -= centreOfMass.width;
      n.y -= centreOfMass.height;
    }
    // Shift the labels
View Full Code Here

        highlight = false;
        background = false;
      }

      double large = 50.0; // bigger than box's yet-to-be-determined width and height.
      Offset bounds = new Offset(2.0*large, 2.0*large);

      Color borderColour = colourScheme.getBorderColour();
      BoxText box = new BoxText(null, " "+label.name+" " , Box.RIGHT_ALIGN|Box.BOTTOM_ALIGN);
      label.actualX = centreX + label.x - large;
      label.actualY = centreY + label.y - large;

      BoxText content = new BoxText(null, " " + label.name + " " , Box.RIGHT_ALIGN|Box.BOTTOM_ALIGN);
      Color colour = colourScheme.getBorderColour(); // This doesn't appear appear to be used.
      Box border = new BorderedBox(null, content, Box.X_CENTRE_ALIGN|Box.Y_CENTRE_ALIGN, highlight, colourScheme);

      Position centre = new Position(label.actualX, label.actualY);
      border.setupAndPaint(g2D, colourScheme, Box.DEFAULT_BOX_FONT_SIZE, centre, new Offset(2*large, 2*large), background);
    }
  }
View Full Code Here

    equationBox.setupInnerRectangle(fontSize);
    double minimumHeight = equationBox.getInnerRectangle().height;
    double shapeWidth = panelRectangle.width - KetPanel.BORDER_OFFSET.width;

    Offset equationRectangle = new Offset(shapeWidth, minimumHeight);

    labelBox.setup(fontSize, equationRectangle);

    Offset windowWithoutLabel = new Offset(shapeWidth-labelBox.getInnerRectangle().width, minimumHeight);
    equationBox.setupOuterRectangle(windowWithoutLabel);

    double panelHeightOfNextBox;
    if (isText) {
      panelHeightOfNextBox = KetPanel.TOP_BORDER_SIZE;
View Full Code Here

    return name.compareTo(that.name);
  }

  public Offset inversePower(Label that) { // Inverse nth power repulsion law.
    if (this==that) {
      return new Offset(0.0, 0.0);
    }
    double dx = that.x - this.x;
    double dy = that.y - this.y;
    double length = Math.sqrt(dx*dx + dy*dy);
    double rsq = 1.0 / (length * length);
    double scale = 1.0E+4;
    //D Ket.out.println("dx,dy:" + dx + ", " + dy + ", rsq = " + rsq);
    //D Ket.out.println("::" + (-dx*rsq*scale/length) + ", " + ( -dy*rsq*scale/length ) );
    //D assert 3==scale : "pop";
    return new Offset(-dx*rsq*scale/length, -dy*rsq*scale/length); // (scale/length^2) * [dx, dy]
  }
View Full Code Here

    //D assert 3==scale : "pop";
    return new Offset(-dx*rsq*scale/length, -dy*rsq*scale/length); // (scale/length^2) * [dx, dy]
  }

  public Offset comb(Label that) {
    if (this==that) return new Offset(0.0, 0.0);
    double dx = this.x - that.x;
    double dy = this.y - that.y;
    double scale = 1.0E-2;
    return new Offset(scale*sign(dx)/sq(dx), scale*sign(dy)/sq(dy));
  }
 
View Full Code Here

  /*
   * Square restoring force from spring equilibrium length.
   */
  public Offset tension(double edgeLength) {
    if (parent==null) {
      return new Offset(0.0, 0.0);
    }
    double dx = parent.x - this.x;
    double dy = parent.y - this.y;
    double length = Math.sqrt(dx*dx + dy*dy);
    double error = length - edgeLength;
    error = 1.0E-2 * error * Math.abs(error);
    return new Offset(error*dx/length, error*dy/length); // error * r_unit
  }
 
View Full Code Here

TOP

Related Classes of geom.Offset

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.