Как построить куб в матлаб
Как построить 3D сетку (куб) в Matlab
Привет, я хотел бы построить прозрачную сетку в форме куба с линиями внутри. Что-то вроде этого:
Однако мне удалось нарисовать только 2D сетку:
Использую Matlab R2009b. Если невозможно построить это в Matlab, не могли бы вы порекомендовать мне программное обеспечение, которое я мог бы использовать.
6 ответов
Если вы не возражаете против нескольких циклов for, сработает что-то вроде этого:
Вам просто нужно будет сделать сетку прозрачной, возможно, изменив свойства линии, я не думаю, что вы можете изменить альфа-значения для этого. Надеюсь, что это поможет.
Вы можете сделать внутреннюю линию прозрачной, установив color = [0,65, 0,65, 0,65]. И вы можете использовать стиль пунктирной линии для внутренних линий и сплошных линий для границ, чтобы сделать его более похожим на трехмерный объект.
В моем программном пакете я кодирую функцию mesh3 для построения трехмерных сеток тензорного произведения.
Я понимаю, что это запоздалый ответ, но он все еще действителен на тот случай, если кто-то еще хочет сделать то же самое.
Предполагая, что вы рисуете кубы (/ их края), альтернативой уже предоставленным ответам является использование кода «plotcube» от Оливера: plotcube
Преимущество этого решения в том, что вы можете:
Все они могут быть константами или переменными. (например, фиксированный цвет края или цвет, который изменяется в зависимости от значения Z и т. д.)
Дополнительную информацию о «патче» см. В документации по патчу.
Надеюсь, это кому-то поможет.
Вот код ‘plotcube’ на тот случай, если ссылка на исходный код Оливера когда-нибудь сломается:
Более векторизованная версия ответа Стивена может быть следующей:
К сожалению, MATLAB в настоящее время не поддерживает прозрачные линии (насколько мне известно). Если вам действительно нужно, чтобы они были прозрачными, я бы предложил использовать «патч».
Рассмотрим это векторизованное решение. У него есть преимущество в том, что он создает единый графический объект:
How to plot 3D grid (cube) in Matlab
Hi I would like to plot transparent cube-shaped grid with lines in it. Something like this:
However, I managed only to draw a 2D grid:
I use Matlab R2009b. If it is impossible to plot this in matlab could you recommend me a software I could use.
6 Answers 6
Consider this vectorized solution. It has the advantage that it creates a single graphic object:
If you don’t mind a few for loops, something like this will work:
You will just need to make the grid transparent by probably changing line properties, I don’t think you can change alpha values to accomplish this. Hope that is helpful.
A more vectorized version of Stephen’s answer might be the following:
Unfortunately, MATLAB does not currently support transparent lines (to my knowledge). If you really need them to be transparent I’d suggest using ‘patch’.
I understand this is a late reply but it is still valid in case anyone else is looking at doing the same thing.
Assuming you are plotting cubes (/their edges), an alternative to the answers already provided is to use the ‘plotcube’ code from Oliver: plotcube
The advantage of this solution is that you can:
All of these can be constants, or variables. (e.g. fixed edge colour, or a colour that changes with Z-value etc.)
To add in functionality of 2. and 3. (above) change the ‘cellfun(@patch. ‘ section in Olivers code, adding in the four extra lines of code as follows: (replace the whole cellfun section with this; including the new ‘EdgeAlpha’ and ‘EdgeColor’ lines):
For more info on ‘patch’ please see patch documentation.
I hope that helps someone.
Here is the ‘plotcube’ code in case the link to the original code by Oliver breaks someday:
Как построить 3D сетку (куб) в Matlab
Привет я хотел бы построить прозрачную кубовидную сетку с линиями в нем. Что-то вроде этого:
Однако мне удалось нарисовать только 2D-сетку:
Если вы не возражаете против нескольких циклов, что-то вроде этого будет работать:
Вам просто нужно сделать сетку прозрачной, возможно, изменив свойства линии, я не думаю, что вы можете изменить альфа-значения для достижения этой цели. Надеюсь, что это полезно.
Рассмотрим это векторизованное решение. У него есть преимущество в том, что он создает один графический объект:
Более векторизованная версия ответа Стивена может быть следующей:
К сожалению, в настоящее время MATLAB не поддерживает прозрачные линии (насколько мне известно). Если вам действительно нужно, чтобы они были прозрачными, я бы предложил использовать ‘patch’.
Я понимаю, что это поздний ответ, но он все еще действителен в случае, если кто-то еще пытается сделать то же самое.
Предполагая, что вы строите кубы (/ их ребра), альтернативой уже предоставленным ответам является использование кода plotcube от Оливера: plotcube
Преимущество этого решения заключается в том, что вы можете:
Для получения дополнительной информации о ‘patch’ см. patch документацию.
Я надеюсь, что это помогает кому-то.
Вот код ‘plotcube’ в случае, если ссылка на оригинальный код, сделанная Оливером, когда-нибудь прекратится:
вы можете сделать внутреннюю линию прозрачной, установив цвет = [0,65, 0,65, 0,65]. И вы можете использовать стиль штриховых линий для внутренних линий и сплошные линии для границ, чтобы сделать его более похожим на трехмерный объект.
В моем программном пакете я кодирую функцию mesh3 для построения трехмерных сеток тензорных произведений.
Как построить 3D сетку (куб) в Matlab
Привет я хотел бы построить прозрачную кубовидную сетку с линиями в нем. Что-то вроде этого:
Однако мне удалось нарисовать только 2D-сетку:
Я использую Matlab R2009b. Если это невозможно изобразить в Matlab, не могли бы вы порекомендовать мне программу, которую я мог бы использовать.
6 ответов
Если вы не возражаете против нескольких циклов, что-то вроде этого будет работать:
Вам просто нужно сделать сетку прозрачной, возможно, изменив свойства линии, я не думаю, что вы можете изменить альфа-значения для достижения этой цели. Надеюсь, что это полезно.
Рассмотрим это векторизованное решение. Преимущество в том, что он создает один графический объект:
Более векторизованная версия ответа Стивена может быть следующей:
К сожалению, в настоящее время MATLAB не поддерживает прозрачные линии (насколько мне известно). Если вам действительно нужно, чтобы они были прозрачными, я бы предложил использовать ‘patch’.
Я понимаю, что это запоздалый ответ, но он все еще действителен, если кто-то еще пытается сделать то же самое.
Предполагая, что вы строите кубы (/ их ребра), альтернативой уже предоставленным ответам является использование кода plotcube от Оливера: plotcube.
Преимущество этого решения в том, что вы можете:
Все они могут быть константами или переменными. (например, фиксированный цвет края или цвет, который изменяется в зависимости от значения Z и т. д.)
Чтобы добавить функциональность 2. и 3. (выше), измените раздел ‘cellfun(@patch. ‘) в коде Оливера, добавив в четыре дополнительные строки кода: (заменить целое cellfun раздел с этим; включая новые строки ‘EdgeAlpha’ и ‘EdgeColor’):
Для получения дополнительной информации о ‘patch’, пожалуйста, смотрите документацию к патчу.
Я надеюсь, что это помогает кому-то.
Вот код ‘plotcube’ в случае, если ссылка на оригинальный код, сделанная Оливером, когда-нибудь прекратится:
Как построить куб в матлаб
Обычная графика MATLAB
Построение графиков точками и отрезками прямых
Графики в логарифмическоми полулогарифмическом масштабе
Гистограммы и диаграммы
Графики специальных типов
Создание массивов данных для трехмерной графики
Построение графиков трехмерных поверхностей, сечений и контуров
Средства управления подсветкой и обзором фигур
Средства оформления графиков
Одновременный вывод нескольких графиков
Управление цветовой палитрой
Окраска трехмерных поверхностей
Двумерные и трехмерные графические объекты
Одно из достоинств системы MATLAB — обилие средств графики, начиная от команд построения простых графиков функций одной переменной в декартовой системе координат и кончая комбинированными и презентационными графиками с элементами анимации, а также средствами проектирования графического пользовательского интерфейса (GUI). Особое внимание в системе уделено трехмерной графике с функциональной окраской отображаемых фигур и имитацией различных световых эффектов.
Описанию графических функций и команд посвящена обширная электронная книга в формате PDF. Объем материала по графике настолько велик, что помимо вводного описания графики в уроке 3 в этой книге даются еще два урока по средствам обычной и специальной графики. Они намеренно предшествуют систематизированному описанию большинства функций системы MATLAB, поскольку графическая визуализация вычислений довольно широко используется в последующих материалах книги. При этом графические средства системы доступны как в командном режиме вычислений, так и в программах. Этот урок рекомендуется изучать выборочно или выделить на него не менее 4 часов.
Построение графиков отрезками прямых
Функции одной переменной у(х) находят широкое применение в практике математических и других расчетов, а также в технике компьютерного математического моделирования. Для отображения таких функций используются графики в декартовой (прямоугольной) системе координат. При этом обычно строятся две оси — горизонтальная X и вертикальная Y, и задаются координаты х и у, определяющие узловые точки функции у(х). Эти точки соединяются друг с другом отрезками прямых, т. е. при построении графика осуществляется линейная интерполяция для промежуточных точек. Поскольку MATLAB — матричная система, совокупность точек у(х) задается векторами X и Y одинакового размера.
Команда plot служит для построения графиков функций в декартовой системе координат. Эта команда имеет ряд параметров, рассматриваемых ниже.
plot (X, Y) — строит график функции у(х), координаты точек (х, у) которой берутся из векторов одинакового размера Y и X. Если X или Y — матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы.
Приведенный ниже пример иллюстрирует построение графиков двух функций — sin(x) и cos(x), значения функции которых содержатся в матрице Y, а значения аргумента х хранятся в векторе X:
На рис. 6.1 показан график функций из этого примера. В данном случае отчетливо видно, что график состоит из отрезков, и если вам нужно, чтобы отображаемая функция имела вид гладкой кривой, необходимо увеличить количество узловых точек. Расположение их может быть произвольным.
Рис. 6.1. Графики двух функций в декартовой системе координат
plot(Y) — строит график у(г), где значения у берутся из вектора Y, a i представляет собой индекс соответствующего элемента. Если Y содержит комплексные элементы, то выполняется команда plot (real (Y). imag(Y)). Во всех других случаях мнимая часть данных игнорируется.
Вот пример использования команды plot(Y):
Соответствующий график показан на рис. 6.2.
Рис. 6.2. График функции, представляющей вектор Y с комплексными элементами
plot(X.Y.S) — аналогична команде plot(X.Y), но тип линии графика можно задавать с помощью строковой константы S.
Значениями константы S могут быть следующие символы.