Файл: Использование аттракторов.docx

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 03.12.2023

Просмотров: 64

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
// on_paint();

break;

case 'm':

nk -= 30;

// on_paint();

break;

case 'r':

if (rejxmploskosti == 4)rejxmploskosti = 1;

else

rejxmploskosti++;

on_paint();

break;

case 'o':

if (flagproekcxi[3] == 4) { glutDisplayFunc(Tpaint); tekpaint = Tpaint; flagproekcxi[3] = 0; flagproekcxi[0] = 1; flagproekcxi[1] = 1; flagproekcxi[2] = 1; }

else

if (flagproekcxi[3] == 3) { flagproekcxi[3]++; flagproekcxi[0] = 1; flagproekcxi[1] = 1; flagproekcxi[2] = 0; }

else

if (flagproekcxi[3] == 2) { flagproekcxi[3]++; flagproekcxi[0] = 1; flagproekcxi[1] = 0; flagproekcxi[2] = 1; }

else

if (flagproekcxi[3] == 1) { flagproekcxi[3]++; flagproekcxi[0] = 0; flagproekcxi[1] = 1; flagproekcxi[2] = 1; }

else if (flagproekcxi[3] == 0) {

flagproekcxi[3]++; glutDisplayFunc(on_paint); tekpaint = on_paint;

}
on_paint();

break;
case 'p':

teka = 0;

system("cls");

cout << "vvedite x normali ploskosti";

vvod = 5;

break;

case 't':

if (meta) { meta = 0; metod = vdiy; }

else { meta = 1; metod = rkdiy; }
break;

case 'h':

system("cls");

cout << "Enter - naqat' vvod peremennxh" << endl

<< "n - uv'eliqit' wag" << endl

<< "m - um'en'wxt'" << endl

<< "p - vv'esti normal' ploskosti" << endl

<< "t - eyler || rungekut" << endl

<< "o - proekcxya" << endl

<< "r - p'er'ekl'uqit' r'ejxm otobrajeniya";

break;

case 'k':

system("cls");

cout <<

endl << "n=" << nk <<

endl << "x=" << xnk <<

endl << "y=" << ynk <<

endl << "z=" << znk;

break;

}

}

// 2 obrabotka hotk'eyev-------------------------------------------------------------------------------------------------------------

//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

// 1 vvod peremennxh-----------------------------------------------------------------------------------------------------------------

if (key == 13)

{

if (vvod == 0) { vvod = 1; strcpy(a, ""); cout << endl << "vvedite peremennuyu kotoruyu sobiryet'es' zadat' (x | y | z)"; teka = 0; }

else if (vvod == 1)

{

system("cls");

if (a[0] == 'x')vvod = 2;

else if (a[0] == 'y')vvod = 3;

else if (a[0] == 'z')vvod = 4;

else if (a[0] == 's')

{

if (a[1] == 'x')

vvod = 11;

else if (a[1] == 'y')

vvod = 12;

else if (a[1] == 'z')

vvod = 13;

else vvod = 0;

}

else vvod = 0;

if (vvod)cout << "vvedite " << a[0] << endl << a[0] << " = ";

teka = 0;

}

else if (vvod == 2) { cout << "f=" << f(sdix, tfx); vvod = 0; }

else if (vvod == 3) { cout << "f=" << f(sdiy, tfy); vvod = 0; }

else if (vvod == 4) { cout << "f=" << f(sdiz, tfz); vvod = 0; }

else if (vvod == 5) { cout << endl << "vvedite normal y"; normal.x = charvfloat(a, teka); teka = 0; vvod = 6; }

else if (vvod == 6) { cout << endl << "vvedite normal z"; normal.y = charvfloat(a, teka); teka = 0; vvod = 7; }

else if (vvod == 7) { cout << endl << "vvedite point x"; normal.z = charvfloat(a, teka); teka = 0; vvod = 8; }

else if (vvod == 8) { cout << endl << "vvedite point y"; point.x = charvfloat(a, teka); teka = 0; vvod = 9; }

else if (vvod == 9) { cout << endl << "vvedite point z"; point.y = charvfloat(a, teka); teka = 0; vvod = 10; }

else if (vvod == 10) { point.z = charvfloat(a, teka); oppl(normal, point); vvod = 0; }

else if (vvod == 11) { start.x = charvfloat(a, teka); vvod = 0; }

else if (vvod == 12) { start.y = charvfloat(a, teka); vvod = 0; }

else if (vvod == 13) { start.z = charvfloat(a, teka); vvod = 0; }

}

// 1 vvod peremennxh-----------------------------------------------------------------------------------------------------------------


//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

}
void on_motion(int x, int y)

{

switch (button) {

case 0:

angleX += x - mouseX;

angleY += y - mouseY;

mouseX = x;

mouseY = y;

break;

case 2:

distZ += (y - mouseY) / 10;

cout << distZ;

mouseY = y;

break;

}

}
void on_mouse(int _button, int state, int x, int y)

{

if (state == 1) { // 0 - натиснули на кнопку, 1 - відпустили кнопку

button = -1; // ніяка кнопка не натиснута

return;

}

switch (button = _button) {

case 0: mouseX = x; mouseY = y;// cout << "0------------------------------------------------";

break;

case 2: //angleX = 0; angleY = 0;

mouseY = y;// cout << "2------------------------------------------------";//distZ = -15

; break;

}

}
void on_size(int w, int h)

{

width = w;

height = h;

if (height == 0) height = 1; // Запобігання ділення на нуль, якщо вікно занадто коротке

// (ви не можете зробити вікно нульовою ширини).

}
void on_timer(int value)

{

tekpaint(); // перемалюємо екран

glutTimerFunc(50, on_timer, 0); // через 33мс викличеться ця функція

}
int main(int argc, char* argv[])

{

strcpy(a,"50*c(v*3)+34*s(z/7)");
f(sdix, tfx);

strcpy(a, "100*s(v*10)");

f(sdiy, tfy);

strcpy(a, "100*c(v*10)");

f(sdiz, tfz);

start.x = 0.1;

start.y = 0.1;

start.z = 0.1;
glutInit(&argc, argv); // ініціалізація GLUT

glutInitWindowSize(600, 600); // установка розмірів вікна

glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE); // настройка OpenGL контексту

glutCreateWindow("Третій приклад"); // створення вікна

glutDisplayFunc(on_paint); tekpaint = on_paint; // вказуємо функцію, яка відповідає за перемалювання

glutReshapeFunc(on_size); // --//-- за зміну розмірів вікна

glutKeyboardFunc(on_keyboard); // --//-- за натискання наклавішу

glutMotionFunc(on_motion); // --//-- за переміщення миші з натиснутою кнопкою

glutMouseFunc(on_mouse); // --//-- за натискання на кнопку миші

glutTimerFunc(50, on_timer, 0); // кожні 33мс викликається ця функція

glutMainLoop(); // цикл обробки повідомлень
return(0);

}