2
我正在做一個使用OpenGL繪製這個的方法,繪圖是2D的。使用OpenGL繪製費馬螺旋
我知道理論,你可以在維基百科找到定義,但我不知道自己做錯了什麼。問題是當我使用平方根的負解來繪製點時。
//-----------------------------------------
// ESPIRAL DE FERMAT
//-----------------------------------------
// float a --> x-inicio
// float b --> y-inicio
// float thetaStart --> angulo de comienzo
// float thetaEnd --> angulo de fin.
// unsigned int samples --> número de muestras, por defecto 200.
//------------------------------------------------------------------
void glFermatSpiral(float a, float b, float thetaStart, float thetaEnd, unsigned int samples = 200)
{
glBegin(GL_LINE_STRIP);
float dt = (thetaEnd - thetaStart)/(float)samples;
for(unsigned int i = 0; i <= samples; ++i)
{
// archimedean spiral
float theta = thetaStart + (i * dt);
// Specific to made a Fermat Spiral.
float r = sqrt(theta);
// polar to cartesian
float x = r * cos(theta);
float y = r * sin(theta);
// Square root means two solutions, one positive and other negative. 2 points to be drawn.
glVertex2f(x, y);
x = -r * cos(theta);
y = -r * sin(theta);
glVertex2f(x, y);
}
glEnd();
}
這就是我稱之爲我的繪圖空間的方法。
glFermatSpiral(0.05, 0.2, 1.0, 25.0);
gluOrtho2D(-4, 4, -4, 4); // left, right, bottom, top
這就像解決方案將是。
究竟是什麼問題? – Tim
這種方法繪製了一些非常奇怪的東西,它們之間的線交叉,而不是想要的解決方案。 –