Я делаю квадрат вокруг / ниже заданной точки с заданной шириной (w) и длиной (l), как показано ниже
Но теперь я должен определить направление точки (или, так сказать, курс). Я хочу создать прямоугольник, направленный в этом направлении, как показано ниже. Я никогда раньше не работал с заголовками, если кто-нибудь может указать мне правильные направления, это было бы полезно.
----------------- EDIT ---------------
Спасибо @MBo & @HansHirse, я реализовал, как предложили ваши люди. для простоты я выбрал точку на верхней линии прямоугольника, а не на удалении от прямоугольника. мой код, как показано ниже:
% Point coordinates
P = [5; 5];
% Direction vector
d = [1; -5];
%normalizing
Len = sqrt(d(1)*d(1)+d(2)*d(2));
cs = d(1)/Len;
sn = d(2)/Len;
% Dimensions of rectangle
l = 200;
w = 100;
% Original corner points of rectangle
x1 = P(1) -w/2;
y1 = P(2);
x2 = P(1)+ w/2;
y2 = P(2);
x3 = P(1)+ w/2;
y3 = P(2) - l;
x4 = P(1) -w/2;
y4 = P(2) - l;
rect = [x1 x2 x3 x4; y1 y2 y3 y4];
%rotated rectangles coordinates:
x1_new = P(1)+ (x1 - P(1))* cs - (y1 - P(2))*sn;
y1_new = P(2) +(x1-P(1))*sn + (y1-P(2))*cs;
x2_new = P(1)+ (x2 - P(1))* cs - (y2 - P(2))*sn;
y2_new = P(2) +(x2-P(1))*sn + (y2-P(2))*cs;
x3_new = P(1)+ (x3 - P(1))* cs - (y3 - P(2))*sn;
y3_new = P(2) +(x3-P(1))*sn + (y3-P(2))*cs;
x4_new = P(1)+ (x4 - P(1))* cs - (y4 - P(2))*sn;
y4_new = P(2) +(x4-P(1))*sn + (y4-P(2))*cs;
new_rect = [x1_new x2_new x3_new x4_new; y1_new y2_new y3_new y4_new];
%plot:
figure(1);
plot(P(1), P(2), 'k.', 'MarkerSize', 21);
hold on;
plot([P(1) P(1)+d(1)*10], [P(2) P(2)+d(2)*10], 'b');
patch(new_rect(1,:),new_rect(2,:), 'b', 'FaceAlpha', 0.2);
patch(rect(1,:),rect(2,:),'b')
hold off
То, как он вращается, не то, что я хотел: я не могу загрузить картинку, imgur ведет себя странно. Вы можете запустить точный код, вы получите вывод, который я получаю.