2014-04-16 32 views
0

繪圖所以,我一直在與朋友的項目,但我已經打了用下面的代碼是死路一條。 //初始角度(對於第一個頂點) double angle = PI/2; // double angle = 0; int scale = 220; int centerX = 300; int centerY = 250;並非所有的臺詞都在SFML vertexArray

// Calculate the location of each vertex 
for(int iii = 0; iii < vertices.getVertexCount(); iii++) { 
    // Adds the vertices to the diagram 
    vertices[iii].position = sf::Vector2f(centerX + cos(angle) * scale, centerY - sin(angle) * scale); 
    vertices[iii].color = sf::Color::White; 

    // Calculates the angle that the next point will be at 
    angle += q*(TAU/p); 
} 

// Draws the lines on the diagram 
sf::VertexArray lines = sf::VertexArray(sf::Lines, vertices.getVertexCount()); 
for(int iii = 0; iii < lines.getVertexCount()-1; iii+=2) { 
    lines[iii] = vertices[iii]; 
    lines[iii+1] = vertices[iii+1]; 
    lines[iii].color = sf::Color(255,(iii)*50,255,255);//sf::Color::White; 
    lines[iii+1].color = sf::Color(255,(iii+1)*50,255,255);//sf::Color::White; 
} 
return lines; 

編譯器不會給任何錯誤,但是當我運行的代碼行的正好一半露面,但只有當p是偶數(p是多邊形頂點的個數)。對於例如,當我嘗試繪製一個方形p = 4時,如果我嘗試繪製五角形p = 5,則會顯示出2行。所有行顯示出來。 在另一個論壇上,有人建議將0.5f添加到所有頂點的座標以改變openGl輪換的方式。我試過這個,但沒有奏效。

+0

你能詳細說明你實際上想要畫什麼嗎?第一個循環看起來像你正在計算圓上的點。我沒有看到「p」,「q」和「TAU」的定義。無論如何,你在交替點之間畫線。當你說你得到四條頂點的兩條線,那就是你編碼的東西。對於頂點數爲4的情況,您會在點0和1之間生成一條直線,並在點2和點3之間生成一條直線。對於奇數,也許您不止一次地環繞該圓圈?如果計數是奇數,那麼第二輪將畫出不同的線。 (至少在顯示器) –

回答

0

始終提供您所看到的截圖以及你想達到

變化

sf::VertexArray lines = sf::VertexArray(sf::Lines, vertices.getVertexCount()); 
for(int iii = 0; iii < lines.getVertexCount()-1; iii+=2) { 
    lines[iii] = vertices[iii]; 
    lines[iii+1] = vertices[iii+1]; 
    lines[iii].color = sf::Color(255,(iii)*50,255,255);//sf::Color::White; 
    lines[iii+1].color = sf::Color(255,(iii+1)*50,255,255);//sf::Color::White; 
} 

sf::VertexArray lines = sf::VertexArray(sf::LinesStrip, vertices.getVertexCount()); 
for(int iii = 0; iii < lines.getVertexCount(); iii+=1) { 
    lines[iii] = vertices[iii]; 
    lines[iii].color = sf::Color(255,(iii)*50,255,255);//sf::Color::White; 
} 

由於原始類型SF什麼漆繪製::線條需要比您繪製的線條多2點。 sf :: LinesStrip應該在VertexArray中實現。

+0

比較遺憾的是沒有任何改變這裏是做什麼的截圖:http://s17.postimg.org/bv592i3rj/example.png – user2669119

+0

你可以擴大在什麼'P中的樣本','q'和'TAU'是?其中可能存在缺陷。 – mrVoid

+0

我已經通過循環的內部工作更新了答案。 – mrVoid

相關問題