How to plot 2 lines and find the coordinates of their intersection?

조회 수: 717 (최근 30일)
Swati Umamaheshwaran
Swati Umamaheshwaran 2017년 9월 17일
답변: Preetham Manjunatha 2022년 2월 8일
I need to plot the lines x+y=3 and x-y= -1 and find their point of intersection. I know that to plot the lines I could use 'fplot'. How can I find the coordinates of their intersection and plot it? Please help.

답변 (5개)

Star Strider
Star Strider 2017년 9월 17일
Another approach:
xymtx = [1 1; 1 -1];
cv = [3; -1];
xy = xymtx\cv; % Calculate Intercept
xint = xy(2); % X-Value Of Intercept
yint = xy(1); % Y-Value Of Intercept
xyind = [xint - 1, xint + 1]'; % X-Values For Plot
xydep = [cv -xyind.*xymtx(:,2)]; % Y-Values For Plot
figure(1)
plot(xyind, xydep(1,:), xyind, xydep(2,:), '-r')
hold on
plot(xint, yint, 'pg', 'MarkerFaceColor','g', 'MarkerSize',10)
hold off
This is straightforward and relatively simple linear algebra. The ‘xydep’ variable calculates the y-values corresponding to the arbitrary values in ‘xydep’, and is the result of solving ‘[X + Y] = C’ for ‘Y’.

Tutku Oztel
Tutku Oztel 2019년 1월 9일
Hello,
I'm sharing the function that I wrote to find the intersection points of two lines with their given slope and constant values:
function [x0 y0] = intersectPoints(m1,m2,b1,b2)
% Insersection point of two lines with known slope and constant
% parameters.
% [x0 y0] = intersectPoints(m1,m2,b1,b1)
% where m's are slope, and b's are constants.
% written by Tutku Öztel in 06.01.2019
x0 = (b2-b1)/(m1-m2); %find the x point
y0 = m1*x0+b1;
end
Late though, but still.. Hope it will be helpful! :)
Tutku

Simon Kölbl
Simon Kölbl 2017년 9월 17일
I would do it like this:
% define x Axis and evaluate functions
x_points = -5:0.1:5;
function1 = -x+1;
function2 = x+1;
index_intersection = find(function1 == function2);
x_value_intersection = x_points(index_intersection);
y_value_intersection = function1(index_intersection);
% plot functions and intersection point:
curve1 = plot(x_points, function1);
hold on
curve2 = plot(x_points, function2);
intersection = plot(x_value_intersection, y_value_intersection,...
'Marker', '+', 'MarkerSize', 6, 'Color', 'r');
  댓글 수: 2
Cyril Okhio
Cyril Okhio 2018년 11월 13일
Sorry it did not work. There are errors in Line 9.
Image Analyst
Image Analyst 2021년 6월 5일
@Cyril Okhio, I think @Simon Kölbl meant this:
clc; % Clear command window.
fprintf('Running %s.m ...\n', mfilename);
clear; % Delete all variables.
close all; % Close all figure windows except those created by imtool.
workspace; % Make sure the workspace panel is showing.
% Define x Axis and evaluate functions
x_points = -5:0.1:5;
function1 = -x_points+1;
function2 = x_points+1;
index_intersection = find(function1 == function2);
x_value_intersection = x_points(index_intersection)
y_value_intersection = function1(index_intersection)
% Plot functions and intersection point:
curve1 = plot(x_points, function1);
hold on
curve2 = plot(x_points, function2);
intersection = plot(x_value_intersection, y_value_intersection,...
'Marker', '+', 'MarkerSize', 20, 'Color', 'r', 'LineWidth', 2);
grid on
caption = sprintf('At intersection, x = %f, y = %f', x_value_intersection, y_value_intersection);
fontSize = 15;
title(caption, 'FontSize', 15);
xlabel('x', 'FontSize', 15);
ylabel('y', 'FontSize', 15);
fprintf('Done running %s.m\n', mfilename);

댓글을 달려면 로그인하십시오.


Matt J
Matt J 2021년 6월 5일
편집: Matt J 2021년 6월 5일
Using this File Exchange submission,
xy=linexlines2D( [1,1,-3].' , [1,-1,1] ); %the intersection point
hold on
fimplicit(@(x,y) x+y-3);
fimplicit(@(x,y) x-y+1);
plot(xy(1),xy(2),'or','MarkerFaceColor','r')
hold off

Preetham Manjunatha
Preetham Manjunatha 2022년 2월 8일
Here is the link to find the intersection point of two line segments/lines. A fast two line intersection point finder based on the line parametric space. Finds the intersection point between two lines if it exists or else submits NaN. if you need to find the intersection of the multiple line segments, MATLAB's Mapping Toolbox has function polyxpoly - that finds the intersection points for lines or polygon edges.

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by