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: