4576

Создание программы для рисования кривых второго порядка в среде Borland C++ Builder 6

Курсовая

Информатика, кибернетика и программирование

Введение В рамках данного курсового проекта требуется написать программу, рисующую кривые второго порядка. Для разработки была использована среда разработки BorlandC++ Builder 6. Формулировка поставленной задачи Написать программу, рисующую кр...

Русский

2012-11-22

437 KB

65 чел.

Введение

В рамках данного курсового проекта требуется написать программу, рисующую кривые второго порядка. Для разработки была использована среда разработки Borland C++ Builder 6.

Формулировка поставленной задачи

Написать программу, рисующую кривые второго порядка.

Описание предметной области

Все кривые второго порядка можно описать формулой:

a11x2 + a22y2 + 2a12xy + 2a13x + 2a23y + a33 = 0. Вид кривой будет зависеть только от коэффициентов.

Инварианты

Вид кривой зависит от 4 инвариантов:

  •  инварианты относительно поворота и сдвига системы координат
    •  
    •  
    •  
  •  инвариант относительно поворота системы координат (полуинвариант)
    •  

Классификация кривых второго порядка

Невырожденные кривые

Кривая второго порядка называется «невырожденной», если . Могут возникать следующие варианты:

  •  Эллипс — при условии D > 0 и IΔ < 0.
  •  Окружность (частный случай эллипса) — при условии a11 = a22, a12 = 0.
  •  Мнимый Эллипс (пустое множество) — при условии D = 0 и IΔ > 0.
  •  Гипербола — при условии D < 0.
  •  Парабола — при условии D = 0.

Вырожденные кривые

Кривая второго порядка называется «вырожденной», если Δ = 0. Могут возникать следующие варианты:

  •  Точка — при условии D > 0 (вырожденный эллипс)
  •  Пара пересекающихся прямых — при условии D < 0 (вырожденная гипербола).
  •  Пара параллельных прямых — при условии D = 0 и B < 0.
  •  Прямая (две слившихся параллельных прямых) — при условии D = 0 и B = 0.
  •  Пара мнимых параллельных прямых — при условии D = 0 и B > 0.

Уравнения

Канонический вид

Вводом новой системы координат можно привести уравнения кривых второго порядка к каноническому виду:

  •  Невырожденные кривые
    •  (эллипс)
    •  (гипербола)
    •  y2 = 2px (парабола)
  •  Вырожденные кривые
    •  (точка)
    •  (пересекающиеся прямые)
    •  (параллельные прямые)
    •  x2 = 0 (одна прямая)

Описание вариантов использования

  •  Решение квадратных и линейных уравнений графическим способом.
  •  Визуальное представление  кривых второго порядка и прямых

Рис 1. Окно программы.

Для построения кривых второго порядка, необходимо ввести коэффициенты. Также можно сократить или расширить интервал для значений X, на котором программа считает функцию.

Описание структуры программы

Для построения кривой перебираем X , а следовательно на каждом шаге он нам известен и является константой. Уравнение

 a 11x2 + a22y2 + 2a12xy + 2a13x + 2a23y + a33 = 0

 преобразуетсяя в

 by2+2(cx+e)y+ax2+2dx+f=0.

 Эта общая формула квадратного уравнения ay2+by+c’=0, где  

     a’=b, b’=2(cx+e), c’= ax2+2dx+f.

 

А для функции ay2+by+c’=0  можно вычислить дискриминант и посчитать корни. Таким образом, для каждого X находится одно или два значения Y, если они имеются, и выводятся на экран.

 

Рассмотрим подробнее принцип работы программы.

При нажатии на кнопку «Строить», выполняется следующий код:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

float y,D,x1,x2,a,b,c,d,e,f;   //объявляем вещественные переменные

//присваиваем значения коэффициентов

a=StrToFloat(Edit1->Text);   // a11

b=StrToFloat(Edit2->Text); // a22

c=StrToFloat(Edit3->Text); // a12

d=StrToFloat(Edit4->Text); // a13

e=StrToFloat(Edit5->Text); // a23

f=StrToFloat(Edit6->Text); // a33

Series1->Clear();   //очищаем поле для графика

Chart1->BottomAxis->Minimum=StrToFloat(Edit7->Text);  

//вводим минимум оси X из формы

Chart1->BottomAxis->Maximum=StrToFloat(Edit8->Text);  

// вводим максимум оси X из формы

for(float x=StrToFloat(Edit7->Text);x<=StrToFloat(Edit8->Text);x=x+0.005)

//объявляем вещественную переменную и перебираем точки из заданного интервала с шагом 0.005

{

       if (b==0){ Series1->AddXY(x, -(a*x*x+2*d*x+f) / 2*(c*x+e)) ; }

//частный случай (при b==0), при котором уравнение превращается в линейное

       else

       {

       D=(c*x+e)*(c*x+e)-b*(a*x*x+2*d*x+f);

//считаем дискриминант, и смотрим количество корней

       if (D==0){Series1->AddXY(x,-(c*x+e)/b);} // 1 корень

else

       if (D>0)      // 2 корня

     

      {Series1->AddXY(x,(-(c*x+e)+sqrt(D))/b);      

        Series1->AddXY(x,(-(c*x+e)-sqrt(D))/b);  }

        }

}

}

Series1->AddXY(x,y) – рисует точку с соответствующими координатами.

Контрольный пример

Приведем пример некоторой, произвольно набранной, функции (Рис 2).

Рис 2. Пример некоторой функции.

Вывод

В ходе работы была написана программа в среде Borland C++ Builder 6 и проверена её работоспособность.  Программа графически изображает кривые второго порядка. Она строит кривую на заданном пользователем  интервале на оси абсцисс.

Список литературы

  1.  Культин Н.Б. «C++ Builder в задачах и примерах» - СПб: «БХВ-Петербург», 2005;

Приложение

Код программы

//---------------------------------------------------------------------------

#include <vcl.h>

#include <math.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

float y,D,x1,x2,a,b,c,d,e,f;

a=StrToFloat(Edit1->Text);

b=StrToFloat(Edit2->Text);

c=StrToFloat(Edit3->Text);

d=StrToFloat(Edit4->Text);

e=StrToFloat(Edit5->Text);

f=StrToFloat(Edit6->Text);

Series1->Clear();

Chart1->BottomAxis->Minimum=StrToFloat(Edit7->Text);

Chart1->BottomAxis->Maximum=StrToFloat(Edit8->Text);

for(float x=StrToFloat(Edit7->Text);x<=StrToFloat(Edit8->Text);x=x+0.005)

{

       if (b==0){ Series1->AddXY(x, -(a*x*x+2*d*x+f) / 2*(c*x+e)) ; }

       else

       {

     //  a*x*x+b*y*y+2*c*x*y+2*d*x+2*e*y+f=0;

       D=(c*x+e)*(c*x+e)-b*(a*x*x+2*d*x+f);

       if (D==0){Series1->AddXY(x,-(c*x+e)/b);}else

       if (D>0){Series1->AddXY(x,(-(c*x+e)+sqrt(D))/b);

        Series1->AddXY(x,(-(c*x+e)-sqrt(D))/b);  }

}}}


 

А также другие работы, которые могут Вас заинтересовать

31506. Цінні папери 173.5 KB
  Сутність і характерні ознаки цінних паперів. Типологізація цінних паперів. Роль цінних паперів на фінансовому ринку. Роль приватизаційних паперів на фінансовому ринку.
31507. ПОХІДНІ ЦІННІ ПАПЕРИ ТА ОСОБЛИВОСТІ ФУНКЦІОНУВАННЯ РИНКУ ПОХІДНИХ ЦІННИХ ПАПЕРІВ 171 KB
  ПОХІДНІ ЦІННІ ПАПЕРИ ТА ОСОБЛИВОСТІ ФУНКЦІОНУВАННЯ РИНКУ ПОХІДНИХ ЦІННИХ ПАПЕРІВ. У вітчизняній практиці на фінансовому ринку більш широкого застосування здобули операції з традиційними фінансовими інструментами з угодами предметом яких є грошові кошти або їх еквіваленти такі як кредиторська і дебіторська заборгованість; векселі; акції; облігації; факторинг форфейтинг фінансова оренда; гарантії кредитної лінії страхові угоди фінансового характеру тощо. Серед інструментів ринку похідних цінних паперів розрізняють сурогати цінних...
31508. Умови праці та режими праці й відпочинку 308 KB
  Умови праці та режими праці й відпочинку Зміст учбового матеріалу: 1. Умови праці та фактори їх формування 2. Нормативноправове регулювання та оцінка рівня умов праці 3. Суть працездатності людини та її залежність від режимів праці і відпочинку 4.
31509. Трудовий процес та його організація 121 KB
  Трудові процеси: суть види принципи організації Процес виробництва це єдність трудового і технологічного процесів створення певного виду продукції коли на предмет праці діє людина та знаряддя праці. Технологічний процес це цілеспрямована зміна форми розмірів стану структури положення місця предметів праці. Отже зміст трудового процесу визначається сукупністю методів і прийомів праці працівника або групи працівників потрібних для виконання роботи за всіма її стадіями які складаються з наступного: одержати завдання; інформаційна і...
31510. Міра праці та її визначення 191 KB
  Класифікація витрат робочого часу Система нормативів і норм праці. Подальше вдосконалення нормування праці передбачає: максимальне охоплення нормами праці різних видів робіт з обслуговування виробництва та управління ним; широке впровадження технічно обґрунтованих норм тобто розроблення норм виробітку часу обслуговування з урахуванням можливостей сучасної техніки й технології виробництва передових методів праці тощо; підвищення не тільки технічної а й економічної та фізіологічної обґрунтованості норм. Якщо технічне...
31511. Продуктивність праці 116 KB
  Продуктивність праці Зміст учбового матеріалу: Сутність продуктивної праці та продуктивності праці. Показники продуктивності праці та методи її вимірювання Фактори впливу на зростання продуктивності праці та їх класифікація Резервів зростання продуктивності праці їх класифікація та оцінка. Сутність продуктивності та продуктивності праці Згідно з рекомендаціями Міжнародної організації праці МОП розрізняють поняття продуктивність і продуктивність праці. Продуктивність це ефективність використання ресурсів праці капіталу...
31512. Політика доходів та сутність заробітної плати 232 KB
  Робоча сила найманих працівників на ринку праці є товаром який має вартість. На вартість робочої сили впливають результати праці власника робочої сили. Вартість робочої сили формується на ринку через порівняння результативності корисності праці із затратами на відтворення робочої сили. Вона встановлюється на рівні який узгоджує граничну продуктивність праці тобто цінність послуг праці для покупцяпідприємця з витратами які потрібні для відтворення робочої сили.
31513. Тарифна система оплати праці та її складові 224 KB
  Тарифна система оплати праці та її складові Зміст учбового матеріалу: Тарифна система та її призначення. Довідник кваліфікаційних характеристик професій працівників. Тарифні ставки працівників. Тарифна система та її призначення Тарифне нормування оплати праці це складова організації заробітної плати що здійснюється за допомогою тарифної системи і являє собою сукупність фіксованих норм оплати за роботу в межах норм праці трудових обовязків а також норм оплати праці за роботу понад норму праці.
31514. Оплата праці та її організація в умовах трансформації соціально-трудових відносин 192.5 KB
  Оплата праці та її організація в умовах трансформації соціальнотрудових відносин Зміст учбового матеріалу: Системи оплати праці: сутність ознаки взаємозвязок та взаємозалежність. Відрядна форма оплати праці: сутність та види. Почасова форма оплати праці: сутність та види. Безтарифна система оплати праці.