0 / 0 / 0
Регистрация: 22.01.2018
Сообщений: 123
1

Поворот плоскости до совмещения с координатной

14.04.2018, 09:15. Показов 790. Ответов 1
Метки нет (Все метки)

Здравствуйте! У меня на плоскости, определенной уравнением А*х+В* у+С*z+D=0 задана фигура точками х,у,z. Я хочу перейти от трех координат к двум и померить размеры фигуры. Думала просто повернуть плоскость до совмещения с координатной, например убрать z (c XOY тоесть). У меня что-то не получается, толи с геометрией у меня плохо, толи с функциями матлаб не разберусь.
Пробовала так
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%%углы, которые образует плоскость сечения с координатными плоскостями
cosPlZ=C/sqrt(A^2+B^2+C^2);
cosPlX=A/sqrt(A^2+B^2+C^2);
cosPlY=B/sqrt(A^2+B^2+C^2);
 
figure
Sech1=plot3(xsech,ysech,zsech,'o');
rotate(Sech1, [0 0 1], acos(cosPlZ)*180/pi);
rotate(Sech1, [0 1 0], acos(cosPlY)*180/pi);
rotate(Sech1, [1 0 0], acos(cosPlX)*180/pi);
xsechNew = get(Sech1, 'XData');  %# Get the rotated x points
ysechNew = get(Sech1, 'YData');  %# Get the rotated y points
zsechNew = get(Sech1, 'ZData');  %# Get the rotated z points
hold on
 plot3(xsech,ysech,zsech,'*');

И так
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
q = angle2quat(acos(cosPlX)*1, acos(cosPlY)*1, acos(cosPlZ),'XYZ');
M=quat2dcm(q);
for k=1:length(xsech)
    Koord0=[xsech(k) ysech(k) zsech(k)];
    Koord1=M*Koord0';
    xsech1(k)=Koord1(1); ysech1(k)=Koord1(2); zsech1(k)=Koord1(3);
end;
figure
plot3(xsech,ysech,zsech,'o');
hold on
plot3(xsech1,ysech1,zsech1,'*');
 xlabel('x');
 ylabel('y');
zlabel('z');

И не получается. Подскажите где ошибка, что не так делаю?
Тут xsech, ysech, zsech - координаты точек сечения объемной фигуры плоскостью, заданной выше.
Извините, не знаю как код выделить.
Добавлено через 16 минут
Может и проще как-то можно, без поворота...Подскажите, кто знает.
Вот так сделала
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
figure
%Sech1=plot3(xsech,ysech,zsech,'o');
Sech1=trisurf(dhkmin,pntmin(:,1),pntmin(:,2),pntmin(:,3));
% rotate(Sech1, [0 0 1], acos(cosPlZ));
rotate(Sech1, [-D/(A*sqrt(D^2/A^2+D^2/B^2)) D/(B*sqrt(D^2/A^2+D^2/B^2)) 0], acos(cosPlZ)*180/pi);
 xsechNew = get(Sech1, 'XData');  %# Get the rotated x points
 ysechNew = get(Sech1, 'YData');  %# Get the rotated y points
 zsechNew = get(Sech1, 'ZData');  %# Get the rotated z points
 
hold on
 %plot3(xsech,ysech,zsech,'*');
 Sech1=trisurf(dhkmin,pntmin(:,1),pntmin(:,2),pntmin(:,3));

По трем точкам из плоскости попробовала повернуть. Получается новая плоскость, параллельная ХОУ, но есть остаточное z, одинаковое у трех точек. Откуда не пойму? Вроде в качестве направления вращения задала прямую пересечения плоскостей и поворот на угол между ними.

У меня
pntmin =
-0.0201 -0.0001 0.0190
0.0527 -0.0197 -0.1100
0.0229 0.0328 -0.0485
A =0.0056
B =-6.3616e-004
C =0.0032
D = 5.0500e-005
dhkmin = 1 2 3
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2018, 09:15
Ответы с готовыми решениями:

Нужно изобразить на координатной прямой или на координатной плоскости множества истинности следующего предиката
Помогите пожалуйста Добавлено через 1 минуту (\sin x>0)\sim (\cos x<\pi /2)

Написать уравнение плоскости, проходящей через точку М(1,1,1) и параллельной координатной плоскости XOY
помогите решить

Поворот плоскости (P1,P2,P3) параллельно плоскости XOY
Задана плоскость P1,P2,P3 в декартовой системе координат, нужно повернуть ее параллельно плоскости...

Синусоиды на 1 координатной плоскости
написать программу для синусоиды: y=2sinx y=sin2x y = sin(x+2) y= sinx +2 чтобы эти графики...

1
0 / 0 / 0
Регистрация: 22.01.2018
Сообщений: 123
18.04.2018, 13:04  [ТС] 2
z не нулевое - ничего страшного, параметры сечения померить можно.
Но вот если попробовать повернуть назад, как было, заменив знак у угла поворота
Matlab M
1
rotate(Sech1, [-D/(A*sqrt(D^2/A^2+D^2/B^2)) D/(B*sqrt(D^2/A^2+D^2/B^2)) 0], acos(cosPlZ)*180/pi);
,то получается не исходное сечение, а параллельное ему.
Вот это засада!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2018, 13:04

Радиус на координатной плоскости
не знаю как сделать расчёт "зашёл объект в радиус действия другова объекта" насколько понял понял...

Шкала на координатной плоскости
Как на координатных осях OY и OX изобразить шкалу(Например от 1 до 50Бчтобы цена деления была 2)...

Четверти на координатной плоскости
Вводятся координаты точки на плоскости (X и Y, вещественные числа). Вывести номер координатной...

Движение на координатной плоскости
допустим я знаю чему равен косинус от 0 до 180 (я просто таблицу в объект перефаршировал) вот код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.