كيف أعرض سهمًا موضوعًا بزاوية معينة في MATLAB؟

StackOverflow https://stackoverflow.com/questions/1803043

  •  05-07-2019
  •  | 
  •  

سؤال

أنا أعمل في MATLAB وأواجه مشكلة بسيطة جدًا:لدي كائن محدد بموضعه (x,y) و theta (الزاوية بالدرجات).أرغب في رسم النقطة وإضافة سهم يبدأ من النقطة ويشير نحو الاتجاه الذي تحدده الزاوية.في الواقع ليس من الضروري أن يكون سهمًا، أي شيء يوضح قيمة الزاوية بيانيًا سيفي بالغرض!

إليك صورة توضح نوع الشيء الذي أحاول رسمه:

تمت إزالة رابط ImageShack الميت

هل كانت مفيدة؟

المحلول

ووجعبة () بالتآمر المؤامرات وظيفة السهام من هذا القبيل. خذ قيمة ثيتا وتحويله إلى (س، ص) الإحداثيات الديكارتية التي تمثل ناقلات تريد رسمها كالسهم واستخدام هذه باسم (ش، ت) المعلمات إلى جعبة ().

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]);

ونلقي نظرة من خلال الانترنت وثائق مطلب لمعرفة أنواع مؤامرة أخرى. هناك الكثير، بما في ذلك عدة مؤامرات شعاعي. انهم في MATLAB> وظائف> الرسومات> قسم متخصص التآمر. هل "جعبة وثيقة" في سطر الأوامر وتصفح حولها.

نصائح أخرى

إذا كنت تريد تجربة إنشاء شيء يشبه الصورة التي قمت بربطها، فإليك بعض التعليمات البرمجية لمساعدتك في القيام بذلك (ملحوظة: سيكون عليك أولاً تنزيل التقديم سهم.م بواسطة إريك جونسون على ال تبادل الملفات MathWorks, ، والذي أحب دائمًا استخدامه لإنشاء أسهم بأي شكل وحجم):

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

وهذا ما سيبدو عليه الأمر:

enter image description here

يمكنك بعد ذلك إضافة نص إلى المخطط (للزاوية وقيم الإحداثيات) باستخدام الملف text وظيفة.

إليك إجابة جزئية، وأتوقع أن يمكن معرفة بقية. أنا أطلقت محرر أرقام وفتحت أدوات المؤامرة. أنا جر السهم من لوحة على الرقم الخاص بي. ثم أنا ولدت في ملف م. تضمين هذا السطر:

والشرح (figure1، "السهم"، [0.1489 0.2945]، [0.5793 0.6481])؛

وهكذا، الزوج الأول من الإحداثيات بداية السهم. وأنت تسير لدينا لمعرفة نهاية مدبب (الزوج الثاني من الإحداثيات) باستخدام القليل من علم المثلثات. حتى أنك قد تكون قادرة على الحصول على قوس قليلا إذا كنت تفعل بعض أكثر تافه حولها مع أدوات المؤامرة.

واسمحوا لنا أن نعرف إذا كان علم حساب المثلثات يهزم لك. أوه، ونسيت أن رسم نقطة، ولكن أعتقد يمكنك هذا الرقم؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top