|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Робота із математичною моделлю складної поверхні. Розглянемо приклад структури даних складної поверхні, яка розташована у текстовому файлі 17000.txtРозглянемо приклад структури даних складної поверхні, яка розташована у текстовому файлі 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); Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |