Как нарисовать круг в GNU Octave - PullRequest
9 голосов
/ 01 ноября 2011

В Matlab вы можете нарисовать круг, просто указав центр и радиус следующим образом:

R = 10;
Center = [5,8];
circle(Center,R,1000,'b-');
hold on
plot(Center(1),Center(2),'g.')

Тот же код для MatLab не будет работать для GNU Octave.Какой код октавы нарисовал бы окружность с заданными координатами x, y и радиусом?

Ответы [ 7 ]

13 голосов
/ 01 ноября 2011
t = linspace(0,2*pi,100)'; 
circsx = r.*cos(t) + x; 
circsy = r.*sin(t) + y; 
plot(circsx,circsy); 
5 голосов
/ 01 октября 2014

Используя дополнительный пакет octave-geometry октав, вы можете использовать функцию drawCircle как

drawCircle(x_position, y_position, radius)
4 голосов
/ 20 мая 2013

Если вы хотите использовать функцию многократного использования, есть одна возможность:

function [h, hc] = circles(x,y,r,cmrk)
% CIRCLES   plot 2-D circles, given a set of center coordinates and radii.
%
% Description:
%
%   Plot 2-D circles, given a set of center coordinates and radii. Values
%   can be vectors or matrices, as long as dimensions are consistent. If
%   a marker type (e.g. '+') is also given, circle centers will be marked
%   with it. The function returns a vector of handles for each circle and
%   a handle for all the center markers, if plotted.

assert(size(x)==size(y), 'Mismatching sizes')
assert(size(y)==size(r), 'Mismatching sizes')

if (nargin==4)
    hc = scatter(x,y,[],[],cmrk);
end
axis([min(x-r) max(x+r) min(y-r) max(y+r)], 'equal');

a = linspace(0, 2*pi, 12);
dx = sin(a); dy = cos(a);
hold on
for i=1:numel(x);
    h(i) = line(x(i)+dx*r(i), y(i)+dy*r(i));
end
hold off

Вот пример использования:

x = 0:.1:2*pi; y = sin(x); r = rand(size(x))*.3;
circles(x, y, r, '+')
3 голосов
/ 30 мая 2015

Как нарисовать круг в версии октавы GNU 3.8:

enter image description here

Код:

octave> x = -1:0.01:1;
octave> y = (1 - x .^ 2) .^ 0.5;
octave> plot(x,y, "linewidth", 4, x,-y, "linewidth", 4);

Вербализация:

Создайте список от -1 до 1 с шагом .01 для представления оси X.Ось Y - это диаметр круга минус значение на каждом индексе х в квадрате, все подняты до 0.5.

График x и y (синий), который дает верхнюю половину круга, затем график x к -y, который инвертирует верхнюю (зеленый), создавая нижнюю половину круга.

В качестве альтернативы используйте пробел:

enter image description here

Код:

octave> r = 1;
octave> t = linspace(0,2.*pi,1);
octave> circsx = r.*cos(t) + x;
octave> circsy = r.*sin(t) + y;
octave> plot(circsx,circsy, "linewidth", 4, circsx, -circsy, "linewidth", 4); 

Вербализация:

Рисует круг.

1 голос
/ 03 декабря 2013

Нарисуйте круг в GNU Octave:

x = -3:0.01:3;
y = (4 - x .^ 2) .^ 0.5;
figure; plot(x,y); hold on; plot(x,-y);

Это должно нарисовать круг, имеющий уравнение x ^ 2 + y ^ 2 = 4;

0 голосов
/ 03 ноября 2018

У Ocatve есть несколько способов нарисовать круг, это один из простых способов.

pkg load geometry
x=0;
y=0; #center point ordered pair
r1=10; #radius of circule
h1=drawCircle(x,y,r1);

если вы хотите, чтобы дроу больше обошел круг,

hold on;
r2=8;
h2=drawCircle(x,y,r2);

enter image description here

другой способ это

angle=linspace(0,2*pi,360);

r=5; #radius

x=2;

y=5; #x and y is hear center point 

horizantalValue=r*cos(angle)+x;

verticalValue=r*sin(angle)+y;

plot(verticalValue,horizantalValue);
0 голосов
/ 05 июня 2018

В пакете «Геометрия» есть встроенная функция, которую можно использовать для рисования различных геометрических фигур. Вот код для круга:

pkg load geometry
drawCircle (x0, y0, r)
...