在matlab中绘制圆并在圆内生成随机坐标和坐标的负数

时间:2014-03-21 17:24:05

标签: matlab random geometry coordinate

我需要在matlab中绘制一个圆并标记其中心并在圆内生成一个随机坐标和该坐标的负数并测量这两个点之间的距离 我试过这个

x = linspace(-sqrt(10),sqrt(10));
y1 = sqrt(10-x.^2);
y2 = -sqrt(10-x.^2);
plot(x,y1,x,y2)
axis equal

制作圆圈和它的确定,但我不知道如何继续生成随机坐标ad其负面并测量它们之间的距离

2 个答案:

答案 0 :(得分:0)

您可以使用rand()函数生成与中心的随机距离,以及生成随机角度。然后,您可以转换为x,y坐标,并取消它们以获得负坐标。最后,您可以使用距离公式计算两个坐标之间的距离。以下是一些示例代码:

x = linspace(-sqrt(10),sqrt(10));
y1 = sqrt(10-x.^2);
y2 = -sqrt(10-x.^2);
plot(x,y1,x,y2)
axis equal
hold on

r_max = sqrt(10); %set to radius of circle

r = rand(1)*r_max; %produces a random vector whose length is <=radius
theta = rand(1)*2*pi; % produces a random angle

x_coord = r*cos(theta); %calculate x coord
y_coord = r*sin(theta); % calculate y coord

x_coord_neg = -1*x_coord; % negate x coord
y_coord_neg = -1*y_coord; % negate y coord

plot(x_coord,y_coord, 'x')
plot(x_coord_neg,y_coord_neg, 'rx')

dist = sqrt((x_coord - x_coord_neg)^2 +  (y_coord - y_coord_neg)^2) % calculate distance

不确定你是否真的需要&#34;负坐标&#34;或坐标的复共轭。在后者的情况下,你只是否定y来得到复共轭。

答案 1 :(得分:0)

将此添加到您的代码中 -

%%// Choose from 100 random point pairs
N = 100; 
%%// Radius of circle
radius = sqrt(10); 

%%// Create a random point matrix Nx2
pt1 = [ radius*2*(rand(N,1)-0.5) radius*2*(rand(N,1)-0.5)];

%%// Select the first pair that lies inside circle
pt1 = pt1(find(sqrt( pt1(:,1).^2 + pt1(:,2).^2 )<radius,1),:);

%%// Negative of the point, i.e. on the other side of the center of the circle but equidistant from the center
pt2 = -pt1;

%%// Distance between the two points
dist1 = sqrt((pt1(1)-pt2(1)).^2 + (pt1(2)-pt2(2)).^2); 

%%// Overlay the center and the two points on the circle plot
hold on
text(0,0,'C') %%// Center
text(pt1(1),pt1(2),'P') %%// First point
text(pt2(1),pt2(2),'MP') %%// Second point (Mirror Point, MP)

<强>剧情

enter image description here