график::
Очертите поверхности функции от R^3 до R
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
plot::Implicit3d(f
, x = xmin .. xmax
, y = ymin .. ymax
, z = zmin .. zmax
, <a = amin .. amax
>, options
)
plot::Implicit3d(f(x, y, z), x = xmin..xmax , y = ymin..ymax , z = zmin..zmax )
строит поверхности, где сглаженный функциональный f
является нулем.
plot::Implicit3d(f, x = xmin..xmax , y = ymin..ymax , z = zmin..zmax )
строит (двумерная часть) обнуляет f в данной области значений, т.е. набора.
plot::Implicit3d
принимает, что f является регулярным почти везде на этой поверхности, что означает, что f должен быть дифференцируемым, и по крайней мере две из его частных производных должны быть ненулевыми.
plot::Implicit3d
оценивает заданную функцию на равноотстоящей, 3D mesh, coarsity которой может быть установлен с атрибутами XMesh
, YMesh
и ZMesh
для каждого из этих трех направлений, или с объединяющимся атрибутом Mesh
, который устанавливает все три из них одновременно.
После нахождения начальной триангуляции поверхности от числовых данных по начальной сетке plot::Implicit3d
опционально выполняет адаптивное подразделение треугольников. Короче говоря: Если начальное вычисление пропустит детали в целом, адаптивное улучшение не найдет их также. С другой стороны, если начальное вычисление покажет побочные скачки, адаптивное улучшение приведет к намного более реалистическому изображению, за счет времени; чем выше значение AdaptiveMesh
, тем больше. Увеличение AdaptiveMesh
к первому мая в крайних случаях увеличивает время вычисления фактором восемь или больше!
Детали алгоритма следующие: На верхнем уровне “эффективный адаптивный уровень” установлен в значение атрибута AdaptiveMesh
. Если для данного ребра эффективный адаптивный уровень положителен, и ребро уже не очень коротко, по сравнению с размером полного образа, и вставка новой точки на неявной поверхности около середины этого ребра заставила бы два новых ребра иметь угол меньше чем 170 градусов, то ребро разделено, смежные треугольники разделены соответственно (учитывающий все их ребра), и все новые ребра, вызванные этой операцией, исследованы с эффективным адаптивным уровнем, сниженным одним.
Построить другие контуры, чем обнуляет, используйте опцию Contours
.
Атрибут | Цель | Значение по умолчанию |
---|---|---|
AdaptiveMesh | адаптивная выборка | 0 |
AffectViewingBox | влияние объектов на ViewingBox сцены | TRUE |
Color | основной цвет | RGB::Red |
Contours | контуры неявной функции | [0] |
Filled | заполненные или прозрачные области и поверхности | TRUE |
FillColor | цвет областей и поверхностей | RGB::Red |
FillColor2 | второй цвет областей и поверхностей для цветных смешений | RGB::CornflowerBlue |
FillColorType | типы заполнения поверхности | Dichromatic |
FillColorFunction | функциональная область / поверхностная окраска | |
FillColorDirection | направление цветовых переходов на поверхностях | [0, 0, 1] |
FillColorDirectionX | x-компонент направления цветовых переходов на поверхностях | 0 |
FillColorDirectionY | y-компонент направления цветовых переходов на поверхностях | 0 |
FillColorDirectionZ | z-компонент направления цветовых переходов на поверхностях | 1 |
Frames | количество кадров в анимации | 50 |
Function | выражение function или процедура | |
Legend | делает запись легенды | |
LegendText | короткий объяснительный текст для легенды | |
LegendEntry | добавить этот объект в легенду? | TRUE |
LineColor | цвет строк | RGB::Black.[0.15] |
LineWidth | ширина строк | 0.35 |
LineColor2 | цвет строк | RGB::DeepPink |
LineStyle | тело, подчеркнутые штриховой линией или пунктирные линии? | Solid |
LineColorType | типы окраски строки | Flat |
LineColorFunction | функциональная окраска строки | |
LineColorDirection | направление цветовых переходов на строках | [0, 0, 1] |
LineColorDirectionX | x-компонент направления цветовых переходов на строках | 0 |
LineColorDirectionY | y-компонент направления цветовых переходов на строках | 0 |
LineColorDirectionZ | z-компонент направления цветовых переходов на строках | 1 |
Mesh | количество точек выборки | [11, 11, 11] |
MeshVisible | видимость неправильных строк mesh в 3D | FALSE |
Name | имя объекта графика (для браузера и легенды) | |
ParameterEnd | закончите значение параметра анимации | |
ParameterName | имя параметра анимации | |
ParameterBegin | начальное значение параметра анимации | |
ParameterRange | область значений параметра анимации | |
PointStyle | стиль презентации точек | FilledCircles |
PointsVisible | видимость точек mesh | FALSE |
Shading | сглаживайте цветное смешение поверхностей | Smooth |
TimeEnd | время окончания анимации | 10.0 |
TimeBegin | время начала анимации | 0.0 |
TimeRange | оперативный промежуток анимации | 0.0 .. 10.0 |
Title | объектный заголовок | |
TitleFont | шрифт объектных заголовков | [" sans-serif " , 11 ] |
TitlePosition | положение объектных заголовков | |
TitleAlignment | выравнивание по горизонтали заголовков w.r.t. их координаты | Center |
TitlePositionX | положение объектных заголовков, x компонент | |
TitlePositionY | положение объектных заголовков, y компонент | |
TitlePositionZ | положение объектных заголовков, z компонент | |
Visible | видимость | TRUE |
VisibleAfter | объект, видимый после этой временной стоимости | |
VisibleBefore | объект, видимый до этой временной стоимости | |
VisibleFromTo | объект, видимый в это время, располагается | |
VisibleAfterEnd | объект, видимый после его законченного времени анимации? | TRUE |
VisibleBeforeBegin | объект, видимый перед его временем анимации, запускается? | TRUE |
XContours | линии контура в постоянных x значениях | [Automatic , 15 ] |
XMax | окончательное значение параметра “x” | |
XMesh | количество точек выборки для параметра “x” | 11 |
XMin | начальное значение параметра “x” | |
XName | имя параметра “x” | |
XRange | область значений параметра “x” | |
YContours | линии контура в постоянных y значениях | [Automatic , 15 ] |
YMax | окончательное значение параметра “y” | |
YMesh | количество точек выборки для параметра “y” | 11 |
YMin | начальное значение параметра “y” | |
YName | имя параметра “y” | |
YRange | область значений параметра “y” | |
ZContours | линии контура в постоянных z значениях | [Automatic , 15 ] |
ZMax | окончательное значение параметра “z” | |
ZMesh | количество точек выборки для параметра “z” | 11 |
ZMin | начальное значение параметра “z” | |
ZName | имя параметра “z” | |
ZRange | область значений параметра “z” |
Набор x, y, z, где x 2 + y 2 + z 2 = 1 формируют сферу:
plot(plot::Implicit3d(x^2 + y^2 + z^2 - 1, x = -1.5..1.5, y = -1.5..1.5, z = -1.5..1.5), Scaling = Constrained)
Набор обнуляет продукта, объединение обнуления отдельных функций:
plot(plot::Implicit3d((x^2 + y^2 + z^2 - 1) * x, x = -1.5..1.5, y = -1.5..1.5, z = -1.5..1.5), Scaling = Constrained)
Обратите внимание на то, что это изображение в основном во власти артефактов, вызванных крупной mesh оценки. Увеличение этой mesh улучшает графику, но увеличивает время вычисления:
plot(plot::Implicit3d((x^2 + y^2 + z^2 - 1) * x, x = -1.5..1.5, y = -1.5..1.5, z = -1.5..1.5, Mesh = [21, 9, 9], AdaptiveMesh = 2), Scaling = Constrained)
С MeshVisible = TRUE
внутренняя триангуляция становится видимой:
plot(plot::Implicit3d(z^2 - sin(z - x^2*y^2) = 0, x = -1 .. 1, y = -1 .. 1, z = 0 .. 1, AdaptiveMesh = 2, MeshVisible = TRUE, LineColor = RGB::Black.[0.25])):
Используя функции, которые не непрерывно дифференцируемы, возможно сгенерировать резкий край в изображениях:
plot(plot::Implicit3d(min(x^2 + y^2 + z^2 - 2, -z), x = -2..2, y = -2..2, z = -1.5..0.5), Axes = None, Scaling = Constrained)
Точно так же, как в предыдущем примере, эти острые углы являются главными источниками артефактов, которые могут потребовать более прекрасной начальной mesh и/или адаптивного улучшения mesh:
im := plot::Implicit3d(min(x^2 + y, y^2 - z), x = -2..2, y = -2..2, z = 0..1): plot(im)
plot(im, AdaptiveMesh = 3)
Анимация объектов plot::Implicit3d
занимает много времени. Это легко и быстро, тем не менее, чтобы добавить анимированный объект камеры:
plot(plot::Implicit3d(sin(x)+sin(y)+sin(z), x=-5..5, y=-5..5, z=-5..5), plot::Camera([42*sin(t),42*cos(t),42*cos(t-sin(t))], [0,0,0], PI/12, t=0..2*PI), AnimationStyle=Loop)
|
Выражение с действительным знаком или уравнение в
|
| |
|
Выражения с действительным знаком, возможно в параметре анимации. Изображение построено с
|
|
Параметр анимации, заданный как |