plot::Surface

Параметрические поверхности в 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(u,v)y(u,v)z(u,v))|u[umin,umax ],v[vmin,vmax ]}3

Выражения/функции xYZ может иметь сингулярность в области значений графика. Несмотря на то, что эвристика используется, чтобы найти разумную область значений просмотра, когда сингулярность присутствует, она настоятельно рекомендована, чтобы задать поле просмотра через атрибут ViewingBox = [xmin..xmax, ymin..ymax, zmin..zmax] с подходящими числовыми действительными значениями xmin,…,zmax. Смотрите пример 3.

Анимации инициированы путем указания диапазона a = amin..amax для параметра a это отличается от поверхностных параметров uV. Смотрите пример 5.

Функции xYZ оценены на регулярной равноотстоящей 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]
FillColorDirectionXx-компонент направления цветовых переходов на поверхностях0
FillColorDirectionYy-компонент направления цветовых переходов на поверхностях0
FillColorDirectionZz-компонент направления цветовых переходов на поверхностях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]
LineColorDirectionXx-компонент направления цветовых переходов на линиях0
LineColorDirectionYy-компонент направления цветовых переходов на линиях0
LineColorDirectionZz-компонент направления цветовых переходов на линиях1
Meshколичество точек выборки[25, 25]
MeshVisibleвидимость неправильных линий mesh в 3DFALSE
Nameимя объекта графика (для браузера и легенды) 
ParameterEndзакончите значение параметра анимации 
ParameterNameимя параметра анимации 
ParameterBeginначальное значение параметра анимации 
ParameterRangeобласть значений параметра анимации 
PointSizeразмер точек1.5
PointStyleстиль презентации точекFilledCircles
PointsVisibleвидимость точек meshFALSE
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 значений 

Примеры

Пример 1

Используя стандартные сферические координаты, параметризацию сферы радиуса 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:

Пример 2

Параметризация может также быть задана 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:

Пример 3

Мы строим поверхность с сингулярностью:

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:

Пример 4

Путем представления недействительных функциональных оценок мы можем построить поверхности с отверстиями:

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)

Пример 5

Мы генерируем анимацию поверхности вращения. График функции вращается вокруг 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:

Пример 6

Стандартная 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:

Пример 7

По умолчанию линии параметра параметрической поверхности “включаются”:

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)):

Пример 8

Бутылка Клейна является поверхностью без ориентации. Нет никакой “внутренней части” и никакой “внешней стороны” следующего объекта:

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:

Пример 9

Наконец мы создаем анимированную объемную поверхностную диаграмму того, где 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
  )
)

Параметры

xYZ

Координатные функции: арифметические выражения или piecewise объекты в зависимости от поверхностных параметров u, v и параметр анимации a. В качестве альтернативы процедуры, которые принимают 2 входных параметра u, v или 3 входных параметра u, v, a и возвращают численное значение, когда входные параметры являются числовыми.

xYZ эквивалентны атрибутам XFunctionYFunction ZFunction .

xyz

Параметризация: процедура, которая принимает 2 входных параметра u, v или 3 входных параметра u, v, a и возвращает список 3 численных значений [x, y, z].

A

Матрица A категории Cat::Matrix с тремя записями, которые предоставляют параметризации xYZ

u

Первый поверхностный параметр: идентификатор или индексируемый идентификатор.

u эквивалентно атрибуту UName.

umin .. umax

Область значений графика для параметра u: umin, umax должны быть числовые действительные значения или выражения параметра анимации a.

umin .. umax эквивалентно атрибутам URange, UMin, UMax.

v

Второй поверхностный параметр: идентификатор или индексируемый идентификатор.

v эквивалентно атрибуту VName.

vmin .. vmax

Область значений графика для параметра v: vmin, vmax должны быть числовые действительные значения или выражения параметра анимации a.

vmin .. vmax эквивалентно атрибутам VRange, VMin, VMax.

a

Параметр анимации, заданный как a = amin..amax, где amin начальное значение параметров и amax итоговое значение параметров.

Смотрите также

Функции MuPAD

MuPAD графические примитивы