[GEiv]第四章:圖元詳解(二) 實用方法

第四章:圖元詳解(二)

實用方法

        這篇文章主要對圖元中的實用方法進行一系列介紹。

[實用方法]

        在圖元的方法當中,除去變換圖形的視覺樣式之外,還提供了一系列實用方法,它們會在您的開發過程中提供額外支持。

[面積函數]

        getSquare方法可以返回一個封閉多邊形的面積。

例子:

public static void main(String[] args) {
              UESIUES = new R();
              Objrect = UES.creatObj(UESI.BGIndex);
              rect.addGLRect("FFFFFF",0,0,30,50);
              System.out.println(rect.getSquare());
       }


        控制檯打印結果:1500.0

[碰撞函數]

        PolygonCollide函數可以判斷兩個多邊形是否發生了碰撞。

例子:

              UESI UES = new R();
              Objrect = UES.creatObj(UESI.BGIndex);
              rect.addGLRect("FFFFFF",0,0,300,300);
              rect.setAngle(45);
              rect.setPosition(CANExPos.POS_CENTER);
              rect.setDx(rect.getDx()+ 200);
              rect.show();
             
              Objrect2 = UES.creatObj(UESI.BGIndex);
              rect2.addGLRect("FFFF00",0,0,300,300);
              rect2.setAngle(45);
              rect2.setPosition(CANExPos.POS_CENTER);
              rect2.setDx(rect2.getDx()- 200);
              rect2.show();
              System.out.println(rect.PolygonCollide(rect2));


        

打印結果:true

        將上例中兩個矩形長寬改爲200:

        

打印結果:false

[距離相關性]

        getRefDistance函數可返回兩個圖元的中心距離,將以false爲結果的上例,加入如下語句:

rect.getRefDistance(rect2);

打印結果:

false

400.0

[角度相關性]

        rect.getRefTheta函數可以返回另一個圖元中心相對於本圖元中心的弧度值,該值以Y負方向爲0點,順時針爲正。

    

              UESI UES =new R();
              Objrect = UES.creatObj(UESI.BGIndex);
              rect.addGLRect("FFFFFF",0,0,100,100);
              rect.setPosition(CANExPos.POS_CENTER);
              rect.show();
              Objrect2 = UES.creatObj(UESI.BGIndex);
              rect2.addGLRect("FFFF00",0,0,100,100);
              rect2.setPosition(CANRefPos.RPO_CORNER_RIGHTTOP,rect,100f);
              rect2.show();
              System.out.println(rect.getRefTheta(rect2));

        

        打印結果:0.7853982(約爲PI/4)

[簡單動畫]

        在某種場合下,我們僅需要進行一些簡單的移動實現,爲了這個簡單的動畫書寫Serial似乎很不值得,因此有一組移動圖元的方法:

        moveCTo(Dx,Dy, allms):將圖元的中心移動到給定位置,最後一個參數allms代表經歷的時間。

        moveDTo(Dx,Dy, allms):原理如上,是把圖元的位置(不是中心)移動到指定值。

在實際的開發過程中,這兩個方法用到的並不多,所以大部分情況下,實現動畫效果還是老老實實地寫Serial吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章