File Exchange

image thumbnail

Curve Intersect 2

version 1.0.0.0 (11 KB) by Sebastian Hölz
Finds the intersection points between two arbitrary polygons.

8 Downloads

Updated 16 Feb 2007

View License

General

This file is based on the Curve Intersect function by Duane Hanselman. It extends the scope of the function to handle arbitrary lines / polygons, which may also have vertical segments or segments with non-increasing x-values.

Description
Calculate the intersection points of two 2D-lines / polygons.

Usage
[X,Y]=CURVEINTERSECT(H1,H2) or [X,Y]=CURVEINTERSECT([H1 H2]) or
[X,Y]=CURVEINTERSECT(X1,Y1,X2,Y2) or
-> (H1,H2) handles to line objects
-> (Xi,Yi) coordinates of lines
-> (X,Y) coordinates of intersection

Example
x1=rand(10,1); y1=rand(10,1); x2=rand(10,1); y2=rand(10,1);
[x,y]=curveintersect(x1,y1,x2,y2);
plot(x1,y1,'k',x2,y2,'b',x,y,'ro')

Cite As

Sebastian Hölz (2020). Curve Intersect 2 (https://www.mathworks.com/matlabcentral/fileexchange/8908-curve-intersect-2), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (25)

Samia Nassir

Hello everybody,

i need your Help please,
i am still a beginner in Matlab i had a task to determine intersections of polygons and curves, i tried to write a code with the Polyxpoly function, i got the intersections points but i need now to define , a function that calculates the two points that surround the intersection point

if you have any idea tell me please ,
tnahks o lot

Johannes

why does this result in an empty matrix? curveintersect([-1 -0.9],[0 3],[-0.9 0],[3 0])

Daphne

KYAW KYAW

Dear Sir/Madam,

I am looking for the intersection of dynamic waves and base line. SO far, I could manage to get few of the intersection points using ratio (Y data of dynamic wave/ Y data of base line) for whole of samples. Pls advise me how should I continue since I was stuck in here so long.

I used your function but mine is dynamic wave form and base straing line so the X -axis is not constant line. So the array is only (1900x1) for wave form and base line. The Y values of wave form is changing but the base line is seems like constant. Let say, there is 64 intersection points visuality but what i can get is only 47 but some are not accutare positions.

Thanks and best regards
Kyaw

Weylan Yutani

Forgot to say thanks and congrats!

minoo

Zak

Worked great for me, though my application was quite simple.

Martin Fuchs

Extremly good code ! Thx sharing it !!!

Andreas Lobinger

One of our students came up with the usage of curveintersect and afaics it works correctly. However the profiler tells me now, that from 300s program runtime 120s are spend in curveintersect and most of the time in the calls to interp1 in curveintersect_l.

Are they really neccessary?

Tyler Jandreau

Yan

works great! thanks

Nitin

Great job !!

Damir

It is an excelent job, however I found a bug. The function finds wrong intersection, if one of the curves is almost vertical. Please try this:
x1=[0.1 0.1+1e-17]
y1=[-1 1]
x2=[-1 1]
y2=[-1 1]
[x,y]=curveintersect(x1,y1,x2,y2)
plot(x1,y1,'k',x2,y2,'b:',x,y,'ro')

Carlos G-M

Excellent job!! Thanks!

Carlos G-M

C. Chaya Boughan

Wonderful program. Worked for some very sticky intensity plots where the points of intersection had been hard to find. Vielen dank Sebastian !!!!

Sathish Athreya

Yes, Obviously it is very fast to find intersection point between curves

David Shepherd

I'm using this to quickly find the point at which two EXIT functions intersect, its perfect thanks mate.

Dick Benson

Overcomes limitations of the D. Hanselman version. THANKS!

Huy Pham

Could we use it for a higher dimension?

leila k

Mat Cop

very useful

Peter Krug

Works well for me

xiaoxu wang

gok gok

great command, thank you!
Are you planning to include the case of infinite line intersection?
Example:
x1=[0 1]; y1=[0 0];x2=[0.5 0.5]; y2=[0.1 1];
will "intersect" at [0.5,0]

MATLAB Release Compatibility
Created with R14SP1
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

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

Start Hunting!

CurveIntersect/