close all; clear; clc; monakveti_x=[-1 1]; monakveti_y=[1 1]; rad=1; wrewiris_centri_x=0; wrewiris_centri_y=0; fi=0:0.01:2*pi; wrew_x=wrewiris_centri_x+rad*cos(fi); wrew_y=wrewiris_centri_y+rad*sin(fi); plot(monakveti_x,monakveti_y) axis equal grid on hold on plot(wrew_x,wrew_y) x_1=monakveti_x(1)-wrewiris_centri_x; x_2=monakveti_x(2)-wrewiris_centri_x; y_1=monakveti_y(1)-wrewiris_centri_y; y_2=monakveti_y(2)-wrewiris_centri_y; r=rad; [x,y,result]=circlelineintersection(x_1,x_2,y_1,y_2,r); x=x+wrewiris_centri_x; y=y+wrewiris_centri_y; plot(x,y,'linewidth',4) function [x,y,result]=circlelineintersection(x_1,x_2,y_1,y_2,r) d_x = x_2-x_1; d_y = y_2-y_1; d_r = sqrt(d_x^2+d_y^2); tt=[x_1,x_2;y_1,y_2]; D = det(tt);%x_1*y_2-x_2*y_1; Delta=r^2*d_r^2-D^2; if(Delta<0) y=[]; x=[]; result=0; return end if(Delta==0) x = (D*d_y )/(d_r^2); y = (-D*d_x)/(d_r^2); result=1; return end if(Delta>0) x = (D*d_y - sign(d_y)*d_x*sqrt(Delta))/(d_r^2); x = [x,(D*d_y + sign(d_y)*d_x*sqrt(Delta))/(d_r^2)]; y = (-D*d_x - abs(d_y)*sqrt(Delta))/(d_r^2); y = [y,(-D*d_x + abs(d_y)*sqrt(Delta))/(d_r^2)]; result=2; return end end