⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roboproto.java

📁 一个由c转成java的3D robot 仿真平台
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
			    PL[i].x = base105;			    break;		}	     }	   AllAboutMoving.copyPointList(PL, pl, this);               angleNew[0] = 0.0;           angleNew[1] = -Math.PI/2;           angleNew[2] = angleNew[1];           angleNew[3] = 0.0;           angleNew[4] = 0.0;           angleNew[5] = 0.0;           AllAboutMoving.PosRobo(pl, angleNew, angles, this);// angles get							// their new values	   angleOld[1] = angleOld[1] + (Math.PI/2);           angleOld[2] = angleOld[2] + (Math.PI/2);	   // Creation of variables of primitive data type needed as 	   // call-by-reference variables:	   makeRealRobotMove = false;	   RefInt refError = new RefInt(errorcode);	   RefDouble refAngleY = new RefDouble(angleY);	   RefDouble refAngleX = new RefDouble(angleX);	   RefDouble refD = new RefDouble(d);	   RefInt refIndx = new RefInt(indx);           AllAboutMoving.MoveRobo (showTheMove, pl, line, angleOld, angles, 			8,refError, refAngleY, refAngleX, refD,0, refIndx,			location, this);           errorcode = refError.in;	   angleY = refAngleY.in;	   angleX = refAngleX.in;	   indx = refIndx.in;	   d = refD.in;	   makeRealRobotMove = true;;	   showTheMove = true;	   repaint(); 	   if (robotIsReal)	     realRobotInterface(4, handValue);	}          	private void executeExample()	{	  double[] exAngles = new double[6];	  double[] newLengths = new double[3];	  newLengths[0] = 13.5;  // default values	  newLengths[1] = 10;	  newLengths[2] = 10;	  linkLengthInput(newLengths);  	  for (int i = 0; i < 6; i++)		    exAngles[i] = 0;  	  manualInput(exAngles);	  speedInput(15);	  exAngles[0] = 90 * Math.PI / 180;	  exAngles[1] = 0;	  exAngles[2] = -90 * Math.PI / 180;  	  exAngles[3] = -90 * Math.PI / 180;	  exAngles[4] = 0; 	  exAngles[5] = 0;	  manualInput(exAngles);	  zoomInput(2.0f);	  for (int i = 0; i < 6; i++)		    exAngles[i] = - 30 * Math.PI / 180;	  exAngles[1] = 0;	  manualInput(exAngles);	  zoomInput(1.5f);	  speedInput(80);	  exAngles[0] = -160 * Math.PI / 180;	  exAngles[1] = -90 * Math.PI / 180;	  exAngles[2] = -130 * Math.PI / 180;	  exAngles[3] = -90 * Math.PI / 180;	  exAngles[4] = -40 * Math.PI / 180;	  exAngles[5] = -40 * Math.PI / 180;	  manualInput(exAngles);	  speedInput(25);	  for (int i = 0; i < 6; i++)		    exAngles[i] = 0;	  manualInput(exAngles);	}	public void realRobotInterface(int armNo, double turnAngle)	{	  int realArm = armNo;	  int commandNumber = 122;	  switch (realArm)	    {	      case 0 : commandNumber = 122 + (int)(adjustFactors[0] *					(turnAngle / Math.PI * 180)); 		       break;	      case 1 : commandNumber = 122 + (int)(adjustFactors[1] * (					(turnAngle / Math.PI * 180) + 90));		       break;	      case 2 : commandNumber = 122 + (int)(adjustFactors[2] * 				        (turnAngle / Math.PI * 180));		       break;	      case 3 : commandNumber = 122 + (int)(adjustFactors[3] * 					(turnAngle / Math.PI * 180));		       break;	      case 4 : commandNumber = 240 + (int)(adjustFactors[4] * 					(turnAngle / Math.PI * 180));		       break; 	    }	    if (commandNumber > 254)	      commandNumber = 254;            else 	      if (commandNumber < 1)	        commandNumber = 1;            RealRobot.RealRobotControl.move(realArm, commandNumber);	}	  	// the following two events get interpreted by the ThreeD-instance	public boolean mouseDown(Event e, int x, int y) 	{	  if (e.target == roboCanvas)	    return animation.mouseDown(e, x, y);	  else return true;	}               public boolean mouseDrag(Event e, int x, int y) 	{	  if (e.target == roboCanvas)	    return animation.mouseDrag(e, x, y);	  else return true;	}  	public boolean action(Event e, Object o)	{ 	   if (e.target == fileButton)	     {		try		  {		    FileHandle.readFile(this);		  }			catch (IOException err)		  {		    writeError(err.getMessage());		  }	        finally		  {		    repaint();		    return true;		  }	     }	   if (e.target == teachButton)	     {	       if ((teachButton.getLabel()).equals(teachStr))	  	 {	           try		     {  		       saveFile = FileHandle.openFile(this); 		       teachButton.setLabel(enterStr);		       stopButton.enable();		     }	           catch (IOException err)		     {			       writeError("Can't open: " + err.getMessage());		     }	           finally		     { 		       return true;		     }		 }	       else		 { // can only be called, if this button                   // is enabled which means 'saveFile' has been 		   // instanciated		   FileHandle.writeFile(saveFile, this);	           return true;		 }	     }	   if (e.target == stopButton)	     {		FileHandle.closeFile(saveFile);		teachButton.setLabel(teachStr);		stopButton.disable();		return true;	     }	   if (e.target == autoExecButton)	     {	       for (int kl = 0; kl < 3; kl++)		 input[kl] = target[kl]; 	       autoChange(input); 	       actualizeAutoPanel();	       if (robotIsReal)		 {	           for (int kl = 0; kl < 3; kl++)		     realRobotInterface(kl, angles[kl].act);		   realRobotInterface(3, angles[4].act);	         }	       return true;	     }	   for (int loop = 0; loop < 4; loop++)	     {	       if (e.target == storeButtons[loop])		 {	           saveActualPosition(loop);	           return true;		 }	       if (e.target == loadButtons[loop])		 {			   loadPositionNo(loop);		   return true;		 }	     }	   if (e.target == helpButton)	     {	       helpWin = new Win(this, 1);//'1' means 'help'	       return true;	     }	   if (e.target == aboutButton)	     {	        aboutWin = new Win(this, 2);//'2' means 'about'		return true;	     }	   if (e.target == exampleButton)	     {	       executeExample();	       return true;	     }	   return this.handleEvent(e);	}  	public boolean handleEvent(Event e)	{	   for (int i = 0; i < 6; i++)	     if (e.target == manualScrolls[i])	       switch(e.id)		 {		   case Event.SCROLL_LINE_UP:		   case Event.SCROLL_LINE_DOWN:	  	   case Event.SCROLL_PAGE_UP:		   case Event.SCROLL_PAGE_DOWN:  		   case Event.SCROLL_ABSOLUTE:	  	     if (robotIsReal)		       { 	 	  	 double newV = ((double) manualScrolls[i].getValue()) 						 / manualScrollScale;	  	         if ((newV >= realRobRestr[i][0]) &&			     (newV <= realRobRestr[i][1]))			   {			     manualChange(i,newV);			     if (i == 4)		               realRobotInterface(3, angles[i].act);			     else 			       realRobotInterface(i, angles[i].act);			   }			 else			   manualScrolls[i].setValue((int) 				   (manualScrollScale * angles[i].act));		       }		     else		       manualChange(i,((double) manualScrolls[i].getValue())				    / manualScrollScale);		     return true;	         }	   if (e.target == zoomScroll)	     {	       switch(e.id)		 {		   case Event.SCROLL_LINE_UP:		   case Event.SCROLL_LINE_DOWN:	  	   case Event.SCROLL_PAGE_UP:		   case Event.SCROLL_PAGE_DOWN:  		   case Event.SCROLL_ABSOLUTE:		     zoomValue = (float)(((Integer)e.arg).					 intValue()) / zoomScrollScale;		     animation.setScale(zoomValue);		     repaint();		     break;		 }	       return true;	     } 	   if (e.target == handScroll)	     {	       switch(e.id)		{		   case Event.SCROLL_LINE_UP:		   case Event.SCROLL_LINE_DOWN:	  	   case Event.SCROLL_PAGE_UP:		   case Event.SCROLL_PAGE_DOWN:  		   case Event.SCROLL_ABSOLUTE:		     double helpHand = ((double) handScroll.getValue())				           / handScrollScale; 		     handChange(helpHand);		     break;		}	      return true;	     }	   if (e.target == speedScroll)	     {		switch(e.id)	          {		    case Event.SCROLL_LINE_UP:		    case Event.SCROLL_LINE_DOWN:	  	    case Event.SCROLL_PAGE_UP:		    case Event.SCROLL_PAGE_DOWN:  		    case Event.SCROLL_ABSOLUTE:		      xControl = speedScroll.getValue();	 	      newSpeed();	              break;		  }		return true;	     }	   if (e.target == virtualRobot)	     {	       if (robotIsReal)	         tidyUpRealRobot();	       return true;	     }	   if (e.target == realRobot)	     {	       if (!robotIsReal)		 {	           installRealRobot();		   realRobotInterface(4, handValue);		 }					 	       return true;	     } 	   if (e.target == lineButton)	     {         	       if ((lineButton.getSelectedItem()).equals(onLine))	         {			   fAutoLine = 0;// I'm copying the original c-program where	         }               // booleans don't exist(easier for inv..Cine.)	       else	         {		   fAutoLine = 1;		 }	       return true;	     }	 	   if (e.target == weightsExec)	     {	       for (int i = 0; i < 6; i++)		 {		   int help;		   try 		     {		       help = Integer.parseInt(weightsText[i].getText()); 		     }		   catch (NumberFormatException err) 		     { 		       weightsText[i].setText(String.valueOf(angleWeights[i]));		       continue; // the textfield gets the right value back		     } 		   if (help > 0)	             angleWeights[i] = help;		   else 		     weightsText[i].setText(String.valueOf(angleWeights[i]));	         }	       return true;	     }	   if (e.target == quit)	     {	       RealRobot.RealRobotControl.closeFile();	       System.exit(0);// this is the end, my friend	     }	   for (int i = 0; i < 3; i++)	     if (e.target == linkScrolls[i])	       switch(e.id)		 {		   case Event.SCROLL_LINE_UP:		   case Event.SCROLL_LINE_DOWN:	  	   case Event.SCROLL_PAGE_UP:		   case Event.SCROLL_PAGE_DOWN:  		   case Event.SCROLL_ABSOLUTE:		     double actValue = (double)(((Integer)e.arg).intValue())	 			         / linkScrollScale;		     updateOldLinkLabel(i, actValue);						// only the label is changed		     return true;	         }	  if (e.target == linkExec)	    { 	      double[] actValues = new double[3];	      for (int kl = 0; kl < 3; kl++)		actValues[kl] = (double)linkScrolls[kl].getValue()		 	        / linkScrollScale;	      linkLengthChange(actValues); 	      return true;	    }	  for (int i = 0; i < 3; i++)	    if (e.target == autoScrolls[i])	       switch(e.id)		 {		   case Event.SCROLL_LINE_UP:		   case Event.SCROLL_LINE_DOWN:		   case Event.SCROLL_PAGE_UP:		   case Event.SCROLL_PAGE_DOWN:  		   case Event.SCROLL_ABSOLUTE:		     for (int kl = 0; kl < 3; kl++)		       input[kl] = target[kl];		     input[i] = target[i] = 		       (double)((Integer)e.arg).intValue() 		     	 	/ autoScrollScale;		     updateScrolledAutoLabel(i);		     return true;	          }	   // default: 	   	   return super.handleEvent(e);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -