2009-11-26 37 views
12

Tôi đang làm việc trong MATLAB và tôi bị mắc kẹt trên một vấn đề rất đơn giản: Tôi đã có một đối tượng được xác định bởi vị trí của nó (x,y)theta (một góc, theo độ). Tôi muốn vẽ điểm và thêm một mũi tên, bắt đầu từ điểm và chỉ về hướng được xác định bởi góc. Nó thực sự thậm chí không phải là một mũi tên, bất cứ điều gì đồ họa hiển thị giá trị của góc sẽ làm!Làm cách nào để hiển thị mũi tên được đặt ở một góc cụ thể trong MATLAB?

Dưới đây là một bức tranh thể hiện là điều mà tôi đang cố gắng để vẽ:

loại bỏ liên kết ImageShack chết

Trả lời

13

Chức năng vẽ đồ thị() vẽ đồ thị các mũi tên như thế này. Lấy giá trị theta của bạn và chuyển đổi nó thành (x, y) tọa độ Descartes đại diện cho vectơ bạn muốn vẽ như một mũi tên và sử dụng chúng như các tham số (u, v) để rung động().

theta = pi/9; 
r = 3; % magnitude (length) of arrow to plot 
x = 4; y = 5; 
u = r * cos(theta); % convert polar (theta,r) to cartesian 
v = r * sin(theta); 
h = quiver(x,y,u,v); 
set(gca, 'XLim', [1 10], 'YLim', [1 10]); 

Xem qua tài liệu Matlab trực tuyến để xem các loại lô khác; có rất nhiều, bao gồm một số lô xuyên tâm. Chúng nằm trong phần MATLAB> Chức năng> Đồ họa> Chuyên mục. Làm "doc run" ở dòng lệnh và duyệt xung quanh.

2

Dưới đây là một câu trả lời một phần, tôi hy vọng bạn có thể tìm ra phần còn lại. Tôi đã khởi động trình chỉnh sửa Hình và mở các công cụ đồ thị. Tôi kéo một mũi tên từ bảng màu lên hình của tôi. Sau đó, tôi tạo ra một m-file. Điều này bao gồm dòng:

chú thích (hình 1, 'mũi tên', [0.1489 0,2945], [0,5793 0,6481]);

Vì vậy, cặp tọa độ đầu tiên là điểm bắt đầu của mũi tên. Bạn sẽ phải tìm ra kết thúc nhọn (cặp thứ hai của tọa độ) bằng cách sử dụng một chút lượng giác. Bạn thậm chí có thể có được những vòng cung nhỏ nếu bạn làm một số fiddling hơn xung quanh với các công cụ cốt truyện.

Hãy cho chúng tôi biết nếu trig đánh bại bạn. Ồ, và tôi đã quên âm mưu, nhưng tôi đoán bạn có thể đoán ra điều đó?

7

Nếu bạn muốn thử và làm cho cái gì đó trông giống như hình ảnh mà bạn liên kết đến, đây là một số mã để giúp bạn làm điều đó (LƯU Ý: đầu tiên bạn sẽ phải tải về trình arrow.m bởi Erik Johnson trên MathWorks File Exchange, mà tôi luôn luôn muốn sử dụng để tạo ra các mũi tên của bất kỳ hình dạng và kích thước):

x = 1;       % X coordinate of arrow start 
y = 2;       % Y coordinate of arrow start 
theta = pi/4;     % Angle of arrow, from x-axis 
L = 2;       % Length of arrow 
xEnd = x+L*cos(theta);   % X coordinate of arrow end 
yEnd = y+L*sin(theta);   % Y coordinate of arrow end 
points = linspace(0, theta); % 100 points from 0 to theta 
xCurve = x+(L/2).*cos(points); % X coordinates of curve 
yCurve = y+(L/2).*sin(points); % Y coordinates of curve 
plot(x+[-L L], [y y], '--k'); % Plot dashed line 
hold on;      % Add subsequent plots to the current axes 
axis([x+[-L L] y+[-L L]]);  % Set axis limits 
axis equal;      % Make tick increments of each axis equal 
arrow([x y], [xEnd yEnd]);  % Plot arrow 
plot(xCurve, yCurve, '-k');  % Plot curve 
plot(x, y, 'o', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'w'); % Plot point 

và đây là những gì nó sẽ giống như sau:

enter image description here

Sau đó, bạn có thể thêm văn bản vào ô (cho góc và giá trị tọa độ) bằng cách sử dụng chức năng text.

Các vấn đề liên quan