2013-12-10 204 views
0

我想旋轉一個矩形,而不使用旋轉功能,而是使用矩陣..我知道如何使用矩陣旋轉一條線,但我所有嘗試旋轉矩形都失敗了。處理,使用矩陣旋轉矩形?

我不認爲這是完全使用,但繼承人是我的代碼,旋轉線。

float[][] rotation; 
float[] position; 
float theta = 180; 
float pointX; 
float pointY; 
void setup() { 

    frameRate(60); 
    size(600, 600); 

    pointX = 0; 
    pointY = 0; 

rotation = new float[2][2]; 
position = new float[8]; 
} 

void draw() { 
background(200); 
theta = mouseX; 

position[0] = mouseY; 
position[1] = mouseY; 

position[2] = -mouseY; 
position[3] = mouseY; 

rotation[0][0] = cos(radians(theta)); 
rotation[0][1] = -sin(radians(theta)); 
rotation[1][0] = sin(radians(theta)); 
rotation[1][1] = cos(radians(theta)); 

float newpos[] = new float[8]; 

newpos[0] += position[0] * rotation[0][0]; 
newpos[1] += position[1] * rotation[0][1]; 

translate(width/2, height/2); 

line(0, 0, pointX+newpos[0], pointY+newpos[1]); 
line(0, 0, pointX+newpos[0] * -1, pointY+newpos[1] * -1); 

}

+0

任何你不使用android.graphics.Matrix的原因? – Michael

+0

它的學校和老師沒有提到任何關於它......而他不希望我們使用捷徑...... – Mark9135

+0

好吧(雖然如果這是一門編程課程,我是你的老師,我會責怪你製作自己的代碼而不是使用現有的類)。你的矩形代碼在哪裏? – Michael

回答

1

雖然這些線條行爲正常,但它是偶然的......您有一個關鍵的新點x和y的計算不是它應該是的。正如你在wikipedia發現,你需要計算你正確地做了矩陣正弦和餘弦,但創建新的點,當你不完全做到這一點:

enter image description here

enter image description here

+0

mmmm我會把這個放在哪裏?我認爲它應該實施,現在讓我的線不旋轉。 – Mark9135

+0

nvm我得到它的工作謝謝soooo了,我現在有一個方形旋轉的線框。但我的老師當然想成爲紅色..但我相信這是另一個話題 – Mark9135

0

開始通過在pushMatrix()/popMatrix具有外觀()和座標空間。

看看Daniel Shiffman's tutorial以及它的相當好的解釋。

如果您需要獲得比此更低的水平,請參閱PMatrix2D課程。 注意有一個rotate()函數。旋轉後,您可以簡單地應用 矩陣(使用applyMatrix()),但也可以使用push/pop矩陣調用。 另一種選擇是將矢量(矩形角)與旋轉矩陣相乘並繪製結果/變換後的點。

+0

問題是有旋轉功能...我得到了一個這樣的方形旋轉,但我的老師說,我們不能有一個旋轉功能,基本上他希望我們編碼旋轉功能在後臺做什麼。 – Mark9135

+0

[以防萬一](https://github.com/processing/processing/blob/master/core/src/processing/core/PMatrix2D.java#L142),也可能你的老師舉辦了一個關於變換矩陣的講座? ([像這樣的東西](http://people.bath.ac.uk/sej20/transform.html)) –

+0

是的,他的確教會我們關於它 – Mark9135