gpt4 book ai didi

c - OpenGL 中的洛伦兹吸引子

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:20 25 4
gpt4 key购买 nike

我正在尝试使用 OpenGL 在 3D 空间中对洛伦兹吸引子进行建模。我在显示函数中编写了以下代码:

void display()
{
// Clear the image
glClear(GL_COLOR_BUFFER_BIT);
// Reset previous transforms
glLoadIdentity();
// Set view angle
glRotated(ph,1,0,0);
glRotated(th,0,1,0);

glColor3f(1,1,0);
glPointSize(1);

float x = 0.1, y = 0.1, z = 0.1;
glBegin(GL_POINTS);

int i;
for (i = 0; i < initialIterations; i++) {
// compute a new point using the strange attractor equations
float xnew = sigma*(y-x);
float ynew = x*(r-z) - y;
float znew = x*y - b*z;

// save the new point
x = x+xnew*dt;
y = y+ynew*dt;
z = z+znew*dt;

glVertex4f(x,y,z,i);
}


glEnd();

// Draw axes in white
glColor3f(1,1,1);
glBegin(GL_LINES);
glVertex3d(0,0,0);
glVertex3d(1,0,0);
glVertex3d(0,0,0);
glVertex3d(0,1,0);
glVertex3d(0,0,0);
glVertex3d(0,0,1);
glEnd();
// Label axes
glRasterPos3d(1,0,0);
Print("X");
glRasterPos3d(0,1,0);
Print("Y");
glRasterPos3d(0,0,1);
Print("Z");
// Display parameters
glWindowPos2i(5,5);
Print("View Angle=%d,%d %s",th,ph,text[mode]);
// Flush and swap
glFlush();
glutSwapBuffers();
}

但是,我找不到合适的吸引子。我相信我的 xyz 方程是正确的。我只是不确定如何以正确的方式展示它以获得正确的吸引子。谢谢你的帮助。以下是我的程序目前正在发布的内容:

enter image description here你好

最佳答案

好的,我遇到了这个问题,您需要做一些事情,首先,当您使用 glVertex4f() 绘制点时,您想要将其更改为 glVertex3f 或将 w 值更改为 1。使用 glVertex3f 默认情况下会将 w 设置为 1。 w 值会改变点的缩放比例,因此您最终会得到一些疯狂的数字,其中 i 为 50000 左右。

第二,在修复之后,您会发现这些值超出了您的视觉范围,因此您需要将其缩小。我会在您绘制点时执行此操作,因此在您的情况下我会使用 glVertex3f(x*.05,y*.05,z*.05)。如果 .05 太大或太小,请调整它以满足您的需要。

最后确保您的 dt 值为 .001,并且 x、y 和 z 的起点应该在 1 左右。

理想情况下,您希望将所有这些点放在一个数组中,然后读取该数组以绘制您的点,而不是每次调用显示时都进行计算。所以在其他地方进行计算,只需发送要显示的点即可。希望这对您有所帮助。

关于c - OpenGL 中的洛伦兹吸引子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12507054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com