график::Поверхности в 3D, параметризованном в сферических координатах
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
plot::Spherical([r, ϕ, θ], u = umin .. umax, v = vmin .. vmax, <a = amin .. amax>, options)
plot::Spherical создает поверхности, параметризованные в сферических координатах.
Поверхность, данная отображением (“параметризация”)
, является набором всех точек изображений
в сферических координатах, которые переводят в обычные “Декартовы” координаты как
r упоминается как “радиус”, ϕ как “азимутальный угол”, и θ известен как “угол в полярных координатах”.
Функции r, ϕ, θ оценен на регулярной равноотстоящей mesh точек выборки в u-v плоскость. Эта mesh определяется атрибутами UMesh, VMesh. По умолчанию атрибут, AdaptiveMesh = 0 установлен, т.е. никакое адаптивное улучшение равноотстоящей mesh, используется.
Если стандартная mesh не достаточна, чтобы произвести достаточно подробный график, можно или увеличить значение UMesh, VMesh или USubmesh, VSubmesh, или установить AdaptiveMesh = n с некоторым (маленьким) положительным целочисленным n. При необходимости до 2n - 1 дополнительная точка помещается в каждое направление u-v плоскость между смежными точками начальной равноотстоящей mesh. Cf. Пример 3.
“Координатные строки” (“строки параметра”) являются кривыми на поверхности.
Фраза “ULines” отсылает к кривым (r (u, v 0), ϕ (u, v 0), θ (u, v 0)) с параметром u, запускающийся от umin до umax, в то время как v 0 является некоторым фиксированным значением от интервала [vmin, vmax].
Фраза “VLines” отсылает к кривым (r (u 0, v), ϕ (u 0, v), θ (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 строки видимы. Cf. Пример 3.
Используйте Filled = FALSE, чтобы получить каркасное представление поверхности.
Если выражение/функция, r содержит особенности, он рекомендуется (но не строго необходимый), чтобы использовать атрибут ViewingBox, чтобы установить подходящее поле просмотра. Никакие такие меры предосторожности не необходимы для ϕ и θ, несмотря на то, что особенности в этих функциях могут привести к плохо представленным поверхностям – во многих случаях установка атрибутов, Mesh и/или AdaptiveMesh к более высоким значениям помогут. Cf. Пример 6.
| Атрибут | Цель | Значение по умолчанию |
|---|---|---|
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 |
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 значений |
Сферические координаты получают свое имя от того, что, с постоянным радиусом, параметризовать сферу:
plot(plot::Spherical([1, u, v], u = 0..2*PI, v = 0..PI))

plot(plot::Spherical([1, u, v], u = 0..PI, v = 0..2*PI))

Следующий график демонстрирует, что сферические графики могут показать сингулярные поверхностные функции даже с дифференцируемой параметризацией; в этом случае оправа в середине является на самом деле границей и лево-и правой части:
plot(plot::Spherical(
[(phi^2*thet), phi, thet^2],
phi = -PI..PI, thet=0..0.25*PI,
Mesh = [40,40], Submesh=[3,0],
Color = [0.9$3], FillColorType=Flat, LineColor=[0.8$3]),
Axes = None, CameraDirection = [1, 0, 0])
Для колеблющейся параметризации или других поверхностей с мелкими деталями, mesh по умолчанию может быть слишком крупной. Как указано выше три атрибута Mesh, Submesh и AdaptiveMesh могут использоваться для улучшения графиков этих объектов.
Во-первых, обратите внимание, что следующий график не представляется с достаточным разрешением:
surf := plot::Spherical([4+sin(5*(u+v)), u, v], u = 0..PI, v = 0..2*PI): plot(surf, Axes = None)

Устанавливая Mesh на дважды его значение по умолчанию, мы получаем более сглаженную поверхность с дополнительными строками параметра:
surf::Mesh := [50, 50]: plot(surf, Axes = None)

Почти тот же эффект, но без дополнительных строк параметра, может быть достигнут установкой Submesh = [1, 1]:
delete surf::Mesh: surf::Submesh := [1, 1]: plot(surf, Axes = None)

Также возможно использовать адаптивное улучшение mesh в областях, где соседние закрашенные фигуры имеют угол больше чем 10 градусов. В то время как эта опция в основном полезна для поверхностей, которые требуют улучшения только в некоторых частях, это, конечно, выполнимо с графиком как это, также (но увеличивающийся Submesh быстрее):
delete surf::Submesh: surf::AdaptiveMesh := 2: plot(surf, Axes = None)

Функция радиуса r может также взять отрицательные величины. С функциями радиуса изменения знака часто самопересекаются сферические поверхности:
plot(plot::Spherical(
[sin(phi^2*thet), phi, thet],
phi = -PI..PI, thet = 0..0.5*PI,
Mesh = [40, 20], Submesh=[0, 3]))
Угловые функции (ϕ и θ) не ограничиваются в значении:
plot(plot::Spherical([r, r, thet], r = 0..9, thet = -PI..PI,
Mesh = [60, 60], Filled = FALSE),
Axes = None,
plot::Camera([100, 100, 50], [0,0,0], 0.1))
Обратите внимание на то, что мы использовали явный объект plot::Camera здесь, потому что автоматическая камера всегда помещается таким образом, что весь объект видим, даже когда с помощью CameraDirection. Чтобы получить “более близкий” взгляд, используйте интерактивные возможности манипуляции или явную камеру.
Особенности в функции радиуса эвристическим образом обработаны:
plot(plot::Spherical([1/(u + v), u, v], u = 0..PI, v = 0..PI))

Однако эвристика перестала работать для некоторых примеров:
plot(plot::Spherical([1/(u + v)^2, u, v], u = 0..PI, v = 0..PI))

В случаях как это мы рекомендуем установить поле просмотра явным образом с атрибутом ViewingBox:
plot(plot::Spherical([1/(u + v)^2, u, v], u = 0..PI, v = 0..PI),
ViewingBox = [-1/10..0.7, 0..1/4, -0.2..0.3])
Путем устанавливания одного из параметра располагается к вырожденному интервалу, возможно чертить кривые на сферической поверхности:
f := (u, v) -> [1 + u/10, u, v]:
surface := plot::Spherical(f(u,v), u = 0..2, v = 0..2,
FillColor = RGB::Grey, FillColorType = Flat):
curve := plot::Spherical(f((1 + sin(u)), (1 + sin(2*u))),
u = 0..2*PI, v = 0..0, Mesh = [200, 1],
LineColor = RGB::Red, LineWidth = 1):
plot(surface, curve)
В то время как преобразование от сферического до Декартовых координат не является обратимым, существует по крайней мере два способа выразить каждую Декартову точку в сферических координатах, и любая поверхность, parameterizable в Декартовых координатах, может также быть построена с помощью plot::Spherical:
trans := linalg::ogCoordTab[Spherical, InverseTransformation]: spher := trans(x, y, sin(x^2+y^2))

plot(plot::Spherical(spher, x = -2..2, y = -2..2))

Наконец, что не менее важно, мы можем также произвести анимации с помощью plot::Spherical. Следующее показывает деформацию от общего сферического объекта до сферы. Мы использовали параметр анимации a в аргументе для синусоидальной функции, чтобы получить небольшое вращение во время процесса деформации:
plot( plot::Spherical( [1+a*sin(3*Phi+a)*sin(2*Theta),Phi,Theta], Theta=0..PI, Phi=0..2*PI, a=5..0 ) )

|
Координатные функции: арифметические выражения или
|
|
Первый поверхностный параметр: идентификатор или индексируемый идентификатор.
|
|
Область значений графика для параметра u: |
|
Второй поверхностный параметр: идентификатор или индексируемый идентификатор.
|
|
Область значений графика для параметра v: |
|
Параметр анимации, заданный как |