dimitriy7

BANNED | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору A1exSun Про чтение координат уже писал, если еще и линии нужны: В раздел описаний добавь (если какие-то переменные/типы уже описаны - замени их): Код: {$I-} const nm=80; cm=60; type Matrix = array[0..nm,0..nm] of single; var n: integer; {кол-во точек, с нумерами от 0 до n-1} c: integer; {кол-во плоскостей в фигуре = кол-во СТРОК в нижнем блоке чисел} i,j: integer; tmp1,tmp2,tmp3: byte; lines: array[0..cm,0..10] of byte; m, t: Matrix; p: array[0..nm] of Point3D; maswtab: single; CoordFile: text; | В тело программы (в самое начало, сразу после главного BEGIN): Код: maswtab:={коэффициент масштабирования координат из файла}; assign(CoordFile,'имя_файла'); reset(CoordFile); read(CoordFile,n,c,tmp1); for i:=0 to n-1 do begin read(CoordFile,p[i].x,p[i].y,p[i].z); p[i].p:=1; p[i].x:=p[i].x*maswtab; p[i].y:=p[i].y*maswtab; p[i].z:=p[i].z*maswtab; end; for i:=0 to c-1 do begin read(CoordFile,lines[i,0]); for j:=1 to lines[i,0] do read(CoordFile,lines[i,j]); read(CoordFile,tmp1,tmp2,tmp3); end; close(CoordFile); | В тело программы (везде где строим фигуру - вместо кучи Line3D() ): Код: for i:=0 to c-1 do begin for j:=1 to lines[i,0]-1 do Line3D(m,p[lines[i,j]],p[lines[i,j+1]]); Line3D(m,p[lines[i,lines[i,0]]],p[lines[i,1]]); end; | Соответственно - файл копипастом с того сайта, включая первую строчку со служебной информацией например так: [?] Добавлено: Это всё для новых названий переменных ) И ещё: 1) переменные внутрь процедур ВСЕГДА передавай ссылкой (т.е. с помощью слова var), иначе рискуешь получить переполнение стека. 1) все вещественные типы замени на single - иначе банально в сегмент памяти не впишешься. Или если хочешь поточнее - можешь сделать double, тогда ограничь макс. возможное кол-во точек и плоскостей: const nm=60; cm=40; | Всего записей: 2946 | Зарегистр. 09-10-2008 | Отправлено: 23:28 09-02-2012 | Исправлено: dimitriy7, 00:48 10-02-2012 |
|