Clear Filters
Clear Filters

How to find intersection between lines

1 view (last 30 days)
Hossein Alishahi
Hossein Alishahi on 6 Mar 2021
Commented: darova on 7 Mar 2021
I have below code
%% Input Values
clear all
clc
alpha1=input('Enter positive "alpha1"?');
alpha2=input('Enter positive "alpha2"?');
beta1=input('Enter positive "beta1"?');
beta2=input('Enter positive "beta2"?');
lambda=input('Enter positive "lambda"?');
eta1=input('Enter positive "eta1"?');
eta2=input('Enter positive "eta2"?');
P=input('Enter positive "P"?');
%% Feasible Area
x = -1:P;m = 0; c = eta2; y = m * x + c;
plot(x, y, 'black')
y = -1:P; m = 0; c = eta1; y = m * x + c;
plot(y, x, 'black')
eta1=min (eta1,P); eta2=min (eta2,P);
if eta1==0 && eta2==0;
X=[0 0 P]; Y=[0 P 0];
fill(X,Y,[0.85 0.85 0.85]); axis([-1 P -1 P])
end
if eta1+eta2<P
X=[0 0 eta1 eta1]; Y=[0 eta2 eta2 0];
fill(X,Y,[0.85 0.85 0.85]);
else
X=[0 0 P-eta2 eta1 eta1]; Y=[0 eta2 eta2 P-eta1 0];
fill(X,Y,[0.85 0.85 0.85]); axis([-1 P -1 P])
end
X=[0 0]; Y=[0 P];
line(X,Y,'Color','black')
hold on
line(Y,X,'Color','black')
g = @(x,y) x+y-P;
y1=fimplicit(g,[0 P 0 P])
f = @(x,y) log((1+alpha1*x./(1+alpha2*y))) -lambda*log((1+beta1*x./(1+beta2*y)));
y2=fimplicit(f,[-1 P -1 P], '-')
hold on
grid on
Where I consider alpha1=1, alpha2=0.2, beta1=1; beta2=2, lambda=2, eta1=2, eta2=3, P=1
I want to find the intersection for lines in the picture. Could you please help me!

Answers (1)

darova
darova on 6 Mar 2021
use polyxpoly
  2 Comments
Hossein Alishahi
Hossein Alishahi on 6 Mar 2021
Thank you for your consideration.
It does not work for fimplicit function which has ploted the lines. Could you please give me more information in specefic codes
Best,
Hossein
darova
darova on 7 Mar 2021
  • use contour to get lines
  • use polyxpoly to calculate interseciton
clc,clear
[x,y,z] = peaks(30);
[~,h] = contour(x,y,z,[0 0]);
x2 = [-2 3];
y2 = [-3 0];
h1 = get(h,'children');
x1 = get(h1(3),'xdata'); % extract 3d contour
y1 = get(h1(3),'ydata');
[xc,yc] = polyxpoly(x1,y1,x2,y2); % find intersection
hold on
plot(x1,y1,'.r')
plot(x2,y2,'linewidth',2)
plot3(xc,yc,'or')
hold off

Sign in to comment.

Categories

Find more on Vector Fields in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!