plot
::Implicit3d
Очертите поверхности функции от 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)
|
Выражение с действительным знаком или уравнение в
|
| |
|
Выражения с действительным знаком, возможно в параметре анимации. Изображение построено с
|
|
Параметр анимации, заданный как |