close

Вход

Забыли?

вход по аккаунту

?

kursova posibnik new

код для вставкиСкачать
 Міністерство освіти і науки України
Чорноморський державний університет
імені Петра Могили
Факультет комп'ютерних наук
Кафедра інтелектуальних інформаційних систем
Цибенко Б.О., Дворецька С.В.
МЕТОДИЧНІ ВКАЗІВКИ
до виконання курсової роботи з дисциплін
"Мови об'єктноорієнтованого програмування, основи програмування та алгоритмічні мови"
для освітніх напрямів підготовки бакалаврів
050101 - Комп'ютерні науки
050102 - Комп'ютерна інженерія
Миколаїв 2010
Цибенко Б.О., Дворецька С.В., до виконання курсової роботи з дисциплін
"Мови об'єктноорієнтованого програмування, основи програмування та алгоритмічні мови"
. --Миколаїв, видавництво ЧДУ ім.П.Могили.
Посібник призначен для студентів для освітніх напрямів підготовки бакалаврів
050101 - Комп'ютерні науки та 050102 - Комп'ютерна інженерія, що вивчають курс "Основи програмування та алгоритмічні мови" на першому курсі та "Об'єктно-орієнтоване програмування" на другому на факультеті комп'ютерних наук Чорноморського державного унiверситету імені Петра Могили. У посібнику подається матеріал по математичним моделям та алгоритмам обробки складних поверхонь, на базі яких формуються завдання на курсову роботу.
Укладання Цибенко Б.О., Дворецька С.В., 2010
Зміст
1 ЗАГАЛЬНІ ПОЛОЖЕННЯ, ЦІЛІ ТА ЗАДАЧІ КУРСОВОЇ РОБОТИ
2 ПОРЯДОК, ЗАВДАННЯ ТА ВИМОГИ ДО ВИКОНАННЯ КУРСОВОЇ РОБОТИ
3 ОФОРМЛЕННЯ КУРСОВОЇ РОБОТИ ТА ЇЇ ЗАХИСТ
3.1 Структура пояснювальної записки до курсової роботи
3.2 Захист та критерії оцінки курсовой роботи
4 Поняття математичної моделі
5 Математична модель складної поверхні 6 Каркасна математична модель складної поверхні
6.1 Робота із математичною моделлю складної поверхні
6.2 Геометричні характеристики частини об'єму тіла, яке обмежується поверхнею
6.2.1 Визначення об'єму тіла або його частини 6.2.2 Координати центра ваги об'єму частини тіла між двома базовими перерізами
6.2.3 Геометричні характеристики плоского замкненого контуру
6.2.4 Визначення геометричних характеристик симетричного контуру
6.2.5 Визначення наявності перетину відрізка з прямою
6.2.6 Визначення контуру перерізу складної поверхні із довільною характерною абсцисою
6.2.7 Розбивка ламаної на задану кількість рівних відрізків
6.2.8 Визначення масиву координат точок базового контуру складної поверхні за його номером
6.3 Геометричні характеристики контуру перетину поверхні площиною довільного розташування
6.4 Площа частини зовнішньої поверхні тіла, яка відсікається від нього площиною довільного розташування;
6.5 Урівноваження положення тіла в рідині
6.6 Формування зовнішньої оболонки навколо поверхні
7 Особливості роботи з аналітичною математичною моделлю складної поверхні
7.1 Аналітична математична модель поверхні (підводного аппарата)
7.2 Обчислити об'єм та координату центра ваги для частини ПА, яка відсікається від нього площиною довільного розташування.
7.3 Визначити контур, який утворюється від перетину поверхні ПА площиною довільного розташування (див. задачу 3). 7.4 Обчислення загальній зовнішній площі ПА. 8 Заключення
9 Орієнтовний перелік тем КР
10 Додатки
10.1 Об'єктно-орієнтований підхід (ООП) до створення програмних продуктів
10.2 Приклад програми за вимогами ООП у Delphi
10.3 Приклад програми за вимогами ООП у Java
10.4 Приклад програми за вимогами ООП у C++
1. ЗАГАЛЬНІ ПОЛОЖЕННЯ, ЦІЛІ ТА ЗАДАЧІ КУРСОВОЇ РОБОТИ
Курсова робота(КР) призначена для закріплення матеріалу з дисциплін "Основи програмування та алгоритмічні мови" і "Об'єктно-орієнтовне програмування".
Основною метою виконання КР є закріплення студентами теоретичних знань з алгоритмічних мов таких як Object Pascal та С++, а також отримання практичних навичок щодо розробки інтерфейсу та програмного забезпечення для розв'язання практичних задач у візуальних оболонках цих мов Delphi та Visual C++.
Задачі курсової роботи:
* вдосконалення теоретичних знань в галузі розробки програмного забезпечення;
* застосування прийому декомпозиції при розв'язанні складних задач;
* засвоєння прийомів розробки інтерфейсу користувач-програма;
* розробка структури даних для опису складних об'єктів;
* вдосконалення розробки алгоритмів для розв'язання задач.
В результаті виконання КР студенти повинні отримати практичні навички та вміння:
* виконувати аналіз предметного середовища, задачу до якого треба розв'язати;
* проектувати інтерфейс користувач-програма у візуальних режимах Delphi та C++;
* розробляти математичну модель розв'язання задачі та виконувати її декомпозицію;
* при декомпозиції задачі раціонально розбивати код на окремі модулі, процедури та функції;
* розробляти раціональну структуру вхідних та вихідних даних;
* засвоїти прийоми відлагодження програм;
* розробляти приклади для тестування готової програми перед передачею її замовнику (захисту КР);
За визначенням Н. Вірта програма для ЕОМ - це структура даних + алгоритм її обробки. Для реальних задач, як правило, заздалегідь не визначені ні перша, ні друга частини, це повинно бути зроблено програмістом.
В учбових закладах при вивченні алгоритмічних мов для опрацювання роботи з базовими структурами використовуються приклади задач, у яких ці дві частини вже жорстко визначені, в основному це робиться за браком часу, а також із методичних причин - щоб повністю зосередити увагу на засвоєнні певної базової структури. Результатом такого підходу є майже повна неготовність студентів до розв'язання задач практичного характеру. Задача курсової роботи - дати змогу студентам у певної мірі самостійно зробити вибір серед декількох можливих структур даних і алгоритмів розв'язання задачі.
Робота з реальними задачами неможлива без опанування певною прикладною сферою, у якості якої вибрана складна замкнена поверхня. Чинниками для такого вибору стали :
- проста геометрична інтерпретація, а значить і прозорість алгоритмів для обробки поверхні;
- широке практичне застосування складних поверхонь при роботі з такими об'єктами як судна, літаки, автомобілі, одяг, тощо.
У загальному випадку математичну модель складної поверхні(ММСП) можна уявити собі як функцію F(x,y,z)=0, яка дозволяє зв'язати три координати поверхні і, таким чином, знайти третю координату, якщо дві з них відомі. На практиці така залежність може носити графічниу (креслення), чисельний (алгоритмічний) характер, аналітичний або комбінацію останніх двох.
На базі цієї предметної області можна підготувати велику кількість задач, які не будуть мати печатки академічності і в той же час будуть достатньо простими, а алгоритми для їх розв'язання, прозорими.
Треба однак відмітити, що ММСП, яка розглядається у посібнику, дещо спрощена з метою одержання більш простих алгоритмів для її обробки, але ці спрощення не носять принципового характеру.
При необхідності одержання більш точних результатів модель може бути ускладнена за рахунок введення допоміжних даних, але це ні в якому разі не призведе до суттєвих змін у підходах до розв'язання практичних задач. Більш того, подальше уточнення моделі буде входити як елемент навчального процесу для розвитку у студентів творчого підходу до розв'язання практичних задач.
У посібнику для задач, які розглядаються, наведено виключно математичні моделі, без детальної розробки алгоритмів, а тим більше програмних кодів. Це зроблено навмисно, щоб дати можливість студентам самостійно вибрати обгрунтований варіант алгоритму, виконати його розробку, а потім перетворити його у програмний код.
Вибір конкретної мови програмування для розв'язання задачі залежить від студента, але перевага надається мовам із візуальним графічним інтерфейсом і можливостями будування графіків (Delphi, VisualC).
2. ПОРЯДОК, ЗАВДАННЯ ТА ВИМОГИ ДО ВИКОНАННЯ КУРСОВОЇ РОБОТИ
Завдання на КР вибирається студентом самостійно з переліку завдань, який розташовано у розділі 9 цього посібнику в залежності від номера групи та порядковим номером студента у списку викладача у підгрупі. За певних обставин (участь студента у науковій роботі) тема КР може змінюватись при узгодженні з викладачем.
Завдання полягає у визначенні характеристик геометричних об'єктів (у даному випадку судна, або підводного апарату), форма яких охоплюються складною поверхнею, а також отримання контурів перерізів цих об'єктів площинами довільного розташування.
Фактично КР повинна складатися із програмного забезпечення для розв'язання поставленої задачі та пояснювальної записки у письмовому вигляді.
Програмне забезпечення повинно бути написано на одній з алгоритмічних мов по узгодженню з викладачем. Загальні вимоги до розробки програмного забезпечення наведені у розділі 3.
Обсяг пояснювальної записки до курсової роботи складає 25-35 сторінок. Тексту роботи має передувати титульна сторінка, підписане керівником завдання, та зміст (все на окремих сторінках). Титульна сторінка оформлюється за зразком, наведеним у [1] . Зміст містить назви усіх розділів з зазначенням сторінки початку матеріалу розділу. У кінці текстової частини наводиться список використаних джерел інформації та додатки. Список використаних джерел інформації повинен бути оформлений відповідно до державних стандартів, узагальнені вимоги яких наведено в [1].
3.1. Структура пояснювальної записки до курсової роботи
Пояснювальна записка повинна обов'язково мати такі розділи:
1. Титульний аркуш затвердженого зразка;
2. Завдання на КР;
3. Вступ, у якому подається загальні теоретичні відомості про об'єкт, з яким працює студент та постановка задачі згідно персональному завданню на КР;
4. Опис та обов'язкове обгрунтування структури даних (якщо вона не визначена у завданні), яка буде використовуватись у математичних моделях для розв'язання задач КР;
5. Декомпозиція задачі, формулювання базових логічно завершених операцій, за допомогою яких буде розв'язуватись задача, яка поставлена у КР;
6. Детальні алгоритми базових операцій з необхідними поясненнями;
7. Вигляд загального інтерфейсу КР (копія екрану з формою);
8. Детальна інструкція користувачу по роботі із програмою та інтерфейсом.
9. Текст програми із необхідними коментарями ( тільки власно розроблених базових процедур та обробників подій );
10. Тестовий(і) приклад(и), які розроблені таким чином, щоб по результатах їх виконання можна було скласти уявлення про працездатність програмного забезпечення (склад тестових прикладів узгоджується з викладачем заздалегідь, принаймні поперед розробки тексту програм ).
3.2 Захист та критерії оцінки курсовой роботи
Студент здає оформлену КР викладачу на перевірку у термін, який визначено навчальним планом здачі робіт, а також демонструє працездатність розробленого програмного забезпечення на комп'ютері. Якщо вимоги щодо оформлення звіту виконані, викладач призначає час захисту роботи, який складається з контролю якості роботи програмного забезпечення на тестових прикладах (у певних випадках може з'явитися необхідність формування додаткових тестів) та контролю теоретичних знань по темі.
Якщо робота здається із запізненням, то кількість балів за неї знижується на двадцять відсотків за кожен тиждень, який пройде після визначеного терміну. При захисті КР після закінчення занять, максимальна кількість балів за КР не може перевищувати 50 % від їх початковій кількості.
Усі розділи обов'язково повинні бути присутніми у КР, якщо виявиться, що хоча б один розділ відсутній, робота повертається студенту на доробку.
Робота оцінюється в залежності від якості оформлення всієї роботи, іі інтерфейсу, повноті та прозорості алгоритмів, структурованості програмного забезпечення ( доцільності декомпозиції всієї задачі на базові процедури ), наявності та повноти коментарів а також теоретичних знань як по задачі, яка розв'язується у роботі, так і по складним поверхням в цілому. Нижче наведено опис математичних моделей складних поверхонь, алгоритмів їх обробки, які цілком достатні для виконання будь-якого завдання з КР.
4 Поняття математичної моделі
Всі задачі без винятку пов'язані з певною предметною сферою, яка містить специфічні терміни та поняття. Перед тим, як почати розв'язувати будь-яку задачу, необхідно ретельно ознайомитись із специфікою предметної сфери та математичними методами, які використовуються для цього.
Створення будь-якого, навіть найпростішого реального об'єкту, починається з проектування. На цьому етапі треба визначити найбільш суттєві його властивості. Для цього використовуються графічні (креслення) та математичні моделі. Перші призначені в основному для побудови, другі для визначення властивостей ще не існуючого об'єкту.
Математична модель - це опис властивостей та зв'язку реального об'єкту з навколишнім середовищем математичними залежностями та на базі їх аналізу визначаються його властивості. Треба тут наголосити, що у реальності об'єкта ще не існує, але його властивості вже аналізуються і на підставі такого аналізу робиться висновок про доцільність його будування. Або можна розробити моделі декількох варіантів одного і того ж об'єкта та на підставі їх аналізу вибрати найкращий. З цього прикладу видно, що математичне моделювання може зберігати величезні кошти за рахунок прийняття оптимальних рішень серед великої кількості можливих і такий підхід зараз широко використовується.
Велика кількість людей використовує такий підхід при створенні майже всіх реальних об'єктів, навіть не усвідомлюючи це. Наведемо простий приклад: треба зробити акваріум певного об'єму, який буде стояти у визначеному місці. Математична модель об'єкту - паралелепіпед. Призначаючи різні розміри сторін, характеристики наявних матеріалів для його виготовлення ( кутовий профіль, скло ) можна за простими формулами елементарної геометрії та фізики визначити його об'єм, вагу, вигляд, ціну (хоча реального об'єкта ще не існує), та серед декількох варіантів вибрати найбільш придатний для заданих умов.
5 Математична модель складної поверхні
Реальні просторові об'єкти можуть мати достатньо складну поверхню, яка їх охоплює (наприклад судна, літаки, автомобілі, тощо). Математична модель - це математична, або алгоритмічна процедура, за допомогою якої можна визначити третю координату точки поверхні, якщо відомі дві координати (наприклад, для точки відомі координати X, Z, знайти координату → Y, чи будь-яка комбінація координат: X,Y → Z, X, Z →Y). Якщо така процедура створена, то на її базі можна розробити функції, за допомогою яких визначаються геометричні та фізичні характеристики об'єкту (об'єм та координати центру ваги всього об'єкту, або його частини), контури перерізів об'єкту площинами довільного розташування, а також їх геометричні характеристики, які можуть бути специфічними для певної предметної сфери використання моделі.
Першим кроком при формуванні моделі реального об'єкту буде прив'язка до нього початку координат та вибір напрямку осей. Положення початку координат залежить від предметної сфери, але напрямки осей, як правило, загальноприйняті:
- вісь Х направлена горизонтально праворуч;
- вісь Z направлена вертикально;
- вісь Y направлена горизонтально праворуч, якщо дивитись у додатньому напрямку осі Х, перпендикулярно осі Х.
Таким чином отримаємо три координатні площини:
XOZ - вертикальна площина, яка розташована вздовж об'єкту;
XOY - горизонтальна площина;
ZOY вертикальна площина, яка розташована поперек об'єкту;
Після вибору осей координат об'єкт розташовують таким чином, щоб його площини симетрії співпадали із координатними площинами.
Якщо форма поверхні достатньо проста і її перерізи представляють собою геометричні примітиви (коло, еліпс, прогресіка та ін.), то можна для її моделювання використати аналітичну модель, яка описує поверхню математичними залежностями (підводний апарат, підводний човен, фюзеляж літака).
Але нажаль, більшість поверхонь, які охоплюють реальні об'єкти (надводні судна, автомобілі, одяг) мають достатньо складну форму і для їх моделювання необхідно використовувати загальний підхід, це так звана, каркасна модель поверхні, за допомогою якої можна моделювати поверхню будь-якої складності. Суть каркасної моделі в тому, що об'єкт розрізається сукупністю паралельних площин, які у свою чергу паралельні певній базовій площині. Результатом перетину отримаємо серію плоских контурів, математична модель яких - ламана лінія. Для кожного контуру можна визначити площу та координату центра його ваги, після чого за допомогою простих геометричних залежностей визначаються всі геометричні характеристики об'єкту.
6 Каркасна модель складної поверхні
Розглянемо загальний підхід до створення ММСП. Реальний об'єкт розрізається сукупністю паралельних площин, які будемо називати базовими. У результаті перетину площин з поверхнею отримуємо базові перерізи (контури), які являють собою у загальному випадку замкнені криві лінії. Математична модель кривій лінії - ламана, яка може бути описана координатами своїх базових точок. Використовуючи цей підхід, розташуємо на контурі базового перерізу базові точки ламаної таким чином, щоб вона достатньо точно апроксимувала базовий контур. Дані про положення базових контурів та координати точок на них заноситься у відповідну структуру даних, яка з алгоритмом її обробки і представляє собою ММСП. Визначення кількості та розташування базових площин, а також формування базових точок ламаних, які апроксимують базові контури, тобто проектування форми тіла, яке охоплює складна поверхня, у посібнику не розглядаються.
На жаль, поверхня надводного судна має значно складнішу форму, тому що воно функціонує на межі розділу двох середовищ з принципово різними властивостями (повітря, вода). У цьому випадку контури базових перерізів мають достатньо складу форму, яку неможна описати простими математичними залежностями. У цьому випадку більш доцільно користуватися загальним підходом формування ММСП, і створити структуру даних яка описана вище, при цьому отримаємо каркасну ММСП. Незважаючи на більш складні алгоритми обробки таких моделей, вони є більш універсальними і придатні для опису поверхонь довільної складності, наприклад навіть скульптури.
У посібнику розглядаються однозв'язані замкнені поверхні, які охоплюють складні фізичні тіла, наприклад : судно, літак, автомобіль, тощо. Головні властивості поверхні:
- замкненість що означає її непроникненість ззовні без руйнування;
- однозв'язність - дві точки тіла, яке охоплює поверхня, можуть бути з'єднаті ламаною, яка повністю належить цьому тілі.
Для можливості розробки ММСП (аналітичної або точкової) будь-якого реального об'єкту треба прив'язати його до певної просторової системи координат XYZ. Початок координат можна розташовувати у будь-якому місці, але при проектуванні реальних об'єктів це місце визначається досить жорстко з огляду на зручність подальшій роботи з моделлю та прийнятими правилами. У подальшому будемо користуватися системою координат як це прийнято у кораблебудівних науках.
Якщо об'єкт має одну або більше площин симетрії, то початок координат розташовується обов'язково на цих площинах, або на лінії їх перетину, при цьому зменшується обсяг інформації, яку необхідно зберігати для опису поверхні.
Початок координат розташуємо приблизно посередині по довжині у нижчий (не обов'язково найнижчій) точці. Осі координат розташовуємо як описано у розділі 5. 7 Робота із математичною моделлю складної поверхні
Розглянемо приклад структури даних складної поверхні, яка розташована у текстовому файлі 17000.txt. У ньому описано перерізи поверхні серією паралельних площин, які у свою чергу паралельні координатній площині YOZ. У зв'язку з тим, що судно симетрічне відносно координатній площини XOZ, у файлі наведено тільки праві гілки перерізів. Розглянемо структуру даних для окремого.
&s 3 -82.70
\ 9
0.11 7.070 1 0.46 7.15w 6 4.01 8.94w 7 6.9010.73w 8 9.0213.78w 9 10.3417.05w10 10.8918.60d 1 11.0919.17d 1s
0.0019.170 1 12.9118.60d 1 13.0619.17d 1s
0.0019.170 1
Перший рядок містить такі дані:
&s 3 - номер перерізу - 3; -82.70 - абсциса перерізу у прийнятой системі координат (7 знаків);
Другий рядок:
\ 9 - кількість точок на перерізі (наведено тільки права гілка);
Третій рядок і до початку опису наступного перерізу (кінця опису поточного перерізу) містять координати точок на контурі (по 5 знаків для кожної координати):
0.11 - ордината точки на контурі - Y;
7.07 - апліката точки на контурі - Z; Така структура даних прийнята для всіх 29 перерізів судна.
Основою для роботи із складною повехнею буде отримання контуру перерізу за його номером (або абсцисою). Код фрагменту програми для цього (отримання контуру за його номером) наведено нижче:
type
MasD=array of extended; //динамічний масив, у який буде розташовано координати точок переізу
var
Ft:TextFile;
I,N,M:integer;
X,Y: MasD; //масиви для зберігання координат точок
St,StX,StY,St1:string;
begin
N:=15; // номер перерізу у файлі
assignfile(Ft,'17000.txt');
reset(Ft);
readln(Ft,St);
if N < 10 then St1:='&s '+IntToStr(N) //формування заголовку необхідного перерізу
else St1:='&s'+IntToStr(N); //для пошуку у файлі
while Pos(St1,St) <> 1 do readln(Ft,St); //пошук необхідного перерізу у файлі
readln(Ft,St);
M:=StrToInt(Copy(St,2,2)); //кількість точок на перерізі
SetLength(X,M); //встановити розмір динамічного масиву для зберігання координат перерізу
SetLength(Y,M);
for I:=1 to M do
begin //считування з файлу координат точок перерізу і запис їх у масиви
readln(Ft,St);
X[I-1]:=StrToFloat(Copy(St,8,5));
Y[I-1]:=StrToFloat(Copy(St,13,5));
end;
for I:=1 to M do
begin //виведення координат точок перерізу на екран write(X[I-1]:6:2,' ',Y[I-1]:6:2,' ');
if I mod 5 =0 then writeln; end;
readln;
end.
const
ks=20 ; {кількість базових перерізів}
kt=124 ; {загальна кількість точок на всіх базових перерізах}
type
m1=array[1..kt] of real ; { масив ординат та аплікат точок базових перерізів }
m2=array[1..ks] of real ; { масив абсцис базових перерізів }
m3=array[1..ks] of integer ; { масив кількості точок на кожному з базових перерізів }
const
XX:m2=(112.8,110.0,99.0,88.0,77.0,66.0,55.0,44.0,-11.0,-22.0,-33.0,
-44.0,-55.0,-66.0,-77.0,-88.0,-99.0,-110.0,-113.0,-114.0);
Kt:m3=(3,4,7,6,6,7,6,5,5,6,7,8,7,8,8,9,9,5,5,3);
YY:m1=(0.0,1.0,0.0, 0.0,2.6,8.6,0.0,
0.0,6.6,12.6,14.6,16.8,18.8,
0.0,0.0,12.6,16.2,18.4,22.2,
0.0,0.0,16.0,18.6,21.6,22.8,0.0,
0.0,18.6,20.4,22.4,22.8,23.0,0.0,
0.0,20.2,22.2,22.8,23.0,0.0,
0.0,20.6,22.8,23.0,0.0,
0.0,19.6,22.8,23.0,0.0,
0.0,17.8,22.0,22.8,23.0,0.0,
0.0,15.2,20.0,21.8,22.2,23.0,0.0,
0.0,11.6,18.0,20.4,22.2,22.8,23.0,0.0,
0.0,7.2,16.2,19.0,21.6,23.0,0.0,
0.0,6.2,12.0,16.8,19.2,21.6,22.2,0.0,
0.0,5.4,6.8,7.4,13.6,20.0,21.2,0.0,
0.0,3.6,4.8,5.2,6.6,13.6,18.2,19.8,0.0,
0.0,0.8,2.2,2.4,2.8,3.8,16.0,17.4,0.0,
0.0,3.0,12.6,14.2,0.0,
0.0,4.2,10.4,12.4,0.0,
0.0,1.0,0.0);
ZZ:m1=(15.2,21.6,21.6,
16.2,18.2,21.6,21.6,
0.0,0.0,2.04,5.1,15.3,21.6,21.6,
0.0,0.0,1.02,3.06,21.6,21.6,
0.0,0.0,1.53,4.08,21.6,21.6,
0.0,0.0,1.53,3.06,6.63,21.6,21.6,
0.0,0.0,1.02,2.04,21.6,21.6,
0.0,0.0,2.04,21.6,21.6,
0.0,0.0,2.04,21.6,21.6,
0.0,0.0,2.04,5.1,21.6,21.6,
0.0,0.0,2.55,3.06,7.14,21.6,21.6,
0.0,0.0,1.53,3.06,7.14,11.22,21.6,21.6,
0.0,0.0,2.04,4.08,9.18,21.6,21.6,
0.0,0.0,2.04,5.1,8.16,13.77,21.6,21.6,
0.0,0.0,1.02,2.55,6.12,11.28,21.6,21.6,
0.0,0.0,1.02,4.08,5.61,10.2,14.75,21.6,21.6,
0.0,0.0,1.02,4.08,7.14,8.67,15.3,21.6,21.6,
11.48,12.24,15.81,21.6,21.6,
13.77,14.28,16.32,21.6,21.6,
15.2,21.6,21.6);
де :
XX - масив абсцис базових перерізів(real);
Kt - масив кількості точок на кожному перерізі (integer);
ZZ - масив аплікат точок на базових перерізах(real);
YY - масив ординат точок на базових перерізах(real);
6.1 Робота із математичною моделлю складної поверхні
У посібнику розглядаються алгоритми із необхідними залежностями для визначення об'єму та координат центра ваги для будь-якої частини судна, яка обмежується площинами, які у свою чергу паралельні координатним.
Для прикладу розглянемо декомпозицію задачі визначення об'єму та координат центра ваги для частини судна, яка відсікається площинами, які паралельні координатним YOZ і мають абсциси Хi та Xj . У декомпозиції розглянуто лише принциповий розподіл всієї задачі на окремі підзадачі. Детальні алгоритми із відповідними формулами наведені у розділах нижче.
Задано: каркасна модель суднової поверхні, яка задана контурами базових перерізів з абсциссами Х1 - Х10 .У зв'язку з Тим, що перерізи симетричні відносно координатній площини XOZ, контури задаються своїми правими гілками. Кожен контур - замкнений і описується координатами точок Zi, Yi . Проекція базових перерізів на координатну площину XOZ зображено на малюнку ??????
Визначити об'єм та координати його центра ваги для частини судна від перерізу з абсцисою Хі до перерізу з абсцисою Хj Виконуємо декомпозицію задачі.
1. Для визначення об'єму тіла між перерізами від Хі до Хj необхідно послідовно визначити і просумувати об'єми між базовими перерізами, Х5 -Х6, Х6 -Х7, , а також між перерізами Хі -Х5 та Х7 -Хj . Назвемо їх елементарними об'ємами. Необхідно відмітити, що перерізів з абсцисами Хі та Хj у списку базових не існує, їх необхідно визначати додатково і назвемо їх допоміжними.
2. Для отримання координат центра ваги частини тіла необхідно мати координати центра ваги всіх елементарних об'ємів, а потім застосувати до них правило для статичного моменту системи (див. розд. ?????).
a. Для визначення об'єму та його координат центра ваги між двома перерізами застосовуємо математичну модель трапеції. За формулами для трапеції визначаємо об'єм та координати центра ваги, для чого у формулах заміняємо довжини основ трапеції на площі базових перерізів, а висоту трапеції - відстань між ними по осі Х.
i. Площу та координати центра ваги для замкненого контуру визначаємо за допомогою обходу його точок і для кожного відрізка ламаної застосовуємо модифіковану формулу Гріна (див. Розділ ????). В результаті отримаємо площу та їх статичні моменти відносно координатних осей, після чого за простими залежностями визначаємо координати центра ваги площі.
3. Отримання координат точок допоміжного перерізу Хі та Хj будується на принципі лінійної інтерполяції між двома сусідніми базовими перерізами, для чого будуємо між ними лінійчату поверхню, а потім для кожного відрізка цієї поверхні за допомогою лінійної інтерполяції визначаємо координати точок контуру допоміжного перерізу (див. розд ????).
Замкнена поверхня обмежує у просторі певний об'єм, який складає реальний об'єкт. Розглянемо практичні задачі, які виникають при роботі із такими об'єктами:
- геометричні характеристики: об'єм та координати його центра ваги для всього тіла або його частки;
- площі зовнішньої поверхні, яка охоплює цій об'єм;
- контур перерізу, який утворюється при перетині тіла (поверхні) площиною довільного розташування;
- врівноваження - визначення положення плаваючого у воді тіла, яке покинуто напризволяще.
6.2 Геометричні характеристики частини об'єму тіла, яке обмежується поверхнею
Визначемо геометричні характеристики частини (або всього) об'єму тіла (об'єм V та координати центра його ваги С: Xc, Yc, Zc), який відсікається знизу від тіла площиною довільного розташування вигляду Ах+Вy+Cz+D=0 ( Рис. 2 );
Для визначення коефіцієнтів площини довільного розташування(A, B, C, D) треба вибрати такий алгоритм, який би дозволив розрахунок цих коефіцієнтів для певного положення площини відносно координатних осей, наприклад : площина повинна проходити через певну точку, яка задається своїми координатами(X0, Y0, Z0) та нахилена до осі Х під кутом  (Psi), а до осі Y під кутом  (Teta). Визначення коефіцієнтів площини можна виконати за алгоритмом, фрагмент коду якого на мові Pascal наведен нижче :
A := -Cos(Teta) * Sin(Psi);
B := -Cos(Psi) * Sin(Teta); ( 5 )
C := Cos(Psi) * Cos(Teta);
D := -(A * X0 + B * Y0 + C * Z0);
Алгоритмічний аналіз задач, які розглядаються нижче, ведеться за принципом декомпозиції і зверху вниз.
6.2.1 Визначення об'єму тіла або його частини
Об'єм тіла визначається як сума окремих частин загального об'єму і обчислюється методом плоских перерізів, тобто складається з суми об'ємів частин тіла між базовими перерізами, які визначені на малюнку номерами 1-5 (Рис. 2, а).
; ( 6 )
де Vj - об'єми частин тіла між сусідніми базовими перерізами (див. Рис. 2, це об'єми між перерізами 1 - 2, 2 - 3, 3 - 4, 4 - 5);
V - загальний об'єм тіла.
Центр ваги сукупності окремих об'ємів(площин) визначається за правилом статичних моментів. Статичний момент це добуток об'єму (площі, маси) на відстань її центра ваги від певної осі порівняння. Для отримання центра ваги об'єму(площі, маси) складної форми використовуємо правило : статичний момент об'єму (площі, маси) системи дорівнює алгебраїчній сумі статичних моментів складових системи.
( 7 )
звідки координати центра ваги загального об'єму тіла визначемо :
( 8 )
Xj - абсциса центра ваги об'єму між двома базовими перерізами;
Xc - абсциса центра ваги цього об'єму.
Координати центра ваги об'єму Yc та Zc визначаються аналогічно.
6.2.2 Координати центра ваги об'єму частини тіла між двома базовими перерізами.
Частину тіла між двома перерізами будемо розглядати як трапецію, основами якої становлять площі перерізів, які цю частину обмежують, з висотою, яка визначається як відстань між ними по осі Х (Рис. 6). Тоді об'єм та координати центра ваги частини тіла між двома базовими перерізами Vі (Xv, Yv, Zv) визначимо за правилом трапецій:
Vj=(Sj+Sj+1)/2*(Xj+1-Xj); ; Де Sj, Sj+1 - площини перерізів з номерами j та j+1;
Xj Xj+1 - абсциси перерізів з номерами j та j+1;
Рис 6. Геометричні характеристики частини об'єму між двома базовими перерізами.
L - слід площини довільного розташування, яка перетинає поверхню;
Об'єм частини тіла, яка охоплюється поверхнею FDEK - Vj
C - центр ваги об'єму Vj;
F - базовий переріз з абсцисою Хj;
K - базовий переріз з абсцисою Хj+1;
X - абсциса центра ваги об'єму Vj;
А, В - центри ваги частини площин базових перерізів нижче сікучої площини довільного розташування.
Для визначення координат центра ваги об'єму між двома базовими перерізами vj : Xv, Yv та Zv використовуємо припущення (і це дійсно так ), що центр ваги об'єму розташовується на прямій, яка з'єднує центри ваги площин сусідніх перерізів. Абсцису центра ваги об'єму по довжині Xv визначемо як абсцису центра ваги площі трапеції FDEK, у якій основи - площі базових перерізів Sі, (Zі, Yі) та Sj+1(Zj+1, Yj+1):
Рис. 7. Визначення координати Yj , кружечками позначені положення центрів ваги площин сусідніх перерізів(обчислення координати Zj виконується аналогічно)
Звідси координати Zv та Yv визначаються з простих геометричних міркувань із подібності двох трикутників ABC та ADE (Рис. 7). де ордината та апліката центра ваги об'єма Vj;
ордината та апліката центра ваги площі перерізу з номером j;
ордината та апліката центра ваги площі перерізу з номером j+1;
6.2.3 Геометричні характеристики плоского замкненого контура
Задача визначення геометричних характеристик площин базового перерізу можна звести до задачі обчислення площі та координат центра ваги замкненеого контуру, який відсікається від базового площиною довільного розташування. Визначемо геометричні характеристики плоского замкненого контура, який описується координатами базових точок які розташовані на контурі, перша та остання точки співпадають, Рис 8. Для розв'язання цієї задачі краще за все використати формулу Гріна.
Рис. 8. Замкнений плоский контур (ламана лінія).
Коротко розглянемо її основу (Рис. 9). На малюнку зображен відрізок АВ, кінці відрізку з'єднані з початком координат, розглядаємо трикутник ОАВ. Рахуємо, що трикутник описується координатами своїх вершин : Ya, Za, Yb, Zb, Y0=0, Z0=0 (0 тому, що ця вершина завжди співпадає з початком координат);
Рис 9. Застосування формули Гріна для окремої ланки ламаної, яка охоплює базовий контур.
Площа трикутника ОАВ за формулою Гріна (Рис. 9):
Soab=0.5*(Za*Yb - Zb*Ya); ( 12 )
Координати центра ваги площі трикутника OAB( Ys, Zs ) визначимо як середньоарифметичне координат вершин за формулою
Ys=(Yb+Ya+Y0)/3; Zs=(Zb+Za+Z0)/3; (13)
Для нашого випадку у формулі можна залишити тільки дві координати, тому що третя (Z0,Y0) завжди співпадає з початком координат і має нульове значення.
Рис 10. Обчислення геометричних характеристик (S,Zs,Ys) площі трикутника.
Практичне застосування формули Гріна розглянемо на прикладі визначення геометричних характеристик площі трикутника ( Рис. 10) Для цього треба сформувати математичну модель - замкнений контур, який охоплює його площу. Це буде ламана з трьома ланками ( AB ,BC, CА). Для розв'язання задачі треба обійти усі ланки у будь-якому напрямку і до кожної застосувати формулу Гріна(12). Площини трикутника ОАВ та трикутників ОВС, ОСА, які визначаються за формулами (12) будуть мати різні знаки. Після сумування їх площин отримаємо площину замкненого контуру :
Sabс= Soab + Soac + Socb. ( 14 )
Координати центра ваги для нашого прикладу з трикутником отримаємо через статичні моменти системи трикутників аналогічно (7, 8) :
Xsabc *Sabc=Xsabo *Sabo + Xsbco * Sbco + Xsaco*Saco, звідки
Xsabo *Sabo + Xsbco * Sbco + Xsaco*Saco
Xsabc= ( 15 )
Sabc
Аналогічно
Ysabo *Sabo + Ysbco *Sbco + Ysaco*Saco
Ysabc= ( 16 )
Sabc
у свою чергу із формул ( 13 ) маємо :
Xsabо=(Xa+Xb+Xо) / 3;
Xsbcо=(Xb+Xc+Xo) / 3;
Xsacо=(Xa+Xc+Xo) / 3;
де Xa, Xb, Xc, Xo - абсциси вершин трикутників АВС, ABO, BCO У загальному випадку при обході замкненого контуру (Рис. 8 ) площини трикутників, які побудовані на ланках ламаної, та їх статичні моменти сумуються, а координати центра ваги площі замкненого контуру визначаються за формулами :
; ; ( 17 )
де Sі - площа трикутника, який побудован на i-й ланці (див. рис. 9);
Zі, Yі - координати ЦВ площі і-го трикутника.
і=1,2,3 - номери ланок ламаної, яка утворює математичну модель замкненого контура.
Знаки координат центра ваги площі не залежать від напрямку обходу контуру. а знак площі контура при одному із можливих напрямків обходу може стати від'ємним. Для того щоб не залежати від напрямку обходу контуру, після виконання обчислень геометричних характеристик площі, останню треба взяти по абсолютній величині.
Наведений алгоритм правильно працює для замкненого контура будь-якої форми. Особливо корисною властивістю наведеного алгоритму є його регулярність, тобто незалежність прийомів обробки поточної ланки від її розташування у ламаній ( перша, проміжна, остання).
6.2.4 Визначення геометричних характеристик симетричного контура
Якщо контур симетричний, то характеристики площі, яка відсікається лінією довільного розташування, обчислюється спочатку для правої половини, а потім для лівої за тим же алгоритмом, але при зміненому знаку кута нахилу прямої до горизонту на протилежний (  = - , рис. 11), після чого треба тільки поміняти знак координати Ys для лівої частини контура на протилежний. Визначення геометричних характеристик усієї частини контуру, який відсікається, виконується за звичайними правилами аналітичної геометрії (8, 9, 10).
Рис. 11 Визначення геометричних характеристик симетричного контура.
Контур 1-2-3-4-5-...Np симетричний відносно осі Z;
А - точка перетину прямої з контуром;
В - точка переетину прямої з віссю Z;
 - кут нахилу прямої до осі Y.
Якщо уважно подивитись на рис. 2, то можна помітити, що для обчислення об'єму частини тіла, яка відсікається площиною довільного розташування (на малюнку зображен її слід L ) необхідно визначити замкнений контур, який охоплює частку площі базового контура. Для розв'язання цієї задачі розглянемо рис. 11, на якому зображен базовий контур та слід тієї ж площини довільного розташування L. Алгоритм формування замкненого контура (який обмежується точками 1-2-3-А-В-1) складається із трьох операцій :
a) перевірка розташування точки над лінією L, чи під нею, в останньому випадку її слід занести до замкненого контуру, який охоплює площу;
b) знайти відрізок ламаної, з яким перетинається пряма та визначити координати точки перетину, які теж заносятся у замкнений контур
c) визначення координат точки перетину лінії L то осі Z та занесення її у контур, після цього занесення у контур останньої точки 1, щоб зробити контур замкненим(перша та остання точки співпадають).
6.2.5 Визначення наявності перетину відрізка з прямою
Слід прямої L (Рис. 11) представимо у вигляді прямої :
z=ky+b; ( 18)
де :
де : Z0 - апліката точки, через яку проводиться площина довільного розташування, див. формулу ( 8 );
Xj -характерна абсциса базового перерізу.
Для можливості визначити положення точки відносно прямої представимо її рівняння(18) у вигляді :
dz= z-ay-b;
Після підстановки координат поточної точки у цей вираз маємо :
- якщо dz=0 - точка належить лінії;
- якщо dz>0 - точка знаходиться вище лінії;
- у випадку, коли dz<0 точка знаходиться нижче лінії.
Таким чином, для відрізка, обидві кінцеві точки якого розташовані по одну сторону від лінії, добуток dz1*dz2 > 0, а зміна знаку виразу на dz1*dz2 < 0 буде означати, що точки відрізка лежать по різні сторони від прямої, це означає наявність перетину прямої та відрізка, якщо dz1*dz2 = 0 то це ознака того, що одна з точок, або обидві належать прямої. Додаткова більш детальна перевірка умови дозволить прояснити реальну ситуацію.
Для визначення координати точок перетину А через відрізок 4-5 проводять пряму. Для розрахунку її коефіцієнтів складаеться система двох лінійних рівнянь для кінцевих точок відрізка, які треба сумісно розв'язати. Координати точки перетину визначаються шляхом сумісного розв'язання системи, яка складається з отриманої прямої, яка проходить через відрізок, та рівняння прямої - сліда відсікаючої площини L . Координати точки В визначаються аналогічно.
Якщо сікуча площина проходить вище тіла, то обчислюються геометричні характеристики всього об'єму. У цьому випадку при формуванні замкненого контуру задача спрощується , тому що у якості замкненого контула використовується вже існуючий базовий контур, його треба тільки замкнути, додавши у масив після останньої його першу точку.
Досить часто задача ускладнюється умовою, що об'єм, який відсікається від тіла площиною довільного розташування, обмежується по довжині як праворуч так і ліворуч площинами , які паралельні базовим, але розташовані проміж ними, тобто їх характерні координати не співпадають з жодною координатою базових перерізів. Розв'язання такої задачі принципово не відрізняється від тієї, що розглянута вище, але для цього випадку з'являється необхідність визначення контуру перерізу з абсцисою Х, який розташовується між двома базовими, наприклад : Хi < Х < Хi+1.
6.2.6 Визначення контуру перерізу складної поверхні із довільною характерною абсцисою.
Рис. 12. Отримання проміжнього перерізу 3 (точки 1,2, 3 .... N ), який розташован між базовими перерізами 1 з характерною абсцисою Х1 та 2 з характерною абсцисою Х2.
Для визначення контура проміжного перерізу існує багато алгоритмів, які відрізняються як складністю так і точністю отримання результатів. Тут буде розглянуто один із простих, але який дає можливість одержувати достатньо точні результати. За цим алгоритмом два сусідніх перерізи з характерними абсцисами Х1 та Х2, які розташовуються ліворуч та праворуч від проміжного з абсцисою Х, розбиваються на однакову кількість рівних відрізків(1', 2', 3',... N'- для відріхка 1 та 1", 2", 3",... N"), чим більша їх кількість тим точніше можна отримати результат. Точки з однаковими номерами на базових контурах з'єднуються відрізками прямих, після чого залишається тільки визначити по черзі перетини від першого до останнього відрізка з площиною паралельною координатній площині YOZ і з характерною абсцисою Х за формулами :
Zi= Zi' + (Zi'-Zi'' )*( Х - Х2)/( Х1 - Х2);
Yi= Yi' + (Yi'-Yi'' )*( Х - Х2)/( Х1 - Х2)
Zi , Yi - координати - ї точки на проміжньому перерізізсцисою Х;
Zi' , Zi'' , Yi', Yi'' - координати - ї точки на перерізах 1 та 2 .
6.2.7 Розбивка ламаної на задану кількість рівних відрізків Основою цієї операції буде формування для заданої ламаної(базового контура) довжиною L допоміжну ламану, яка являє собою допоміжний базовий контур, який розбит на N відрізків довжиною кожний dl = L / N, перша та останні точки співпадають.
Рис. 13 Укладка відрізку dl на поточну i - у ланку BD
Розглянемо поточну ланку BD базової ламаної з номером і, яка має довжину li. l b - це довжина ланки, на якій вже були укладені відрізок dl(або його частина), тобто ця частина ланки вже зайнята, частина lv ланки поки що залишається вільною(Рис. 13). У процесі укладення поточного відрізка dl може зустрітися три випадки :
а) довжина lv > dl тоді на цю ланку можна вкласти відрізок dl, при цьому ще залищиться місце для розташування ще одного такого ж відрізка, або його частини;
б) довжина lv < dl, тоді на залишку ланки вкладаємо частину відрізку dl (довжиною = dl - lv), а решту переносимо на наступну ланку;
в) довжина lv << dl, а довжини наступних ланок << ніж dl - lv, тоді залишок відрізка, який вкладається, буде розташовуватись на декількох наступних ланках, поки не набереться необхідна довжина dl - lv.
Координати точки С(X0, Y0) на поточній ланці визначаються із подібності двох трикутників ABD та EBC :
BE / BA = BC / BD, звідки BE = BA * BC / BD;
BE = (Xi - Xi-1)*lb / (lb + lv), аналогічно CE = (Yi - Yi-1)*lb / (lb + lv);
звідки : X0 =Xi-1 + BE;
Y0 =Yi-1 + CE;
На базі цієї моделі нескладно розробити алгоритм, а потім програму.
Якщо уважно подивитись на Рис. 12, то можна помітити, що контур, який отримується при з'єднанні точок, які отримані при розбивкі ламаної на однакову кількість відрізків N однакової довжини, спотворюється відносно базового, але це спотворення можна розглядани як тим більщ незначне, чим більше номер N.
6.2.8 Визначення масиву координат точок базового контура складної поверхні за його номером
Усі процедури, які визначають властивості об'єму, обмеженого складною поверхнею, працюють з окремими базовими перерізами. З огляду на це розглянемо алгоритм вибору координат точок базового перерізу за певним номером - n, які розташовані у масивах YY та ZZ підряд (див. структуру даних для складної поверхні у розділі 4.1).. Алгоритм вибору координат перерізу буде складатися з двох операцій.
1. Визначення номера Nb елементу масиву Z та Y, з якого починаються координати точок, які належать контуру з номером N. Це визначається за простою формулою
; де: Nb - порядковий номер точки з якої починається опис базового перерізу з № n;
Kt[i] - масив кількості точок на i-м базовом перерізі;
2. Вибору з масивів ZZ та YY базових точок у кількості Kt[N], починаючи з номера Nb
6.3 Геометричні характеристики контуру перетину поверхні площиною довільного розташування Для розв'язання цієї задачі необхідно визначити координати точок контуру, які лежать на поверхні, яка охоплює тіло і сікучої площини. Треба мати на увазі, що отримана лінія буде просторова. Для визначити геометричніх характеристик контуру треба перетворити її у плоску лінію та скористатися формулою Гріна.
Ця задача має просту математичну модель, але на відміну від неї достатньо складний і громоздкий алгоритм реалізаціх. Задача має три варіанти :
а) Площина, що перетинає поверхню проходить таким чином, що всі базові контури мають з нею по дві точки перетину. Це випадок, коли площина має незначні кути нахилу до осей X та Y(кути  і ). Для визначення контуру перерізу необхідно знайти точки перетину згаданої
площини та всіх базових перерізів, після чого упорядкувати точки, які належать правим та лівим гілкам базових перерізів. Це достатньо проста задача і її розв'язання базується на попередньому матеріалі ( див розділ 5.1.4 ).
б) Площина, яка перетинає поверхню, має достатньо великі кути нахилу до координатних осей. Якщо  =900,, то вона паралельна координатній площині XOZ і в цьому випадку можна використати підхід, який описан в а) тому, що площина буде мати з кожним із базових перерізів по дві точки перетину. При =900 палощина буде вертикальною, паралельною координатній площині YOZ, і може не перетинати жодного базового перерізу, для цього випадку можна скористатися алгоритмом визначення контуру проміжнього переізу, який описан у розділі 5.1.6. Якщо абсциса сікучої площини співпадає з одним із базових перерізів, то ситуація набагато спрощується тому, що контур перетину буде сам базовий переріз.
в) Якщо кути нахилу до осей  і  мають великі значення, то треба використати інший алгоритм. Всі базові перерізи розбиваються на однакову кількість відрізків, наприклад - N, (див. алгоритм отримання проміжного перерізу, який описан у розділі 5.1.7 ). Таким чином на кожному базовому контурі буде розтащовано однакова кількість точок, перенумеруємо їх у будь-якому, але за однаковім принципом порядку 1..N. З'єднаємо точки з однаковими номерами на різних контурах прямими лініями. Отримана структура має назву лінійчатої поверхні і з певною точністю апроксимує реальну поверхню, тим точніше чим більше N. Після цього для отримання точок контуру перетину сікучої площини з лінійчатою поверхнею зводиться до послідовного знаходження координат точок перетину площини з відрізками лінійчатої поверїхні і самих базових контурів. Базові операції цього алгоритму :
- визначення перщої точки перетину сікучої площини з базовим контуром;
- визначення першої точки перетину лінії, яка складає лінійчату поверхню, із сікучою площиною;
- послідовний перехід до наступній лінії лінійчатої поверхні, з якою перетинається площина;
- послідовний перехід до наступного базового контура, з яким перетинається сікуча площина;
- формуванняння ознаки, яка зупиняє процес перегляду базових перерізів, для отримання замкненого контуру.
Розробка цих алгоритмів покладається на студентів з метою виявлення осіб, які мають достатньо високий рівень в програмуванні.
6.4 Площа частини зовнішньої поверхні тіла, яка відсікається від нього площиною довільного розташування
Обчислення площі, яка охоплює певну зовнішню частину об'єму і межує з навколишнім середовищем виконується як сума площин частин загальної площі, які розташовуються між базовими перерізами як було зроблене для об'ємів ( 6 ). Самі ж площі частин визначаються за правилом трапецій як добуток полусуми довжин (периметрів частин базових перерізів нижче відсікаючої площини) сусідніх перерізів, які обмежують частину поверхні, на відстань між ними по осі Х, за формулою, яка аналогічна ( 9 ). Периметр частини базового перерізу ( наприклад, на Рис. 11 це довжина ламаної 1-2-3-4-А ) визначемо за допомогою відомих з аналітичної геометрії відношень :
де li - довжина базового контура, яка лежить нижче сікучої площини;
n - кількість точок на ламаної, яка являє собою періметр частини перерізу, і знаходиться нижче площини довільного розташування;
Zi, Zi+1, Yi, Yi+1 - аплікати та ординати точок поточного відрізка.
Це периметр одної гілки, якщо тіло симетричне, слід додати ще частину від лівї гілки, використовуючи прийом, який викладен у розділі 5.1.4.
6.5 Врівноваження положення тіла у ридині
Врівноваження - є одною з найважливіших опереацій у проектуванні суден і являє собою визначення положення тіла відносно поверхні води, якщо тіло занурено у воду і покинуто напризволяще. При цьому повинні виконуватись дві умови :
1.Сила ваги та виштовхувальна сила повинні бути рівними :
P = Vg;
де Р -вага тіла, Н;
 - густина води, кг/куб.м;
V - об'єм зануреної у воду частини тіла, куб.м;
g - прискорення земного тяжіння, м/с2.
2. Сила ваги, яка направлена вертикально вниз і виштовхувальна сила, яка направлена вертикально вверх, повинні бути на одній вертикалі.
Розв'язання цієї задачі виконується методом послідовних наближень. У якості початкового варіанту можна призначити будь-яке положення тіла відносно поверхні води. Для нього визначаються геометричні характеристики підводної частини обєму (див. розділ 5.1). Якщо вага витісненої води менше ніж вага тіла, то тіло занурюється у воду глибше, якщо навпаки - менше(виконання умови 1). Аналогічним прийомом за допомогою зміни кутів нахилу площини довільного розташування (яка співпадає з поверхнею води) до осей Y та X  і  відповідно добиваються виконання умови 2. При цьому змінюються координати Zv та Yv , які приводяться на одну вертикаль з центром ваги тіла.
Практично ці дві опереації виконуються паралельно, а для прискорення збігу рішення застосовується метод ділення пополам.
6.6 Формування зовнішньої оболонки навколо поверхні.
Реальні об'єкти, які охоплює складна поверхня, як правило являють собою складний внутрішній устрій, а його поверхня представляє собою оболонку, яка розділяє об'єкт і навколишнє середовище(наприклад, обшивка судна є водонепроникною перепоною, яка розділяє судно і оточуєще середовище у якій воно функціонує(воду). У зв'язку з цим з'являється задача визначення маси такої оболонки, яка зроблена із заданого матеріалу.
Така задача може розв'язувати дві проблеми :
- визначення маси оболонки певної товщини, для її розв'язання необхідно розрахувати площу зовнішньої поверхні(див. задачу 5.3), помножити на товщину оболонки та на густину її матеріалу;
- дати можливість враховувати при роботі із складною поверхнею товщину оболонки, для цього треба збільшити координати базових точок на базових перерізах таким чином, щоб вони відображали іншу поверхню, яка еквидистантно проходить відносно базової на відстані товщини оболонки (товщина оболонки вимірюється як відстань від базовою поверхнею та новою поверхнею по нормалі). У випдках , коли товщина оболонки значна, таке врахування може суттєво вплинути на деякі властивості тіла, яке охоплює згадана поверхня.
7 Робота із аналітичною математичною моделлю складної поверхні Для простих об'єктів всю поверхню можна розбити на окремі частини, які являють собою геометричні примітиви ( циліндр, конус. еліпсоїд, кулю, тощо), кожну з яких легко описати аналітичними залежностями. Розглянемо найпростішій варіант просторового об'єкту, який легко описується аналітичними залежностями, наприклад торпеду. Її форму можна розділити на циліндричну частину, півкулю, яка закриває її корпус з носової кінцівки та усічений конус у кормі, див. Рис. 1.
Хвостова частина Центр. ЧастинаНосова частина
(усічений конус) (циліндр) (півкуля)
Рис. 1. Зовнішній вигляд торпеди.
Для підводного човна додається надбудова (рубка), яка має криловий профіль. Приблизно така ж ситуація з підводним апаратом, який використовується для виконання дослідних робіт під водою. Контури перерізів таких форм достатньо легко описати відповідною сукупністю аналітичних залежностей і створити аналітичну ММСП. Таким чином ця модель складається з сукупності аналітичних залежностей для опису параметрів форми поверхні. Алгоритми обробки такої ММ набагато простіші ніж для загального випадку.
7.1 Аналітична математична модель поверхні (підводного аппарата)
У загальному випадку замкнена поверхня, яка описує підводний аппарат (як у нашому прикладі), розподіляється на кінцеву (не дуже велику) кількість частин, кожна з яких описується аналітичною залежністю, а сусідні участки гладко стикуються один з одним. У загальному випадку аналітична ММСП можна уявити собі як аналітичною функцію F(x,y,z) = 0, яка дозволяє зв'язати три координати поверхні і таким чином визначає третю координату, якщо дві з них відомі.
У випадках, коли контур перерізів поверхні базовими площинами описується достатньо простими аналітичними залежностями ( еліпс, коло, криловий профіль, прогресика, тощо), а кількість частин поверхні із різними законами залежності форми від координат не перевищує 3-5, доцільно формувати аналітичну модель. Як приклад розглянемо легкий корпус підводного апарата (ПА), загальний вигляд якого зображен на рис..3. Легкий корпус це тонка оболонка, яка виготовлена із склопластика і призначена захищати внутріщній устрій апарату від механічних пощкоджень (не водонепроникнена) та створювати умови для зменшення опору води і покращанню керованості при переміщенні під водою.
- Рис. 3 Зовнішній вигляд ПА
Розріжемо поверхню площинами наступного розташування : - вертикальною площиною, яка проходить вздовж апарату і є його площиною симетрії, яка має назву діаметральна площина (ДП); - вертикальною площиною, яка проходить перпендикулярно ДП та проведена через абсцису з найбільшою шириною ПА, яка має назву площина мідельшпангоуту;
- горизонтальтальною площиною, яка проходить через середину висоти ПА і є горизонтальною площиною симетрії. Отримані таким чином перерізи зображені на Рис. 4. Рис. 4. Перерізи ПА координатними площинами.
Початок координат розташовано на границі носового та кормового загострення ln , lk.
Габаритні розміри ПА : висота H, ширина B, довжина L= lнз + lкз.
Hi , Bi - габаритні висота та ширина перерізу з абсцисою Xi.
Якщо уважно подивитись на переріз, який отримано від перетину ПА площиною ДП, то можна побачити, що довжина ПА ділиться площиною мідельшпангоуту на дві частини(Ln з додатними значеннями Х, та Lk із від'ємними значеннями Х). Ці частини мають різні закони формування поверхні. Обидві частини гладко стикуються на граничній координатній площині YOZ. Перерізи, які отримуються від перетину поверхні площинами, які паралельні YOZ, для всіх абсцис мають контур еліпсу з рівнянням : (1 )
де : а, b - півосі еліпсу, які обчислюються за формулами:
а=Bx/2,b=Hx/2;(2)
Hx, Bx - габаритні розміри перерізу ПА площиною, яка паралельна координатній площині YOZ і має абсцису Xi (див. Рис. 4 ).
Рис. 5 Контур перерізу ПА площиною, яка паралельна координатній площині YOZ.
Форма перерізів однакова для будь-яких абсцис, a, b - півосі еліпсу і визначаються за формулами (2, 3, 4).
Габаритні висота та ширина поверхні при абсцисі Х (Нх, Вх) визначаються за різними законами для носової та кормової частин ПА:
Теж саме для кормової частини де : Bx Hx - ширина та висота вертикального перерізу ПА з абсцисою X
У посібнику розглядаються складні замкнені поверхні, які охоплюють такі реальні об'єкти як судна, літаки, автомобілі, тощо. Фактично, поверхня охоплює тіло деякого реального об'єкту, з яким необхідно працювати ( визначати його геометричні та фізичні властивості ).
Розглянемо принципові особливості алгоритмів розв'язання тих же задач, але з ПА. Вони мають багато спільного із аналогічними задачами для точкової моделі поверхні, , але мають і свої особливості. Як правило, математичні моделі і алгоритми їх реалізації для цього випадку значно спрощуються.
Визначити контур перерізу, який отримується від перетину ПА вертикальною площиною, яка паралельна координатній площині YOZ з характерною координатою Lk<=Xi<=Ln. У зв'язку з тим, що такий переріз має контур еліпсу, то для його визначення для заданої характерної координати Xi обчислити півосі еліпсу за формулами( 2 ) в залежності від знаку Xi, після чого контур повністю визначається рівнянням ( 1 ). Визначити контур перерізу, який отримується від перетину ПА площиною, яка паралельна горизонтальній координатній площині ХOY з характерною координатою -H <= Zi <= H.
Ця задача складається із визначення координат точок перетину площини з перерізами, які утворюються від перетину поверхні вертикальними площинами, які паралельні координатній площині YOZ. Враховуючи те, що поверхня має вертикальну та горизонтальну площини симетрії, достатньо визначити тільки одну половину контуру.
Абсцису першої точки перерізу для носової частини ПА Xн, нескладно знайти з виразу ( 3 ), де замість значення.Hx , або Вx підставити характерну аплікату площини Zi, яка перетинає поверхню. Значення Y1=0, тому що ця точка лежить на вертикальній повздовжній площині симетрії XOZ.
Абсцису останній точки Xk визначити аналітично досить складно, тому її краще знайти чисельним методом. Для цього треба локалізувати точку перетину контуру диаметрального батокса із слідом площини, яка перетинає поверхню. Це означає, що необхідно знайти значення Xi, яке лежить ліворуч від Xk та Xj, яке лежить праворуч від неї. Таким чином приходимо до задачі уточнення корня рівняння F(x) на відрізку Xi-Xj, що можна зробити будь-яким методом, наприклад, діленням відрізка пополам.
Рис. 14. Визначення контуру перерізу ПА площиною, яка паралельна координатній площині XOZ.
Координати проміжних точок контура отримуються за наступним алгоритмом: - відрізки 0-Xn та 0-Xk розбиваються на певну кількість однакових інтервалів; - через абсциси точок ділення провести вертикальні площини паралельні координатній площині YOZ. Перерізи, які отримуються від такого перетину є еліпси з півосями, які у свою чергу визначаються перетином площини з контурами диаметрального батокса і диаметральній ватерлінії. Чисельні значення півосей визначаються за формулами ( 2 ), координати точок перетину для кожного перерізу з січною площиною можна визначити із вираза ( 1 ): ; ;
Для отримання перерізу точки на контурі розташовуються у відповідній послідовності у вибраній структурі даних.
7.2 Обчислити об'єм та координату центра ваги для частини ПА, яка відсікається від нього площиною довільного розташування.
Площина задається так як описано у точковій моделі складної поверхні (5). У загальному випадку площина, яка перетинає ПА може розташовуватись відповідно порверхні таким чином : - вище його, при цьому об'єм, який відсікається дорівнює повному об'єму ПА; - нижче його, при цьому площина не перетинає ПА і такого об'єму не існує; - площина перетинає ПА. Об'єм тіла визначається за прийомами та формулами, які наведені для точкової моделі складної поверхні з урахуванням того, що у цьому випадку контур перерізу визначається аналітичною залежністю. Геометричні характеристики контуру, який повністю знаходиться під площиною(для всього контуру), яка його перетинає, визначаються за формулами : - площа перерізу з абсцисою Xi;
Zs= 0 - апліката центра ваги площі перерізу з абсцисою Xi;
Ys= 0 - ординат центра ваги площі перерізу з абсцисою Xi. Після цього об'єм і координати центра ваги ПА можна визначити за формулами (9, 10, 11).
7.3 Визначити контур, який утворюється від перетину поверхні ПА площиною довільного розташування (див. задачу 3). . У загальному випадку контур перерізу не буде мати осі чи площини симетрії, тому необхідно визначити його обидві гілки - праву та ліву. Для цього використовується той же засіб як і для задачі, яка описана у розділі 5.2. Але на відміну від точковоої моделі точки перетину визначаються як результат розв'язання системи двох рівнянь : еліпсу та прямої. Параметри прямої визначаються аналогічно (18), а півосі еліпсу по формулах (2, 3, 4).
7.4 Обчислення загальній зовнішній площі ПА. Площа зовнішньої поверхні ПА визначається за прийомами та формулами, які наведені для точкової моделі складної поверхні. Відносно загального випадку для точковій моделі ситуаціа значно спрощується, тому що практичне значення має тільки повна площа, яка охоплює ПА у зв'язку з тим, що ПА рухається виключно у підводному положенні і опір тертя води визначається повною площею зовнішньої поверхні.
Периметр контуру(еліпсу),визначається за формулою Таким чином загальну зовнішню площу ПА можна обчислити аналогічно тому, як це описано у розділі 5.3.
8 Заключення
Таким чином для розв'язання розглянутої групи задач треба розробити алгоритми і програми для реалізації наступного переліку базових операцій :
a. формування замкненого контуру, який відсікається від базового лінією довільного розташування;
b. розрахунок геометричних характеристик (площа та координати центра ваги ) замкненого плоского контуру;
c. визначення координат точки перетину двох прямих;
d. визначити коефіцієнти прямої, яка проходить через відрізок, який задано координатами точок своїх кінців;
e. розрахунок геометричних характеристик частини (або всього) об'єму тіла, коли відомі геометричні характеристики складових частин (перерізів).
f. визначення довжини ламаної, яка задана координатами базових точок;
g. формування координат точок проміжного контуру, який розташовано між сусідніми базовими;
h. розташування N рівних по довжині ланок на ламаній яка задана координатами своїх базових точок;
i. визначення координат точки перетину відрізка прямої із площиною довільного розташування.
Ці базові операції є достатньо універсальними і їх необхідно оформляти у вигляді процедур або функцій з обміном даними через формальні параметри, щоб можна було в подальшому використовувати їх для розв'язання інших задач при роботі із складними поверхнями. При розробці алгоритмів для кожній операції треба особливу увагу приділяти можливості обробці всіх припустимих варіантів вхідних даних, а також виконувати аналіз на їх припустимість. При порушенні цього правила повинно видаватися відповідне повідомлення, аналіз якого виводить користувача на помилку, програма не повинна завершуватись аварійно. Правильна розробка алгоритмів та програмного забезпечення дозволяє працювати з будь-якими поверхнями, структура даних яких ідентична. Це буде служити ознакою якісної розробки програмного забезпечення.
8 Орієнтовний перелік тем КР
8.1. Характеристики поверхнi - розраховуються габаритнi ширина, висота, довжина ,які обчислюються програмним шляхом та фiзичнi характеристики тiла, яке охоплює складна поверхня (масу i координати його центра ваги, введення густини тіла передбачити окремо).
8.2. Таблиця ординат - на екранi формується таблиця ординат поверхні (наприклад, по горизонталi аплiкати перерiзiв, а по вертикалi ординати, або навпаки), пiсля редагування даних зробити перезапис робочої структури даних.
8.3. Перерiзи ► горизонтальний...- по запрошенню ввести аплiкату перерiзу, сформувати координати його контуру та зобразити його на формi.
8.4. Теж саме для повздовжнього вертикального. 8.5. Теж саме для поперечного вертикального.
8.6. Перегляд базових перерiзiв - по запрошенню ввести номер базового перерiзу витягти його iз робочої структури даних та зобразити на екранi.
8.7. Фізичні характеристики частини тiла.- обчислення фiзичних характеристик частини тiла (V,Xc), яка вiдсiкається вiд основного горизонтальною площиною, аплiкату площини ввести по запрошенню.
8.8. Площа зовнiшньої поверхнi.- обчислення площi зовнiшньої поверхнi для частини тiла, яка вiдсiкається вiд основного горизонтальною площиною, аплiката якої вводиться по запрошенню.
8.9. Врiвноваження.- визначення аплiкати горизонтальної поверхнi, яка вiдсiкає частину, об'єм якої дорiвнюється тому, значення якого введено по запрошенню користувачем.
8.10. 3D-вид - по запрошенню користувач вводить кут, пiд яким розглядається поверхня та масштаб, пiсля чого на формi зображаються контури базових перерiзiв і зображається так звана 'дротова' модель поверхнi.
8.11. Додавання зовнiшнiй оболонки - всi ординати та аплiкати точок, якi лежать на поверхнi збiльшуються на певну величину, яка залежить вiд положення точки вiдносно осей координат, так i вiд товщини оболонки, значення якої вводиться користувачем.
СПИСОК ДЖЕРЕЛ ІНФОРМАЦІЇ
1. Батрак Ю.А., Донченко М.В., Журавська І.М., Фисун М.Т. Методичні вказівки до оформлення звітної текстової документації та кваліфікаційних робіт з дисциплін, закріплених за факультетом комп'ютерних наук. - Миколаїв: видавн. ЧДУ ім. Петра Могили, 2009. - 42 с. 10.2 Приклад програми за вимогами ООП у Delphi
program Project1;
{$APPTYPE CONSOLE}
{Створення двох класів Cut і Line з наслідуванням та
обчислення довжини ламаної лінії у консольному режимі Delphi}
uses
SysUtils;
const
N=5; //кількість точок на ламаній лінії
type
Mas1 = array[1..N] of real; //масив координат базових точок ламаної
Cut = class //клас відрізка
MasX, MasY :Mas1; //масиви координат ламаної
constructor Init(X1,Y1,X2,Y2:real;
I : integer);
class function Length(X1,Y1,X2,Y2:real):real;{ця функція використовується
нижче у класі Line, змінна класу Cut ще не створена, тому вона
повинна бути описана як class function }
end;
//---------------------------------------------------------------------
Line = class(Cut) //клас ламаної лінії, предок - відрізок
constructor Init(X, Y :Mas1);
function Length(MasX, MasY :Mas1):real;
end;
//---------------------------------------------------------------------
constructor Cut.Init(X1,Y1,X2,Y2:real;
I : integer);
//ініціалізація відрізка, координати кінців відрізка - по 2 елементи масивів І=1
begin
MasX[I]:=X1; MasY[I]:=Y1; MasX[I+1]:=X2; MasY[I+1]:=Y2;
end;
//---------------------------------------------------------------------
class function Cut.Length(X1,Y1,X2,Y2:real):real;
//визначення довжини відрізка
begin
Length := Sqrt(Sqr(X1-X2)+Sqr(Y1-Y2));
end;
//---------------------------------------------------------------------
constructor Line.Init(X, Y :Mas1);
//ініціалізація ламаної
var
I : byte;
begin
for I:=1 to N-1 do
Cut.Init(X[I],Y[I],X[I+1],Y[I+1],I); //використання метода предка
end;
//---------------------------------------------------------------------
function Line.Length(MasX, MasY :Mas1):real;
//визначення довжини ламаної
var
I :byte;
L :real;
begin
L:=0;
for I:=2 to N do
L:=L+Cut.Length(MasX[I-1],MasY[I-1],MasX[I],MasY[I]); {використання метода метода предка}
Length:=L;
end;
//---------------------------------------------------------------------
var //створення об'єктів - екземплярів класів
OneCut :Cut;
OneLine :Line;
L :real;
X1,Y1,X2,Y2 :real;
const
X:Mas1=(1,3,3,4,5); //координати вершин ламаної
Y:Mas1=(1,1,8,9,10);
begin
OneCut:=Cut.Init(1,1,3,1,1);//динамічно створюється змінна (об'єкт)
//OneCut типу Cut, в неї записується вказівник на неї,
//після чого до неї можливо звернення із програми
L:=OneCut.Length(X[1],Y[1],X[2],Y[2]); //довжина відрізка
writeln('LengthCut= ',L:6:3);
OneLine:=Line.Init(X,Y);//теж саме, що і у випадку OneCut
L:=OneLine.Length(X,Y); //довжина ламаної
writeln('LengthLine= ',L:6:3);
readln;
end.
12
Методичні вказівки до виконання курсової роботи з курсу "Основи програмування та алгоритмічні мови"
Документ
Категория
Рефераты
Просмотров
321
Размер файла
1 318 Кб
Теги
posibnik, kursova, new
1/--страниц
Пожаловаться на содержимое документа