![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Merhaba |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: ![]() ![]() ![]() |
Добрый Вечер!!!
Помогите Пожалуйста решить задачу: В трехмерном массиве размерностью m*n*l , состоящим из нулей и единиц, хранится изображение(сеточное)некоторого трехмерного тела. Получить двумерный массив - его проекцию(тень) на любое выбранное направление. Я думаю, что: 1. В 3D координатах рисуем кубик, представляющий исхдный массив (если размерности не равны, то кубик кубиком уже не будет, но это к делу не относится). 2. Рисуем плоскость проекции. 3. Разбиваем плоскость на "пиксели", соответствующие элементам получаемого массива-проекции, т.е. на квадратики. 4. Проецируем на плоскость все элементы массива. Если в любую точку "пикселя" падает проекция хоть одной единицы - элементу массива-проекции присваиваем единицу. Если только нули - ноль. Помогите Пожалуйста написать код) |
![]() ![]() |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Перед этим нужно запросить у пользователя n. С этим сам справишься? Только одно НО: нельзя запрашивать у пользователя n, которое входит в определение типа. Либо нужно сделать тип по максимуму (и запрашивать ограничение), либо использовать динамические массивы (что, конечно, предпочтительнее).Организовать три цикла по заполнению массива с помощью генератора целых чисел в диапозоне: 0..1 Цитата У меня затруднение вызывает проектирование на любое выбранное направление Я полагаю, что "любое" означает "любое из трех" на самом деле - то есть параллельно x, y и z.Допустим, изображение находится в массиве a, и ты хочешь получить его проекцию на плоскость xz (то есть, параллельно направлению y). Массив для этой проекции так и назовем: xz. var , мысля, что первый индекс - это x, а второй - z. Тогда сам процесс получения проекции можно организовать примерно так: for x:=1 to n do Ты можешь написать непосредственно три таких куска (меняя только массивы, представляющие плоскость, и индексы). Если хочешь реализовать, как функцию (для большего кпд кода), то нужно будет немного поменять архитектуру данных (либо вставить выбор непосредственно в цикл, что не есть хорошо и красиво). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Merhaba |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: ![]() ![]() ![]() |
С этим сам справишься? Только одно НО: нельзя запрашивать у пользователя n, которое входит в определение типа. Либо нужно сделать тип по максимуму (и запрашивать ограничение), либо использовать динамические массивы (что, конечно, предпочтительнее). Я полагаю, что "любое" означает "любое из трех" на самом деле - то есть параллельно x, y и z. Допустим, изображение находится в массиве a, и ты хочешь получить его проекцию на плоскость xz (то есть, параллельно направлению y). Массив для этой проекции так и назовем: xz. var , мысля, что первый индекс - это x, а второй - z. Тогда сам процесс получения проекции можно организовать примерно так: for x:=1 to n do Ты можешь написать непосредственно три таких куска (меняя только массивы, представляющие плоскость, и индексы). Если хочешь реализовать, как функцию (для большего кпд кода), то нужно будет немного поменять архитектуру данных (либо вставить выбор непосредственно в цикл, что не есть хорошо и красиво). Скажите Пожалуйста, а что " xz[x,z]:= byte(y<=n)" означает? |
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 13:59 |