2014-03-21 4 views
0

Мне требуется нарисовать круг в матрице и пометить его центр и создать случайную координату внутри круга и отрицательную ее координату и измерить ее расстояние между этими двумя точками Я попробовал этотрисовать круг в матрице и генерировать случайную координату внутри круга и отрицательную координату

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

, чтобы сделать круг и его хорошо, но я не знаю, как приступить к генерации случайной координировать объявление его отрицательное и измерить расстояние между ними

+0

Что вы имеете в виду под "случайной координаты и его отрицательное"? – Nitish

+0

Отрицательно ли вы имеете в виду, что другая точка должна лежать на другой стороне центра круга на линии, соединяющей центр и точку, но равноудаленной от центра? – Divakar

ответ

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

+0

Большое вам спасибо за помощь – user3447467

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 

Не уверен, что вы действительно хотите «отрицательные координаты» или комплексное сопряжение координат. В последнем случае вы просто отрицаете y, чтобы получить комплексное сопряжение.

+0

Большое вам спасибо за вашу помощь – user3447467