НОУ ІНТУЇТ | лекція | Основні графічні примітиви OpenGL і їх властивості

  1. Вправи. Побудова графіків функцій Приклад виконання завдання
  2. Виконання завдання

Вправи. Побудова графіків функцій

Приклад виконання завдання

Завдання: Побудуйте графік функції Завдання: Побудуйте графік функції . Реалізуйте можливість інтерактивного зміни коефіцієнтів і за допомогою клавіатури.

Виконання завдання

Для побудови графіків функцій часто зручно використовувати примітив "ламана лінія", в якому кожен наступний відрізок будується як продовження попереднього відрізка. В якості основи для програми можна використовувати додаток, створене в "Структура додатків, що використовують OpenGL" .

Побудова графіка можна виконати в обробнику події OnPaint форми на Object Pascal і події Paint компонента GLControl на C #. Код для побудови графіка функції можна розташувати безпосередньо після фрагмента коду, що виконує побудову осей координат. Для реалізації також необхідно буде використовувати глобальні змінні:

C #: double n = 1; double z = 1; Object Pascal: var n: double = 1; z: double = 1;

Графік функції може бути побудований за допомогою фрагмента, наведеного нижче:

C #: GL.Color3 (1f, 0, 0); GL.Begin (BeginMode.LineStrip); for (int i = -50; i <= 50; ++ i) {double x = i * 0.1; GL.Vertex2 (x, Math.Sin (x * n) * z); } GL.End (); Object Pascal: glColor3f (1, 0, 0); glBegin (GL_LINE_STRIP); for i: = - 50 to 50 do begin x: = i * 0.1; glVertex2f (x, Sin (x * n) * z); end; glEnd;

У цьому фрагменті коду передбачається, що область видимості вздовж напрямку осі OX буде не менше 10 одиниць. Змінити розмір сцени можна в обробнику події зміни розмірів форми в програмі на Object Pascal і зміни розмірів графічного компонента GLControl на C #.

C #: private void glControl1_Resize (object sender, EventArgs e) {GL.Viewport (0, 0, glControl1.Width, glControl1.Height); GL.MatrixMode (MatrixMode.Projection); GL.LoadIdentity (); GL.Ortho (-6, 6, -6, 6, -6, 6); GL.MatrixMode (MatrixMode.Modelview); glControl1.Invalidate (); } Object Pascal: procedure TfrmMain.FormResize (Sender: TObject); begin glViewport (0, 0, ClientWidth, ClientHeight); glMatrixMode (GL_PROJECTION); glLoadIdentity; glOrtho (-6, 6, -6, 6, -6, 6); glMatrixMode (GL_MODELVIEW); InvalidateRect (Handle, nil, False); end;

Для зменшення і збільшення значення змінної n можна використовувати клавіші зі стрілками вліво і вправо. Зменшення і збільшення значення параметра z можна реалізувати за допомогою клавіш зі стрілками вниз і вгору.

C #: private void glControl1_PreviewKeyDown (object sender, PreviewKeyDownEventArgs e) {switch (e.KeyCode) {case Keys.Insert: AngleX + = AngleDl; break; case Keys.Delete: AngleX - = AngleDl; break; case Keys.Home: AngleY ​​+ = AngleDl; break; case Keys.End: AngleY ​​- = AngleDl; break; case Keys.Prior: AngleZ + = AngleDl; break; case Keys.Next: AngleZ - = AngleDl; break; case Keys.Up: z + = 0.1; break; case Keys.Down: z - = 0.1; break; case Keys.Left: n - = 0.1; break; case Keys.Right: n + = 0.1; break; } GlControl1.Invalidate (); Text = String.Format ( "Графік функції y = {0} * Sin (x * {1})", z, n); } Object Pascal: procedure TfrmMain.FormKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); begin If Key = VK_ESCAPE then Close; case Key of VK_INSERT: inc (AngleX, AngleDl); VK_DELETE: dec (AngleX, AngleDl); VK_HOME: inc (AngleY, AngleDl); VK_END: ​​dec (AngleY, AngleDl); VK_PRIOR: inc (AngleZ, AngleDl); VK_NEXT: dec (AngleZ, AngleDl); VK_UP: z: = z + 0.1; VK_DOWN: z: = z - 0.1; VK_LEFT: n: = n - 0.1; VK_RIGHT: n: = n + 0.1; end; InvalidateRect (Handle, nil, False); Caption: = 'Графік функції y =' + FloatToStr (z) + '* Sin (x *' + FloatToStr (n) + ')'; end;

завдання
  1. Побудуйте графік функції . Реалізуйте можливість інтерактивного зміни коефіцієнтів і за допомогою клавіатури.
  2. Побудуйте графік функції кохлеоіди, рівняння якої в полярній системі координат: . Реалізуйте можливість інтерактивного зміни коефіцієнта за допомогою клавіатури.
  3. Побудуйте графік функції лемніската Бернуллі, рівняння якої в полярній системі координат: . Реалізуйте можливість інтерактивного зміни коефіцієнта за допомогою клавіатури.
  4. Побудуйте графік функції синусоїдальної спіралі, рівняння якої в полярній системі координат , при і . Реалізуйте можливість інтерактивного зміни коефіцієнта за допомогою клавіатури.
  5. Побудуйте графік функції овалу Кассіні, рівняння якої в полярних координатах . Реалізуйте можливість інтерактивного зміни коефіцієнтів і за допомогою клавіатури.
  6. Побудуйте графік функції троянди, рівняння якої в полярних координатах . Реалізуйте можливість інтерактивного зміни коефіцієнта за допомогою клавіатури.
  7. Побудуйте графік спіралі Ферма, рівняння якої в полярних координатах . Реалізуйте можливість інтерактивного зміни коефіцієнта за допомогою клавіатури.
  8. Побудуйте графік функції, рівняння якої .
  9. Побудуйте графік функції еліпса . Реалізуйте можливість інтерактивного зміни коефіцієнтів і за допомогою клавіатури.

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: