поверхность графика
Параметрические поверхности в 3D
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
plot::Surface([x, y, z]
,u = umin .. umax
,v = vmin .. vmax
, <a = amin .. amax
>,options
) plot::Surface(xyz
,u = umin .. umax
,v = vmin .. vmax
, <a = amin .. amax
>,options
) plot::Surface(A
,u = umin .. umax
,v = vmin .. vmax
, <a = amin .. amax
>,options
)
plot::Surface
создает параметрическую поверхность в 3D.
Поверхность, данная отображением (“параметризация”), является набором всех точек изображений
Выражения/функции x
, y
, z
может иметь особенности в области значений графика. Несмотря на то, что эвристика используется, чтобы найти разумную область значений просмотра, когда особенности присутствуют, она настоятельно рекомендована, чтобы задать поле просмотра через атрибут ViewingBox = [xmin..xmax, ymin..ymax, zmin..zmax]
с подходящими числовыми действительными значениями xmin,…,zmax
. Смотрите Пример 3.
Анимации инициированы путем определения области значений a = amin..amax
для параметра a
, который отличается от поверхностных параметров u
, v
. Смотрите Пример 5.
Функции x
, y
, z
оценен на регулярной равноотстоящей mesh точек выборки в u-v плоскость. Эта mesh определяется атрибутами UMesh
, VMesh
. По умолчанию атрибут, AdaptiveMesh = 0
установлен, т.е. никакое адаптивное улучшение равноотстоящей mesh, используется.
Если стандартная mesh не достаточна, чтобы произвести достаточно подробный график, можно или увеличить значение UMesh
, VMesh
или USubmesh
, VSubmesh
, или установить AdaptiveMesh = n
с некоторым (маленьким) положительным целочисленным n
. При необходимости до 2n - 1 дополнительная точка помещается в каждое направление u-v плоскость между смежными точками начальной равноотстоящей mesh. Смотрите Пример 6.
“Координатные строки” (“строки параметра”) являются кривыми на поверхности.
Фраза “ULines
” отсылает к кривым (x (u, v 0), y (u, v 0), z (u, v 0)) с параметром u, запускающийся от umin
до umax
, в то время как v 0 является некоторым фиксированным значением от интервала [vmin, vmax]
.
Фраза “VLines
” отсылает к кривым (x (u 0, v), y (u 0, v), z (u 0, v)) с параметром v, запускающийся от vmin
до vmax
, в то время как u 0 является некоторым фиксированным значением от интервала [umin, umax]
.
По умолчанию кривые параметра видимы. Они могут быть “выключены” путем определения ULinesVisible = FALSE
и VLinesVisible = FALSE
, соответственно.
Координатные строки, которыми управляет ULinesVisible = TRUE/FALSE
и VLinesVisible = TRUE/FALSE
, указывают на равноотстоящую mesh в u-v плоский набор через UMesh
, атрибуты VMesh
. Если mesh усовершенствована USubmesh
, атрибутами VSubmesh
, или адаптивным механизмом, которым управляет AdaptiveMesh = n
, никакие дополнительные линии параметра не проведены.
Насколько числовое приближение поверхности затронуто, настройки UMesh = nu
, VMesh = nv
, USubmesh = mu
, VSubmesh = mv
и UMesh = (nu - 1) (mu + 1) + 1
, VMesh = (nv - 1) (mv + 1) + 1
, USubmesh = 0
, VSubmesh = 0
эквивалентен. Однако в первой установке, строки параметра nu
видимы в направлении u, в то время как в последнем параметре установки (nu - 1) (mu + 1) + 1
строки видимы. Смотрите Пример 7.
Используйте Filled = FALSE
, чтобы представить поверхность как каркас.
Атрибут | Цель | Значение по умолчанию |
---|---|---|
AdaptiveMesh | адаптивная выборка | 0 |
AffectViewingBox | влияние объектов на ViewingBox сцены | TRUE |
Color | основной цвет | RGB::Red |
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 |
Legend | делает запись легенды | |
LegendText | короткий объяснительный текст для легенды | |
LegendEntry | добавить этот объект в легенду? | TRUE |
LineColor | цвет строк | RGB::Black.[0.25] |
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 | количество точек выборки | [25, 25] |
MeshVisible | видимость неправильных строк mesh в 3D | FALSE |
Name | имя объекта графика (для браузера и легенды) | |
ParameterEnd | закончите значение параметра анимации | |
ParameterName | имя параметра анимации | |
ParameterBegin | начальное значение параметра анимации | |
ParameterRange | область значений параметра анимации | |
PointSize | размер точек | 1.5 |
PointStyle | стиль презентации точек | FilledCircles |
PointsVisible | видимость точек mesh | FALSE |
Shading | сглаживайте цветное смешение поверхностей | Smooth |
Submesh | плотность подmesh (дополнительные точки выборки) | [0, 0] |
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 компонент | |
ULinesVisible | видимость строк параметра (u строки) | TRUE |
UMax | окончательное значение параметра “u” | |
UMesh | количество точек выборки для параметра “u” | 25 |
UMin | начальное значение параметра “u” | |
UName | имя параметра “u” | |
URange | область значений параметра “u” | |
USubmesh | плотность дополнительных точек выборки для параметра “u” | 0 |
VLinesVisible | видимость строк параметра (v строки) | TRUE |
VMax | окончательное значение параметра “v” | |
VMesh | количество точек выборки для параметра “v” | 25 |
VMin | начальное значение параметра “v” | |
VName | имя параметра “v” | |
VRange | область значений параметра “v” | |
VSubmesh | плотность дополнительных точек выборки для параметра “v” | 0 |
Visible | видимость | TRUE |
VisibleAfter | объект, видимый после этой временной стоимости | |
VisibleBefore | объект, видимый до этой временной стоимости | |
VisibleFromTo | объект, видимый в это время, располагается | |
VisibleAfterEnd | объект, видимый после его законченного времени анимации? | TRUE |
VisibleBeforeBegin | объект, видимый перед его временем анимации, запускается? | TRUE |
XContours | линии контура в постоянных x значениях | [] |
XFunction | функция для x значений | |
YContours | линии контура в постоянных y значениях | [] |
YFunction | функция для y значений | |
ZContours | линии контура в постоянных z значениях | [] |
ZFunction | функция для z значений |
Используя стандартные сферические координаты, параметризацию сферы радиуса r углом азимута u ∈ [0, 2 π] и угол в полярных координатах v ∈ [0, π] дают:
x := r*cos(u)*sin(v): y := r*sin(u)*sin(v): z := r*cos(v):
Мы фиксируем r = 1 и создаем объект подложки:
r := 1: s := plot::Surface([x, y, z], u = 0 .. 2*PI, v = 0 .. PI)
Мы вызываем plot
, чтобы построить поверхность:
plot(s, Scaling = Constrained):
delete x, y, z, r, s:
Параметризация может также быть задана объектами piecewise
или процедурами:
x := u*cos(v): y := piecewise([u <= 1, u*sin(v)], [u >= 1, u^2*sin(v)]): z := proc(u, v) begin if u <= 1 then 0 else cos(4*v) end_if: end_proc: plot(plot::Surface([x, y, z], u = 0 .. sqrt(2), v = 0 .. 2*PI)):
Мы позволяем адаптивной выборке получить более сглаженный графический результат:
plot(plot::Surface([x, y, z], u = 0 .. sqrt(2), v = 0 .. 2*PI), AdaptiveMesh = 3):
delete x, y, z, s, r:
Мы строим поверхность с особенностями:
s := plot::Surface([u*cos(v), u*sin(v), 1/u^2], u = 0 .. 1, v = 0 .. 2*PI): plot(s):
Мы задаем явную область значений просмотра для координаты z:
plot(s, ViewingBox = [Automatic, Automatic, 0 .. 10]):
delete s:
Путем представления недействительных функциональных оценок мы можем построить поверхности с дырами:
chi := piecewise([sin(4*u) < cos(3*v)+0.5, 1]): plot(plot::Surface([cos(u)*sin(v), sin(u)*sin(v), chi*cos(v)], u = 0 .. 2*PI, v = 0 .. PI, AdaptiveMesh=2), Scaling = Constrained)
Мы генерируем анимацию поверхности вращения. График функции вращается вокруг x - ось:
f := u -> 1/(1 + u^2): plot(plot::Surface([u, f(u)*sin(v), f(u)*cos(v)], u = -2 .. 2, v = 0 .. a*2*PI, a = 0 .. 1)):
Смотрите plot::XRotate
, plot::ZRotate
для альтернативного способа создать поверхности вращения.
delete f:
Стандартная mesh для численной оценки поверхности не достаточна, чтобы сгенерировать удовлетворяющий график в следующем случае:
r := 2 + sin(7*u + 5*v): x := r*cos(u)*sin(v): y := r*sin(u)*sin(v): z:= r*cos(v): plot(plot::Surface([x, y, z], u = 0 .. 2*PI, v = 0 .. PI)):
Мы увеличиваем число точек mesh. Здесь, мы используем USubmesh
, VSubmesh
, чтобы поместить 2 дополнительных точки в каждое направление между каждой парой соседних точек mesh по умолчанию. Это увеличивает время выполнения для вычисления графика фактора 9:
plot(plot::Surface([x, y, z], u = 0 .. 2*PI, v = 0 .. PI, USubmesh = 2, VSubmesh = 2)):
Также мы включаем адаптивную выборку путем устанавливания значения AdaptiveMesh
к некоторому положительному значению:
plot(plot::Surface([x, y, z], u = 0 .. 2*PI, v = 0 .. PI, AdaptiveMesh = 2)):
delete r, x, y, z:
По умолчанию строки параметра параметрической поверхности “включаются”:
x := r*cos(phi): y := r*sin(phi): z := r^2: plot(plot::Surface([x, y, z], r = 1/3 .. 1, phi = 0 .. 2*PI)):
Строки параметра “выключены”:
plot(plot::Surface([x, y, z], r = 1/3 .. 1, phi = 0 .. 2*PI, ULinesVisible = FALSE, VLinesVisible = FALSE)):
Количество строк параметра определяется атрибутами UMesh
и VMesh
:
plot(plot::Surface([x, y, z], r = 1/3 .. 1, phi = 0 .. 2*PI, UMesh = 5, VMesh = 12)):
Когда mesh усовершенствована через атрибуты USubmesh
, VSubmesh
, числовое приближение поверхности становится более сглаженным. Однако число строк параметра определяется значениями UMesh
, VMesh
и не увеличено:
plot(plot::Surface([x, y, z], r = 1/3 .. 1, phi = 0 .. 2*PI, UMesh = 5, VMesh = 12, USubmesh = 1, VSubmesh = 2)):
Бутылка Клейна является поверхностью без ориентации. Нет никакой “внутренней части” и никакой “внешней стороны” следующего объекта:
bx := u -> -6*cos(u)*(1 + sin(u)): by := u -> -14*sin(u): r := u -> 4 - 2*cos(u): x := (u, v) -> piecewise([u <= PI, bx(u) - r(u)*cos(u)*cos(v)], [PI < u, bx(u) + r(u)*cos(v)]): y := (u, v) -> r(u)*sin(v): z := (u, v) -> piecewise([u <= PI, by(u) - r(u)*sin(u)*cos(v)], [PI < u, by(u)]): KleinBottle:= plot::Surface( [x, y, z], u = 0 .. 2*PI, v = 0 .. 2*PI, Mesh = [35, 31], LineColor = RGB::Black.[0.2], FillColorFunction = RGB::MuPADGold): plot(KleinBottle, Axes = None, Scaling = Constrained, Width = 60*unit::mm, Height = 72*unit::mm, BackgroundStyle = Pyramid):
delete bx, by, r, x, y, z, KleinBottle:
Наконец мы создаем анимированную объемную поверхностную диаграмму того, где a является параметром анимации:
plot( plot::Surface( [sin(u),sin(v),a*sin(u+v)], u=0..2*PI, v=0..2*PI, a=1..0, AnimationStyle = BackAndForth ) )
|
Координатные функции: арифметические выражения или
|
|
Параметризация: процедура, которая принимает 2 входных параметра u, v или 3 входных параметра u, v, a и возвращает список 3 численных значений [x, y, z]. |
|
Матрица категории |
|
Первый поверхностный параметр: идентификатор или индексируемый идентификатор.
|
|
Область значений графика для параметра u: |
|
Второй поверхностный параметр: идентификатор или индексируемый идентификатор.
|
|
Область значений графика для параметра v: |
|
Параметр анимации, заданный как |