麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Robocode 基本原理之方向剖析

2019-11-18 13:08:54
字體:
供稿:網(wǎng)友

  前言:
  很多研究Robocode的 玩家都被其中的方向及坐標弄糊涂了。下面就跟著Skyala.Li一起來揭開其中的奧妙。
  
  首先我們來看看一段英文的翻譯及說明:
  heading - absolute angle in degrees with 0 facing up the screen, positive clockwise. 0 <= heading < 360.
  
  bearing - relative angle to some object from your robot's heading, positive clockwise. -180 < bearing <= 180
  
  heading:是機器人方向與屏幕正上方的角度差,方向在0到360之間.
  
  bearing:是機器人的某個部件如雷達發(fā)現(xiàn)的目標與方向的角度差,順時針為正角度在-180到180之間
  
  看了這段文字大家可能還是不太明白,整個屏幕哪個是0度角,整個是坐標原點呢? 順時針與逆時針的方向如何區(qū)分?
  
  概念與平面圖:
  在開始說明之前大家先得清楚幾個在Robocode中很重要的概念:
  
  坐標系:Robocode整個坐標系都是戰(zhàn)場屏幕以左下角為原點
  
  絕對方向系:Robocode中不管機器人在哪個方向都是以靜態(tài)戰(zhàn)場屏幕為參照的絕對角度(也即大家說的Heading),正上方為0度角。也即不管是Robot,Gun,Radar向北為0,向東為90,向南為180,向西為270。
  
  相對方向系:相對方向是Robot,Gun,Radar以機器人的動態(tài)heading角度為參照的角度差不再以整個靜態(tài)屏幕為參照了,叫它相對因為機器人的heading是隨著機器人移動而不停的在改變,heaing只是個相對物體。
  
  下圖很清楚的說明了坐標系統(tǒng)及絕對方向
  
 Robocode 基本原理之方向剖析(圖一)

  
  哦似乎明白了一些,可頭腦中還有一些不是很清楚。我們來做個測試。測試方法很簡單,寫兩個機器人,一個什么一動不動坐在原點掃掃Gun并打印出自己的Heading我們叫它Geny;另一個也不移動,只是Gun進行緩慢的轉(zhuǎn)動同時打印出自己的Heading,Bearing,和Radar的Heading,我們叫它GenyTrack1. (注:此處的數(shù)據(jù)是double類型,沒有進行轉(zhuǎn)化我們近似的熟悉它為整數(shù),具體的轉(zhuǎn)化方法和更好測試方法我們會在以后的文章中給出):
  
  代碼如下Geny.java
  
  //Geny.java
  
  package wind;
  
  import robocode.*;
  
  import java.io.*;
  
  public class Geny extends Robot
  
  {
  
  public void run() {
  
  ahead(100);
  
  System.out.  
  while(true) {
  
  turnGunRight(360);
  
  }
  
  }
  
  }
  
  GenyTrack1.java
  
  //GenyTrack1.java
  
  package wind;
  
  import robocode.*;
  
  public class GenyTrack1 extends Robot
  
  {
  
  public void run () {
  
  while (true)
  
  {
  
  turnGunRight(5);
  
  }
  
  }
  
  public void onScannedRobot(ScannedRobotEvent e)
  
  {
  
  System.out.println("getBearing "+e.getBearing());
  
  System.out.println("heading "+getHeading());
  
  System.out.println("getRadarHeading() "+getRadarHeading());
  
  turnGunRight(e.getBearing());
  
  fire(3);
  
  }
  
  }
  
  要想了解機器人的各個部件及說明請看文章:Robocode機器人解剖圖
  
  絕對方向系Heading:
  下面是剪切到的Geny和GenyTrack1在不同位置得到的數(shù)據(jù)圖.
  
 Robocode 基本原理之方向剖析(圖二)

  圖一
  
  圖一解:大家觀察機器人GenyTrack1的數(shù)據(jù)heading:64.421114…~ 64,說明它正好坐落在屏幕絕對方向系64度的地方。也就是說GenyTrack1當前的Heading方向為64度。
  
 Robocode 基本原理之方向剖析(圖三)

  圖二
  
  圖二解:大家觀察機器人GenyTrack1的數(shù)據(jù)heading:161.79…,說明它正前方正好正對屏幕絕對方向系161度的地方。也就是說GenyTrack1當前的Heading方向為161度。而我們的Geny正前方正對35度的地方。
  
  大家對照著方向系一看我想一切就會明白的。是不是有點成就感了,不急,后面還有。
  
  相對方向系Bearing:
  Bearing,Bearing該死的Bearing,我想大家頭痛的就是它的。在此我們就以機器人的雷達(Radar)為例來說明,源程序(GenyTrack1)中我們用到的是事件:onScannedRobot(ScannedRobotEvent e) ,所以我們要用到的就是Radar的Heading,其它相關(guān)的如Bullet,Gun的方法類似,有愛好的朋友可以自己測試一下。
  
  我們先把數(shù)據(jù)近似提出來如下表:
  
  機器人   Heaing  RadarHeading  Bearing
  Geny     35
  GenyTrack1  161    275      114
  
  在此處機器人和Radar的Heading我想大家對照圖上的方向系及上面的絕對方向體系說明應(yīng)該明白了,只是要注重機器人哪是前哪是后:詳見Robocode機器人解剖圖.
  
  (Geny的Heading在此處沒有用上,只是給大家參考一下)你看我們的GenyTrack1前面正對著161角,雷達在屏幕276度角的地方發(fā)現(xiàn)了Geny機器人。所以此處的Geny和GenyTrakc1相差的角度=276-161度(取絕對值,正負由轉(zhuǎn)動方向決定),由于此時的Geny機器人正位于GenyTrack1順時針方向上(GenyTrack1的0,180之間),所以相對角度Bearing就是順時針方向(+114)度,(圖上每次數(shù)據(jù)有一小點差是由于打印的數(shù)據(jù)及低級機器人完成所有代碼后才進行處理事件。不是即時的。要即時處理涉及到高級機器人AdvanceRobot的一些特性)。
  
  下面得到相對角度是為負的圖:原理同上。
  
Robocode 基本原理之方向剖析(圖四)

  圖三
  
  機器人   Heaing  RadarHeading  Bearing
  Geny     35
  GenyTrack1  57    238      -173
  
  238-57,由于Geny處于GenyTrack1背后(-180,0)。為逆時針方向所以為負。
  
  時針略說:
  順時針和逆時針是看另一機器人是在你的Heading角度的(0,180)還是(-180,0)之間。
  
  再這次提醒:Heading是個靜態(tài)角度,正上方總為0.不管是取Heading,還是取方向
  
  Bearing是個角度差值,是由參照的Heading和發(fā)現(xiàn)時的Heading的差值。
  
  好了,方向的問題就說到這,這是Skyala.Li的理解,歡迎大家來討論。此處沒有引用坐標系的具體說明。請看: Robocode 基本原理之坐標系剖析

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 91短视频在线播放 | 午夜a狂野欧美一区二区 | 免费看污视频在线观看 | 久久免费视屏 | 欧美交在线 | 泰剧19禁啪啪无遮挡大尺度 | chinesexxxx刘婷hd 国产资源视频在线观看 | 日韩在线播放第一页 | 日本一区二区在线看 | 精品久久久久久久 | 康妮卡特欧美精品一区 | 日日草视频 | 成人免费毛片一 | 国产精品1区2区在线观看 | 欧美精品色精品一区二区三区 | 日韩黄色片免费看 | 亚洲性生活免费视频 | 久久在线 | 国产91大片 | 国产自在线 | 91美女啪啪 | 免费观看三级毛片 | 嫩呦国产一区二区三区av | 中文字幕一区二区三区四区 | 午夜视频你懂的 | 麻豆视频在线观看免费网站 | 久久亚洲线观看视频 | 精品久久久久久久久中文字幕 | 懂色av懂色aⅴ精彩av | 女人裸体让男人桶全过程 | 国产黄色录像片 | 久久17| 黄色a级片免费观看 | 欧美日韩大片在线观看 | 色网站综合 | 亚洲操比视频 | 国产一级不卡毛片 | 亚洲黑人在线观看 | 国产69精品99久久久久久宅男 | 久久国产精品免费视频 | 国产一级免费片 |