Function that plots and calculates intersection of lines

4 views (last 30 days)
I have to create a function that gets a matrix as an input that represent lines and each row contains 4 numbers (x1 y1 x2 y2).
The function has to plot the lines, calculate and mark the intersection point of the lines.
The function starts like this:
function [LL] = intersects(lines)
%plot and calculate lines and intesection
LL = [ ]; %Contains the intersection point
  2 Comments
Geoff Hayes
Geoff Hayes on 29 Nov 2019
This seems like homework so please show what you have tried so far. You will (probably) need to determine the equation for each line and then solve for the intersection for each pair of lines.
SOFOKLIS SOFOKLEOUS
SOFOKLIS SOFOKLEOUS on 29 Nov 2019
Edited: SOFOKLIS SOFOKLEOUS on 29 Nov 2019
I can plot and find the intersection points of lines out of a function. However this exercise requires that the input is in the form of a matrix. Normally I can manipulate the values by assigning them as x1 y1 x2 y2 but in the above function the matrix is enteres as 'lines' so I can no longer use each value separately.

Sign in to comment.

Answers (1)

Dhananjay Kumar
Dhananjay Kumar on 3 Dec 2019
Edited: Dhananjay Kumar on 3 Dec 2019
You can do it manually through basic mathematical principles.
y-y1 = m(x-x1) => mx-y = mx1-y1 . Now this is in the form of ax+by = c.
(Here m = (y2-y1)/(x2-x1) )
Make another matrix A and a column vector b from the given input matrix.
Each row of A is [m ,-1] and corresponding element in b would be mx1-y1.
Now loop through each row and find the intersection points with all the other rows(which is not current row) inside another loop. (To solve for a pair of rows make 2x2 matrix A_temp and a 2x1 b_temp matrix and use mldivide ) Keep putting those intersection points in a matrix. Return the matrix

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!