IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> 3d-пирамида, help!!!
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: Таня

Репутация: -  0  +


Помогите кто может!!!
3d -пирпамида (5 точек т.е. в основание 4 точки)
1)должна двигаться по координатам X Y Z
увеличиваться уменьшаться(zoom)
2)в дальнейшем двигаться еще по элипсу и давать тень
а у меня что то глючит и я не понимаю что именно
делала по образу и подобию кубика
program pir;
uses graph,crt;

const
piramid: array [0..14] of real =
(180,100,100,150,140,100.
230,140,100,120,170,100,
200,170,100);
lindex: array [0..15] of integer =
(0,1,0,2,3,0,4,1,2,4,2,3,4,1,3)

var xt,yt,zt:real;
xan,yan,zan:real;
sx,sy,sx1,sy1,p,zoom:integer;
procedure draw(color:byte);
begin
for p:=0 to 11 do begin
sx:=round(zoom*piramid[lindex[p*2]*3])+160;
sy:=round(zoom*piramid[lindex[p*2]*3+1])+100;
sx1:=round(zoom*piramid[lindex[p*2+1]*3])+160;
sy1:=round(zoom*piramid[lindex[p*2+1]*3+1])+100;
setcolor(color);
line(sx,sy,sx1,sy1);
end;
end;
procedure calc;
begin
for p:=0 to 7 do begin
yt:=piramid[p*3+1]*cos(xan)-piramid[p*3+2]*sin(xan);
zt:=piramid[p*3+1]*cos(xan)+piramid[p*3+2]*sin(xan);
piramid[p*3+1]:=yt;
piramid[p*3+2]:=zt;
xt:=piramid[p*3]*cos(yan)-piramid[p*3+2]*sin(yan);
zt:=piramid[p*3]*cos(yan)+piramid[p*3+2]*sin(yan);
piramid[p*3]:=xt;
piramid[p*3+2]:=zt;
xt:=piramid[p*3]*cos(zan)-piramid[p*3+1]*sin(zan);
yt:=piramid[p*3]*cos(zan)+piramid[p*3+1]*sin(zan);
piramid[p*3]:=xt;
piramid[p*3+1]:=yt;
end;
end;
var gd,gm:integer;
t:char;
begin
gd:=detect;
initgraph(gd,gm,'');
zan:=0.1;
yan:=0.02;
xan:=0.02;
zoom:=30;
repeat
draw(15);
delay(2000);
draw(0);
calc;
if keypressed
then begin
t:=readkey;
case t of
'+':zoom:=zoom+1;
'-':zoom:=zoom-1;
end;
end
until t=#13;
closegraph;
end.


Пользуйтесь пожалуйста тегами

Сообщение отредактировано: volvo -


Прикрепленные файлы
Прикрепленный файл  PIR.PAS ( 1.67 килобайт ) Кол-во скачиваний: 381
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


отсюда берем программу для вращения куба и меняем только координаты вершин (и их юудет меньше) и связи между ребрами редактируем...
ЧТо бы правильно это сделать, построй пирамидку в AutoCAD'e или просто аккуратно нарисуй на бумаге и пронумеровав верщины задай им координаты..


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: Таня

Репутация: -  0  +


Я с этой ссылки и переделала программку, но что то не работает unsure.gif
только вмтавила свои координаты и линии, а cube переиминовала в piramid
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Координаты значит неверно вставила.
Разберись как это делать я же все указывал.
Сначала задаем координаты, причем постарайся указать центр (0,0,0) где-то в районе центра масс пирамидки...
но это не столь важно.
А линии задают пары точек связанных


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: Таня

Репутация: -  0  +


при компеляции все нормально, а при запуске error 200: Division by zero. blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата(stefi78 @ 27.03.2006 12:50) *

при компеляции все нормально, а при запуске error 200: Division by zero. blink.gif


Компилятор Bp7/tp7?
Ошибка в модуле CRT в данном случае.
Исправить так - http://forum.pascal.net.ru/index.php?showtopic=4537

Либо, если этот вариант не пройдет, то тогда ошибка - действительно где-то деление на 0.

Сообщение отредактировано: Ozzя -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: Таня

Репутация: -  0  +


Цитата(Ozzя @ 27.03.2006 11:55) *

Компилятор Bp7/tp7?
Ошибка в модуле CRT в данном случае.
Исправить так - http://forum.pascal.net.ru/index.php?showtopic=4537

Либо, если этот вариант не пройдет, то тогда ошибка - действительно где-то деление на 0.



Пробовала и так и этак (и скачала ,и сама поменяла)что то у меня не идет,ДАЖЕ ТЕСТОВАЯ wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 0:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name