繪圖所以,我一直在與朋友的項目,但我已經打了用下面的代碼是死路一條。 //初始角度(對於第一個頂點) 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輪換的方式。我試過這個,但沒有奏效。
你能詳細說明你實際上想要畫什麼嗎?第一個循環看起來像你正在計算圓上的點。我沒有看到「p」,「q」和「TAU」的定義。無論如何,你在交替點之間畫線。當你說你得到四條頂點的兩條線,那就是你編碼的東西。對於頂點數爲4的情況,您會在點0和1之間生成一條直線,並在點2和點3之間生成一條直線。對於奇數,也許您不止一次地環繞該圓圈?如果計數是奇數,那麼第二輪將畫出不同的線。 (至少在顯示器) –