поверхность графика

Параметрические поверхности в 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

Выражения/функции 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]
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
  )
)

Параметры

x, y, z

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

x, y, z эквивалентен атрибутам XFunction, YFunction, ZFunction.

xyz

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

A

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

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 графические примитивы