亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Robocode 基本原理之方向剖析

2019-11-18 13:08:54
字體:
來源:轉載
供稿:網友

  前言:
  很多研究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:是機器人的某個部件如雷達發現的目標與方向的角度差,順時針為正角度在-180到180之間
  
  看了這段文字大家可能還是不太明白,整個屏幕哪個是0度角,整個是坐標原點呢? 順時針與逆時針的方向如何區分?
  
  概念與平面圖:
  在開始說明之前大家先得清楚幾個在Robocode中很重要的概念:
  
  坐標系:Robocode整個坐標系都是戰場屏幕以左下角為原點
  
  絕對方向系:Robocode中不管機器人在哪個方向都是以靜態戰場屏幕為參照的絕對角度(也即大家說的Heading),正上方為0度角。也即不管是Robot,Gun,Radar向北為0,向東為90,向南為180,向西為270。
  
  相對方向系:相對方向是Robot,Gun,Radar以機器人的動態heading角度為參照的角度差不再以整個靜態屏幕為參照了,叫它相對因為機器人的heading是隨著機器人移動而不停的在改變,heaing只是個相對物體。
  
  下圖很清楚的說明了坐標系統及絕對方向
  
 Robocode 基本原理之方向剖析(圖一)

  
  哦似乎明白了一些,可頭腦中還有一些不是很清楚。我們來做個測試。測試方法很簡單,寫兩個機器人,一個什么一動不動坐在原點掃掃Gun并打印出自己的Heading我們叫它Geny;另一個也不移動,只是Gun進行緩慢的轉動同時打印出自己的Heading,Bearing,和Radar的Heading,我們叫它GenyTrack1. (注:此處的數據是double類型,沒有進行轉化我們近似的熟悉它為整數,具體的轉化方法和更好測試方法我們會在以后的文章中給出):
  
  代碼如下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在不同位置得到的數據圖.
  
 Robocode 基本原理之方向剖析(圖二)

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久极品av| 欧美韩国理论所午夜片917电影| 日韩一中文字幕| 久久精品国亚洲| 欧美中文字幕视频在线观看| 在线观看国产精品91| 久久久久久美女| 久久综合88中文色鬼| 国产日韩在线亚洲字幕中文| 日韩女在线观看| 国产日韩欧美视频| 欧美放荡办公室videos4k| 日韩欧美成人区| 中文亚洲视频在线| 欧美裸体xxxx极品少妇软件| 国产亚洲精品美女| 欧美性videos高清精品| 欧美电影院免费观看| 成人免费黄色网| 久久久久久12| 亚洲乱码一区av黑人高潮| 色香阁99久久精品久久久| 国产日韩欧美视频| 欧美日韩中国免费专区在线看| 欧美高清视频在线播放| 69av在线播放| 国产欧美精品一区二区三区-老狼| 欧美一级高清免费播放| 国产999精品久久久影片官网| 色噜噜狠狠狠综合曰曰曰88av| 亚洲国产黄色片| 欧美精品久久一区二区| 亚洲国产婷婷香蕉久久久久久| 狠狠色狠狠色综合日日五| 欧美黑人一级爽快片淫片高清| 欧美日韩中文字幕日韩欧美| 91免费福利视频| 亚洲性线免费观看视频成熟| 国产精品一区二区三区毛片淫片| 色琪琪综合男人的天堂aⅴ视频| 97香蕉久久超级碰碰高清版| 亚洲精品狠狠操| 久久好看免费视频| 91在线观看欧美日韩| 777国产偷窥盗摄精品视频| 欧美亚洲在线播放| 456国产精品| 国产一区二区三区在线免费观看| 国模精品视频一区二区| 国内精品中文字幕| 精品国产成人av| 日韩大陆欧美高清视频区| 欧美精品videos另类日本| 成人黄色在线免费| 亚洲福利影片在线| 欧美性猛交xxxx乱大交极品| 亚洲人午夜精品免费| 国产精品福利网| 欧美日韩亚洲天堂| 国产综合香蕉五月婷在线| 国产精品盗摄久久久| 成人免费大片黄在线播放| 国产97色在线|日韩| 欧美亚洲免费电影| 欧美另类精品xxxx孕妇| 国产成一区二区| 久久99久久99精品免观看粉嫩| 亚洲精品日韩久久久| 精品人伦一区二区三区蜜桃免费| 91精品视频专区| 午夜精品久久久久久久99热浪潮| 欧美激情一区二区三区久久久| 国产精品普通话| 久久久国产精品视频| 色婷婷亚洲mv天堂mv在影片| 日韩中文有码在线视频| 欧美国产日本高清在线| 精品偷拍一区二区三区在线看| 国产日韩欧美夫妻视频在线观看| 欧美激情视频网站| 91精品国产乱码久久久久久蜜臀| 国产精品视频午夜| 国产精品中文字幕久久久| 国产成人精品久久久| 国产精品高潮呻吟久久av野狼| 狠狠色狠狠色综合日日小说| 亚洲最大激情中文字幕| 国产一区二区三区在线看| 久久久精品国产网站| 国产一区二区三区直播精品电影| 欧美日韩国产页| 98精品在线视频| 日韩欧美一区二区在线| 午夜免费久久久久| 亚洲欧洲在线视频| 欧美大人香蕉在线| 欧洲日本亚洲国产区| 国产一区二区欧美日韩| 成人午夜黄色影院| 欧美大尺度激情区在线播放| 欧美亚洲一级片| 欧美疯狂xxxx大交乱88av| 国产午夜精品一区二区三区| 国产欧美韩国高清| 亚洲精品97久久| 欧美一区二区三区四区在线| 欧美午夜美女看片| 一区二区三区无码高清视频| 欧美成人免费va影院高清| 色综合色综合久久综合频道88| 日韩中文字幕在线视频播放| 日韩电影中文字幕一区| 精品一区二区三区电影| 久久视频国产精品免费视频在线| 一本色道久久综合狠狠躁篇怎么玩| 日韩欧美成人网| 国产精品久久久久7777婷婷| 中文字幕精品www乱入免费视频| 日韩经典第一页| 91亚洲精品久久久久久久久久久久| 国产ts人妖一区二区三区| 日本久久久a级免费| www亚洲精品| 色777狠狠综合秋免鲁丝| 欧美成人精品影院| 日韩中文视频免费在线观看| 国产成人激情小视频| 久久在精品线影院精品国产| 九九热这里只有精品免费看| 日韩最新免费不卡| 欧美日韩国产二区| 91久久久久久久一区二区| 欧美亚洲第一区| 国产精品久久久久久久久久免费| 久久这里有精品视频| 精品久久久久久中文字幕大豆网| 欧美性xxxx极品hd满灌| 不卡在线观看电视剧完整版| 91精品国产自产91精品| 91极品女神在线| 欧美视频第一页| 亚洲欧美国内爽妇网| 韩日精品中文字幕| 丝袜美腿精品国产二区| 国产91在线播放精品91| 日韩美女福利视频| 最近2019年日本中文免费字幕| 色婷婷综合成人av| 欧美成人h版在线观看| 2023亚洲男人天堂| 久久久在线免费观看| 日韩大片免费观看视频播放| 久久免费视频这里只有精品| 日韩国产欧美区| 日韩小视频网址| 亚洲男人天堂视频| 亚洲免费中文字幕| 国产精品视频久久久久| 成人黄色大片在线免费观看| 国产精品久久二区| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲精品720p| 尤物九九久久国产精品的特点| 91精品久久久久久久久久久久久|