Конечно, я могу помочь вам в решении этой задачи. Вот пример кода на C++ с использованием библиотеки OpenGL:
```cpp
#include <GL/glut.h>
#include <math.h>
// Параметры окна OpenGL
int windowWidth = 800;
int windowHeight = 600;
// Параметры пузырьков
float bubbleRadius = 0.05f;
float bubbleSpeed = 0.001f;
int numBubbles = 100;
// Параметры температуры
float T = 50.0f; // Температура воды
float T0 = 20.0f; // Температура дна
// Функция для генерации случайных чисел в заданном диапазоне
float random(float min, float max) {
return min + static_cast<float>(rand()) / (static_cast<float>(RAND_MAX / (max - min)));
}
// Функция для отрисовки пузырьков
void drawBubbles() {
for (int i = 0; i < numBubbles; i++) {
glPushMatrix();
glColor3f(0.0f, 0.0f, 1.0f); // Синий цвет для пузырьков
glTranslatef(random(-1.0f, 1.0f), -1.0f + bubbleRadius, 0.0f); // Случайное положение пузырьков на дне
glutSolidSphere(bubbleRadius, 20, 20); // Отрисовка пузырьков
glPopMatrix();
}
}
// Функция для обновления позиции пузырьков
void updateBubbles() {
for (int i = 0; i < numBubbles; i++) {
glPushMatrix();
glTranslatef(0.0f, bubbleSpeed, 0.0f); // Перемещение пузырьков вверх
glPopMatrix();
}
}
// Функция отрисовки сцены OpenGL
void renderScene() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
drawBubbles();
updateBubbles();
glutSwapBuffers();
}
// Функция для обработки нажатия клавиши
void keyboardFunc(unsigned char key, int x, int y) {
if (key == 'q') {
exit(0); // Закрытие окна при нажатии на клавишу "q"
}
}
int main(int argc, char** argv) {
// Инициализация окна OpenGL
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(windowWidth, windowHeight);
glutCreateWindow("Bubble Simulation");
// Установка функций обработки событий
glutDisplayFunc(renderScene);
glutIdleFunc(renderScene);
glutKeyboardFunc(keyboardFunc);
// Установка цвета фона
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
// Запуск цикла обработки событий
glutMainLoop();
return 0;
}
```
Этот код использует библиотеку OpenGL, чтобы создать окно с рисованием и отображением пузырьков. В функции "drawBubbles" создаются и отрисовываются пузырьки на дне, а в функции "updateBubbles" обновляется их позиция. Температура "дна" и "воды" можно задать с помощью переменных "T" и "T0" соответственно. В этом примере мы используем случайное распределение пузырьков на дне кастрюли.
Не забудьте настроить проект, чтобы включить необходимые заголовочные файлы и библиотеки OpenGL. Если у вас возникнут дополнительные вопросы или пр