コード例 #1
0
ファイル: Java3DViewer.java プロジェクト: alexeyivanov/FEM
  public void draw(DrawModel d) {
    view.detach();
    rotation.removeAllChildren();
    drawModel = d;
    if (drawModel.getPicture() == null) return;
    Integer i = 0;
    for (VisualShape v : drawModel.getPicture()) {
      TransformGroup shapeGroup = new TransformGroup();
      rotation.addChild(shapeGroup);
      BranchGroup faces = v.getFaces2(BranchGroup.class);
      BranchGroup edges = v.getEdges2(BranchGroup.class);
      BranchGroup text = v.getText2(BranchGroup.class);
      if (faces == null && edges == null) continue;
      i++;
      if (faces != null) {
        faces.detach();
        rotation.addChild(faces);
        faces.setPickable(true);
        faces.setUserData(v);
        faces.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
        faces.setName(i.toString());
      }
      if (edges != null) {
        edges.detach();
        rotation.addChild(edges);
        edges.setPickable(true);
        edges.setUserData(v);
        edges.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
        edges.setName(i.toString());
      }

      if (text != null) {
        text.detach();
        rotation.addChild(text);
        text.setPickable(false);
        if (text instanceof BranchGroup) {
          BranchGroup bg = (BranchGroup) text;
          for (int j = 0; j < bg.numChildren(); j++) {
            Node child = bg.getChild(j);
            if (child instanceof TransformGroup) {
              TransformGroup tg = (TransformGroup) child;
              tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
              tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
              textLabels.add(tg);
            }
          }
        }

        //        		edges.setUserData(v);
        //        		edges.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
        //         		edges.setName(i.toString());
      }
    }
    root.addChild(view);
  }
コード例 #2
0
ファイル: ComplexViewer.java プロジェクト: hkb/IKChainTree
  public void actionPerformed(ActionEvent actionEvent) {
    String cmd = actionEvent.getActionCommand();
    if ("Console"
        .equals(
            cmd)) { // opens a window to read the coordinates of a point that is added to the point
      // set.
      new InputPanelPointApplet(this);
    } else if ("Select_Point"
        .equals(cmd)) { // opens a window with the list of points. One is to be selected.
      new SelectPointPanelApplet(this);
    } else if ("Select_Cell"
        .equals(cmd)) { // opens a window with the list of cells. One is to be selected.
      //				new SelectCellPanelApplet(this);
    } else if ("Random Point".equals(cmd)) { // adds random point to the point set
      /*				 com.artchase.geom3d.Point3d pointToAdd = new com.artchase.geom3d.Point3d(randGen);
      				 int size = getCells().getVertices().getSize();
      				 Vertex v = new Vertex(pointToAdd, size);
      				 getCells().getVertices().insert(v);
      				 addSphere(v, 0.02f, Colors.red);
      				 getCells().setNrVertices(size+1);
      */ } else if ("Selected_Point_Move".equals(cmd)) {
      //			 new SelectedPointMovePanel(this);
    } else if ("Selected_Cell_Adjacent".equals(cmd)) {
      /*				 if (selectedCell != null) {
      					 System.out.println("selectedCell is not null");
      					 if (selectedAdjCell != null) {
      						 System.out.println("adjacentCellShown is TRUE");
      						 selectedAdjCell.changeAppearance(1, LineAttributes.PATTERN_SOLID, Colors.yellow);
      						 selectedAdjCell = null;
      					 }
      					 System.out.println("adjacentCellShown is FALSE");
      					 if (cells.getNrCells() > 0) {
      						 System.out.println("Number of cells is " + cells.getNrCells());
      						 int nrIter = 0;
      						 do {
      							 nrIter++;
      							 selectedAdjCellIndex = (++selectedAdjCellIndex)%4;
      							 System.out.println("selectedAdjCellIndex = " + selectedAdjCellIndex);
      							 selectedAdjCell = selectedCell.getAdjCell(selectedAdjCellIndex);
      						 } while (selectedAdjCell.isInfiniteCell() && (nrIter < 4));
      						 if (!selectedAdjCell.isInfiniteCell()) {         // adjacent cell found
      							 System.out.println("i am here displaying cell " + selectedAdjCellIndex);
      							 selectedAdjCell.changeAppearance(5, LineAttributes.PATTERN_SOLID, Colors.magenta);
      						 } else selectedAdjCell = null;                   // all adjacent cells are infinite
      					 }
      				 }
      */ } else if ("Selected_Cell_Circumcircle".equals(cmd)) {
      /*				 if (circumCircleShown) {
      					 circumCircleBranchGroup.detach();
      					 circumCircleShown = false;
      				 }
      				 else {
      					 com.artchase.geom3d.Point3d[] points = selectedCell.getPoints();
      					 Sphere3d sphere = new Sphere3d(points[0],points[1],points[2],points[3]);
      					 com.artchase.geom3d.Point3d center = sphere.getCenter();
      					 circumCircleBranchGroup = addSphere(center, sphere.getRadius(), Colors.green);
      					 circumCircleShown = true;
      				 }
      */ } else if ("Random".equals(cmd)) {
      complex.clear();
      spin.removeAllChildren();
      setNrSpannedVerticesField(0);
      setNrEdgesField(0);
      setNrFacesField(0);
      setNrCellsField(0);
      // Open window to get the number of random points to be generated.
      new InputPanelRandomApplet(this);
    } else if ("Clear".equals(cmd)) {
      complex.clear();
      spin.removeAllChildren();
      setNrSpannedVerticesField(0);
      setNrEdgesField(0);
      setNrFacesField(0);
      setNrCellsField(0);
      selectedSimplex = null;
      selectedAdjCell = null;
      count2 = count3 = 0;
    } else if ("Run".equals(cmd)) {
      Simplex simplex;
      if (!complex.getPoints().isEmpty() && complex.isEmpty()) {
        simplex = complex.first3Simplex();
        //					 addTriangle(simplex,Colors.yellow);
        while (!complex.getStack().isEmpty()) complex.next4Simplex();
        /*					 int size = complex.simplicies[3].getSize();
        					 for (int i = 0; i < size; i++) {
        						 simplex = (Simplex)complex.simplicies[3].get(i);
        						 addTetrahedron(simplex,Colors.yellow);
        					 }
        */ complex.computeAlphaValues();
        SorterSelection sorter = new SorterSelection();
        SortToolSimplexAlpha sortTool = new SortToolSimplexAlpha();
        sorter.Sort(complex.getSimplicies()[1], sortTool, false);
        sorter.Sort(complex.getSimplicies()[2], sortTool, false);
        sorter.Sort(complex.getSimplicies()[3], sortTool, false);
        complex.toConsole(complex.getSimplicies()[1]);
        complex.toConsole(complex.getSimplicies()[2]);
        complex.toConsole(complex.getSimplicies()[3]);
      }
      /*				 if (!complex.points.isEmpty()) {
      					 while (!complex.stack.isEmpty()) complex.next4Simplex();
      					 int size = complex.simplicies[3].getSize();
      					 for (int i = 0; i < size; i++) {
      						 simplex = (Simplex)complex.simplicies[3].get(i);
      						 addTetrahedron(simplex,Colors.yellow);
      					 }

      				 }
      */ } else if ("Step".equals(cmd)) stepSimplicies3(); // stepSimplicies23 also available
    else if ("Step1".equals(cmd)) {
      if (complex.isEmpty()) {
        Simplex simplex = complex.first3Simplex();
        addTriangle(simplex, Colors.yellow);
      }
      Simplex simplex = complex.next4Simplex();
      if (simplex != null) addTetrahedron(simplex, Colors.yellow);
    } else if ("Save".equals(cmd)) {
      try {
        BufferedWriter bw = new BufferedWriter(new FileWriter("data"));
        PrintWriter out = new PrintWriter(bw);
        int size = complex.getPoints().getSize();
        Point3d p;
        for (int i = 0; i < size; i++) {
          p = (Point3d) complex.getPoints().get(i);
          out.print(p.getX() + " " + p.getY() + " " + p.getZ() + '\n');
        }
        out.close();
      } catch (IOException e) {
        System.out.println("IOException error!");
        e.printStackTrace();
      }
    } else if ("Load".equals(cmd)) {
      complex.clear();
      spin.removeAllChildren();
      geom3d.PointSet3d points = new PointSet3d("data");
      int size = points.getSize();
      Point3d point;
      for (int i = 0; i < size; i++) {
        point = (Point3d) points.get(i);
        complex.getPoints().insert(point);
        Simplex simplex = new Simplex(i);
        complex.insert(simplex);
        addSphere(simplex, 0.02f, Colors.red);
      }
    } else if ("PDB".equals(cmd)) {
      complex.clear();
      spin.removeAllChildren();
      Protein protein = new Protein("1CR4", 0, true);
      PointSet3d points = protein.getPointSet();
      points.translate(points.getCentroid());
      int size = points.getSize();
      Point3d point;
      for (int i = 0; i < size; i++) {
        point = (Point3d) points.get(i);
        complex.getPoints().insert(point);
        Simplex simplex = new Simplex(i);
        complex.insert(simplex);
        addSphere(simplex, 0.02f, Colors.red);
      }
      //				 new InputPanelPDBApplet(this);
    } else if ("Point".equals(cmd)) {
      /*				 ap.setPolygonAttributes(new PolygonAttributes(PolygonAttributes.POLYGON_POINT, PolygonAttributes.CULL_BACK, 0));
      				 ap.setPointAttributes(new PointAttributes(5, false)); }
      			 else if ("Line".equals(cmd)) {
      /*				 ap.setPolygonAttributes(new PolygonAttributes(PolygonAttributes.POLYGON_LINE, PolygonAttributes.CULL_BACK, 0));
      				 ap.setLineAttributes(new LineAttributes(2, LineAttributes.PATTERN_DASH,false));
      */ } else if ("Polygon".equals(cmd)) {
      //				 ap.setPolygonAttributes(new PolygonAttributes(PolygonAttributes.POLYGON_FILL,
      // PolygonAttributes.CULL_BACK, 0));
    } else if ("Gouraud".equals(cmd)) {
      /*				 ColoringAttributes ca = new ColoringAttributes();
      				 ca.setShadeModel(ColoringAttributes.SHADE_GOURAUD);
      				 ap.setColoringAttributes(ca);
      				 ap.setMaterial(null);
      				 RenderingAttributes ra = new RenderingAttributes();
      				 ra.setIgnoreVertexColors(false);
      				 ap.setRenderingAttributes(ra);
      */ } else if ("Lighting".equals(cmd)) {
      /*				 ap.setMaterial(new Material());
      				 RenderingAttributes ra = new RenderingAttributes();
      				 ra.setIgnoreVertexColors(true);
      				 ap.setRenderingAttributes(ra);
      */ }
  }