Package cranks.geom

Examples of cranks.geom.Triangle


                  step = new ConstructionStep(this,
                              new Object[]{objectToBeAdded}, LINE);
                break;

                case MOUSE_MODE_TRIANGLE:
                  objectToBeAdded = new Triangle(mouseClicks[0], mouseClicks[1],
                                                 mouseClicks[2]);
                  step = new ConstructionStep(this,
                              new Object[]{objectToBeAdded}, TRIANGLE);
                break;
                default :
View Full Code Here


      Line l = (Line)objectToBeAdded;
      step.setOutputs(new Object[]{l.getStart(), l.getEnd(), l});
      fireUndoableEditUpdate(new UndoableEditEvent(this, step));
    }
    else if (step.getConstructionType() == TRIANGLE) {
      Triangle t = (Triangle)objectToBeAdded;
      step.setOutputs(new Object[]
        {t.getSides()[0].getStart(), t.getSides()[1].getStart(),
         t.getSides()[0], t.getSides()[2].getStart(), t.getSides()[1],
         t.getSides()[2], t});
      fireUndoableEditUpdate(new UndoableEditEvent(this, step));
    }
    else
      System.err.println("Bad constructon type");
  }
View Full Code Here

        displayName = "Draw line from " +
                l.getStart().locationToString() + " to " + l.getEnd().locationToString();
      break;

      case TRIANGLE:
        Triangle t = (Triangle)(step.getInputs()[0]);
        displayName = "Draw triangle using points " +
            t.getSides()[0].getStart().locationToString() + "," +
            t.getSides()[1].getStart().locationToString() + " and " +
            t.getSides()[2].getStart().locationToString();
      break;

      default :
        System.err.println("Bad construction type");
    }
View Full Code Here

            field = new DefaultMutableTreeNode(
                      new FieldInfo("Visibility", c.isVisible()));
            object.add(field);
          break;
          case 5:
            Triangle t = ((Triangle)o);
            field = new DefaultMutableTreeNode(
                      new FieldInfo("Side 1", t.getSides()[0]));
            object.add(field);
            field = new DefaultMutableTreeNode(
                      new FieldInfo("Side 2", t.getSides()[1]));
            object.add(field);
            field = new DefaultMutableTreeNode(
                      new FieldInfo("Side 3", t.getSides()[2]));
            object.add(field);
            field = new DefaultMutableTreeNode(
                      new FieldInfo("Visibility", t.isVisible()));
            object.add(field);
          break;
          default :
        }
      }
View Full Code Here

      Point P3 = (Point)step.getInputs()[2];
      Line line12 = new Line(P1, P2);
      Line line23 = new Line(P2, P3);
      if (!((line12.getSlope().equalTo(line23.getSlope()))||(P1.equalTo(P2))
          || (P2.equalTo(P3)) || (P3.equalTo(P1))))  {
        Triangle newTriangle = new Triangle(P1, P2, P3);
        newTriangle.addToObjects(objects);
        clearAndHide();
        step.setOutputs(new Object[]
             {newTriangle.getSides()[0], newTriangle.getSides()[1],
              newTriangle.getSides()[2], newTriangle});
        fireUndoableEditUpdate(new UndoableEditEvent(this, step));
      }
      else {
        JOptionPane.showMessageDialog(this, "Please select three distinct"+
              " non-collinear points", "Try Again", JOptionPane.ERROR_MESSAGE);
        initDialog();
      }
    }
    else if (step.getConstructionType() == POINT_LINE) {
      Point P1 = (Point)step.getInputs()[0];
      Line L1 = (Line)step.getInputs()[1];
      if (!(P1.canIntersect(L1))) {
        Triangle newTriangle = new Triangle(P1, L1);
        newTriangle.addToObjects(objects);
        clearAndHide();
        step.setOutputs(new Object[]
          {newTriangle.getSides()[1], newTriangle.getSides()[2], newTriangle});
        fireUndoableEditUpdate(new UndoableEditEvent(this, step));
      }
      else {
        JOptionPane.showMessageDialog(this, "Please select a point that does "+
              "not lie on the line", "Try Again", JOptionPane.ERROR_MESSAGE);
View Full Code Here

    }
  }

  public void actionPerformed(ActionEvent e) {
    if (initialized && (e.getActionCommand().equalsIgnoreCase("Triangle"))) {
      Triangle T1 = (Triangle)(cTriangle.getSelectedItem());
      Line[] sides = T1.getSides();
      cPickSide.removeAllItems();
      for (int i = 0; i<sides.length; i++)
        cPickSide.addItem(sides[i]);
      lPickSide.setVisible(true);
      cPickSide.setVisible(true);
View Full Code Here

      cSelectOrientation.setVisible(true);
    }
  }

  private void copyAndMoveTriangle() {
    Triangle tri = (Triangle)(cTriangle.getSelectedItem());
    Line selectedSide = (Line)(cPickSide.getSelectedItem());
    Line newSide = (Line)(cNewSide.getSelectedItem());
    boolean orientation = (cSelectOrientation.getSelectedIndex() == 0);
    ConstructionStep step = new ConstructionStep(this, new Object[] {tri,
              selectedSide, newSide, new Boolean(orientation)}, COPY_MOVE);
View Full Code Here

    doConstruction(step);
  }

  public void doConstruction(ConstructionStep step) {
    if (step.getConstructionType() == COPY_MOVE) {
      Triangle tri = (Triangle)step.getInputs()[0];
      Line selectedSide = (Line)step.getInputs()[1];
      Line newSide = (Line)step.getInputs()[2];
      boolean orientation = ((Boolean)step.getInputs()[3]).booleanValue();
      if (Math.abs(selectedSide.getLength()-newSide.getLength()) < Point.LEAST_COUNT) {
        Point[] vertices = tri.getVertices();
        Point ptOppSelSide = new Point();
        if (vertices[0].canIntersect(selectedSide))
          if (vertices[1].canIntersect(selectedSide))
            ptOppSelSide.setCoordinates(vertices[2].getX(), vertices[2].getY());
          else
            ptOppSelSide.setCoordinates(vertices[1].getX(), vertices[1].getY());
        else
          ptOppSelSide.setCoordinates(vertices[0].getX(), vertices[0].getY());

        Line line1 = (orientation)?
                  (new Line(selectedSide.getStart(), newSide.getStart())):
                  (new Line(selectedSide.getStart(), newSide.getEnd()));
        Line line2 = (orientation)?
                  (new Line(selectedSide.getEnd(), newSide.getEnd())):
                  (new Line(selectedSide.getEnd(), newSide.getStart()));
        Point centreOfRotation;
        Angle angleOfRotation;
        if (line1.getLength() < Point.LEAST_COUNT) {
          centreOfRotation = new Point(line1.getStart().getX(),line1.getStart().getY());
          angleOfRotation = (new Line(centreOfRotation, line2.getEnd())).getSlope().
                    sub((new Line(centreOfRotation, line2.getStart())).getSlope());
        }
        else if (line2.getLength() < Point.LEAST_COUNT) {
          centreOfRotation = new Point(line2.getStart().getX(),line2.getStart().getY());
          angleOfRotation = (new Line(centreOfRotation, line1.getEnd())).getSlope().
                    sub((new Line(centreOfRotation, line1.getStart())).getSlope());
        }
        else {
          Line perpLine1 = new Line(line1.midPoint(),line1.getSlope().
                              add(new Angle(Math.PI/2)),1);
          Line perpLine2 = new Line(line2.midPoint(),line2.getSlope().
                              add(new Angle(Math.PI/2)),1);
          if (perpLine1.canIntersect(perpLine2)) {
            centreOfRotation = perpLine1.intersect(perpLine2)[0];
            angleOfRotation = (new Line(centreOfRotation, line1.getEnd())).getSlope().
                    sub((new Line(centreOfRotation, line1.getStart())).getSlope());
          }
          else {
            Point translation = new Point(
                      line1.getEnd().getX() - line1.getStart().getX(),
                      line1.getEnd().getY() - line1.getStart().getY());
            ptOppSelSide.move(translation, new Angle(0), new Point());
            Triangle newTriangle = new Triangle(ptOppSelSide, newSide);
            newTriangle.addToObjects(objects);
            clearAndHide();
            step.setOutputs(new Object[]{ptOppSelSide, newTriangle.getSides()[1],
                        newTriangle.getSides()[2], newTriangle});
            fireUndoableEditUpdate(new UndoableEditEvent(this, step));
            return;
          }
        }
        ptOppSelSide.move(new Point(), angleOfRotation, centreOfRotation);
        Triangle newTriangle = new Triangle(ptOppSelSide, newSide);
        newTriangle.addToObjects(objects);
        clearAndHide();
        step.setOutputs(new Object[]{ptOppSelSide, newTriangle.getSides()[1],
                    newTriangle.getSides()[2], newTriangle});
        fireUndoableEditUpdate(new UndoableEditEvent(this, step));
      }
      else {
        JOptionPane.showMessageDialog(this, "Lengths of old & new sides must be equal",
                        "Try Again", JOptionPane.ERROR_MESSAGE);
View Full Code Here

    String fixedLink = (String)cFixedLink.getSelectedItem();
    int fixed = Integer.parseInt(fixedLink.substring(fixedLink.length()-1));
    double ternaryLength = 0;
    Angle ternaryAngle = new Angle();
    if (rbTernary.isSelected()) {
      Triangle ternaryLink = (Triangle)cTernaryLink.getSelectedItem();
      Line link3 = (fixed > 2)?(lines[(fixed-1)-2]):(lines[(fixed-1)+2]);
      if (!(link3.getAssocObjects().contains(ternaryLink))) {
        JOptionPane.showMessageDialog(this, "Ternary link is not connected to "+
                  "mechanism", "Try Again", JOptionPane.ERROR_MESSAGE);
        return;
      }
      Line link2 = (fixed == 4)?lines[0]:lines[(fixed - 1) + 1];
      Point intersectionOfLink2Link3 = (test(link3.getStart(), link2))?
                  (link3.getStart()):(link3.getEnd());
      Line ternaryLine = null;
      for (int i = 0; i<3; i++)
        if ( test(intersectionOfLink2Link3, ternaryLink.getSides()[i]) &&
             !ternaryLink.getSides()[i].equals(link3))
           ternaryLine = ternaryLink.getSides()[i];
      ternaryLength = ternaryLine.getLength();
      ternaryAngle = getAngle(ternaryLine, link3);
    }
   
    mechanism.setFixed(1);
View Full Code Here

TOP

Related Classes of cranks.geom.Triangle

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.