![]() |
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
|
Гость ![]() |
Цитата Вопрос как сделать так, чтобы оси для второго выходили из конца первого параллелепипеда? У тебя же есть координаты "конца" первого параллелепипеда (ну, скажем, середина той грани, к которой крепится второй параллелепипед может быть вычислена без проблем в любое время)? так вот высчитывай положение второго "кубика" относительно начала координат, так же, как делаешь с первым, а потом, только для того, чтобы отрисовать второй "кубик" делай пересчет координат его вершин (добавляй к каждой координате каждой вершины координату "конца" первого "кубика"). Повторяю: только отрисовывать с новыми координатами.Фактически, достаточно в твою программу добавить процедуру сложения записи типа Object3D и структуры, хранящей 3 координаты X, Y, Z; и в ShowShape передавать не один параметр, а два: первый - это сам "кубик", а второй - это "концевая точка" предыдущего объекта (для первого "кубика" - нули по всем координатам), а уже внутри нее заводишь локальную переменную типа Object3D, в нее заносишь сумму Shape и той самой "концевой точки предыдущего объекта", и отрисовываешь именно ЭТУ структуру. Попробуй сделать это сам, если не получится - обращайся ![]() Кстати, твою программу можно упростить, насколько я вижу. |
![]() ![]() |
![]() |
Текстовая версия | 12.08.2025 12:16 |