Axis
, AxisX
, AxisY
, AxisZ
Ось вращения
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
Объекты | Значения по умолчанию |
---|---|
plot::Rotate3d |
|
Axis
является вектором, определяющим направление оси вращения в объектах вращения типа plot::Rotate3d
. Это дано списком 3 компонентов.
AxisX
и т.д. относится к x, y, компонентам z этого вектора.
Вращение в 3D определяется строкой, вокруг которой вращается. Строка дана точкой на строке (Center
) и вектор направления (Axis
). Угол поворота дан атрибутом Angle
.
Длина вектора Axis
не имеет уместности. Однако это не должен быть нуль.
Вращение реализовано после “правила правой руки”: Расширьте ползунок правой руки и изогните пальцы. Когда точки ползунка в направление оси вращения, ваши кончики пальцев указывают на направление вращения. Используйте отрицательные углы, чтобы вращаться в противоположном направлении или заменить вектор Axis
его отрицанием.
Конус сначала вращается вокруг x - ось. Вращаемый конус затем вращается вокруг z - ось:
c0 := plot::Cone(1, [0, 0, 1], [0, 0, 2]): c1 := plot::Rotate3d(c0, Center = [0, 0, 0], Axis = [1, 0, 0], Angle = PI/2): c2 := plot::Rotate3d(c1, Center = [0, 0, 0], Axis = [0, 0, 1], Angle = PI/2): plot(plot::Scene3d(c0, Axes = Origin, ViewingBox = [-2..2, -2..2, -2..2]), plot::Scene3d(c1, Axes = Origin, ViewingBox = [-2..2, -2..2, -2..2]), plot::Scene3d(c2, Axes = Origin, ViewingBox = [-2..2, -2..2, -2..2]), TicksNumber = None, Width = 120*unit::mm, Height = 40*unit::mm, Layout = Horizontal):
delete c0, c1, c2:
Мы иллюстрируем “правило правой руки”. Вращается маленькое поле b0
. Вращаемые копии b1
, b2
, b3
построен вместе с исходным полем:
center := [1, 4, 1]: axis := [0, 0, 1]: b0 := plot::Box(0.9..1.1, 2.9 .. 3.1, 0.9 .. 1.1): b1 := plot::Rotate3d(b0, Center = center, Axis = axis, Angle = PI/8): b2 := plot::Rotate3d(b1, Center = center, Axis = axis, Angle = PI/8): b3 := plot::Rotate3d(b2, Center = center, Axis = axis, Angle = PI/8): centerplusaxis := [center[i] + axis[i] $ i = 1..3]: plot(b0, b1, b2, b3, plot::Arrow3d([0, 0, 0], center, Color = RGB::Black, Title = "Center", TitlePosition = [0.1, 2, 0.5]), plot::Arrow3d(center, centerplusaxis, Title = "Axis", Color = RGB::Red, TitlePosition = [0.7, 4, 1.5]), plot::Circle3d(1, center, axis), plot::Rotate3d(plot::Arrow3d([0, 4, 1], [0, 3.9, 1], Color = RGB::Blue), Axis = axis, Center = center, Angle = 0.43*PI + a*2*PI/3) $ a = 1..3, Axes = Origin ):
delete center, axis, b0, b1, b2, b3, centerplusaxis: