2016-04-25 92 views
-1

我有Polygon類的多邊形。我怎樣才能讓它變得更大或更小。我正在尋找矩形的grow(int,int)函數。我沒有任何想法,我該怎麼做。如何製作更大的多邊形

在此先感謝!

@sorry爲我愚蠢的問題沒有任何細節。

我使用使得多邊形:

private int[] xCoord = new int[50], yCoord= new int[50]; //Arrays containing the points of the polygon 
    private int pointCt=0; //The number of points that have been input 

我點擊某一個地方鼠標,再畫一條線

xCoord[pointCt] = arg0.getX(); 
yCoord[pointCt] = arg0.getY(); 
pointCt++; 


    private void putLine(int x1,int y1,int x2,int y2) 
    { 
     Graphics g= getGraphics(); 
     g.drawLine(x1, y1, x2, y2); 
     g.dispose(); 
    } 

    polygon=new MyPolygon(xCoord,yCoord,pointCt); 

我不知道到底哪行我的代碼,我應該但我希望它足夠。我只是需要一個建議,如何在桌子上製作更大的多邊形。 謝謝!

+3

你必須學習數學。然後你必須應用數學。 – Gendarme

+2

我投票結束這個問題太廣泛。甚至不清楚如何表示多邊形,使用哪個座標系等。 –

+1

歡迎來到Stack Overflow!你似乎在要求某人爲你寫一些代碼。堆棧溢出是一個問答網站,而不是代碼寫入服務。請[see here](http://stackoverflow.com/help/how-to-ask)學習如何編寫有效的問題。 – 2016-04-25 17:00:19

回答

-1

如果您有權訪問頂點的位置數據,那麼只需計算所有頂點之間的距離並將其乘以任何您想要的比例即可。 (例如,將所有距離增加20%,乘以1.20)。您可以使用距離公式來做到這一點。 Math.sqrt((x2-x1)^2 + (y2-y1)^2)

一旦你得到新的距離,只需將舊距離和新距離之間的差異添加到x2和y2,並且您有新的頂點座標,併爲多邊形的每個頂點執行此操作。如果你的多邊形是在原點(0,0),你可以將頂點乘以任何你想要的比例,否則我建議根據頂點距離進行縮放。

+0

如果他有權訪問它正在回答的頂點的座標。使用距離公式獲取頂點之間的距離,乘以該距離並修改頂點。 – Tyler

0

這些是線性代數最好涵蓋的操作。通過翻譯身體的平移,旋轉和縮放,你會得到很好的服務。但是...

如果你有所有的頂點數據,並且對象是原點(0,0,0),你可以將所有的頂點乘以一個數字 - 2.0會使物體兩倍大,3.0會使它變大三倍,0.5會將它縮小一半,等等。確保對所有組件都這樣做,所以如果您有二維對象,請確保您乘以每個組件的X值和Y值它的頂點由相同的數字組成。

如果對象不在原點,您可以找到對象的中心(通過獲取所有頂點的平均值),將其轉換爲原點(通過從每個頂點的位置減去中心),執行您的縮放(通過與前一段相同),並將中心添加回每個頂點。

這是最好的方式來做你以後的事情 - 不需要太多的距離或矩陣。