![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Ametist |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
От теоретической части, я перешел к решению задачи. Сначала я сделал просто три линии, которые были связаны между собой, и каждая из которых вращалась в полярной системе координат, но такую работу у меня не приняли и приходится начинать все сначала.
И я поставил себе такую задачу: "Построить три октаэдра, которые бы произвольно вращались относительно любых трех осей координат и были свзяны между собой". Пока вопрос такой, у меня не получается построить сам октаэдр.. Код вот...
Xs:= Round(GetMaxX div 2 + N*x/z); Ys:= Round(GetMaxY div 2 + N*y/z); Все дело умирает на этих вдух строчках, пишет "error 205 Floating point overflow". Вопрос как это исправить, чтобы все работало? Внутренность тхт файла выглядит вот так... 6 -100 -100 0 -100 100 0 100 100 0 100 -100 0 0 0 -141.42 0 0 141.42 12 0 1 1 2 2 3 3 0 4 0 4 1 4 2 4 3 5 0 5 1 5 2 5 3 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Переделал на вот так... Это ничего не дает... У тебя из файла читаются индексы (в Edges), начиная с 0, а не с 1-цы, и следовательно, при попытке обратиться кx:=Shape.vertices[Shape.edges[i].src].x + Shape.xc; (когда Shape.edges[i].src = 0) произойдет ни что иное, как выход за пределы массива... Зайди уже в меню Options -> Compiler, и включи там Range Checking (и больше никогда не отключай, если хочешь бОльшую часть времени писать программы, а не заниматься отловом глюков) Надо было менять вот так: ... Но и это тебе ничего не даст... Программа все равно нерабочая. По одной простой причине: у тебя не инициализируются поля xc, yc, zc в структуре. А при вычислении X, Y и Z они используются... Все бы ничего, НО... Ты не заполняешь сразу структуру, переданную, в Var параметр, а сначала заполняешь локальную, и только потом присваиваешь выходной структуре ее значения. Разница в твоем случае - катастрофическая: если в глобальной структуре Турбо Паскаль инициализирует все числовые значения нулем, то в локальной - ничего не инициализируется, остаются те значения, которые были в памяти на момент создания структуры... Вот, например, при просмотре поля zc я вижу там число 4.087277324625618E+129 - представляешь, что получится в результате? |
![]() ![]() |
![]() |
Текстовая версия | 12.08.2025 10:26 |