• Главная
  • Карта сайта
Не найдено

НОУ ІНТУЇТ | лекція | Основні графічні примітиви 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. Побудуйте графік функції еліпса . Реалізуйте можливість інтерактивного зміни коефіцієнтів і за допомогою клавіатури.
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

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

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью