график::
Поверхности в 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: |
|
Параметр анимации, заданный как |