How to calculate normal to a line?
49 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Shivakumar
el 27 de Ag. de 2013
Comentada: ddd ppp
el 4 de Mayo de 2018
I plot a line in MATLAB using the points. Please tell me how to obtain the normal of that line? Can I get these plots in a single plot?
2 comentarios
tala
el 3 de Oct. de 2016
hi i have a 2D image of echocardiography. is there any solution to compute the normal vector of this image?
Respuesta aceptada
Jan
el 27 de Ag. de 2013
It is easier to answer, if you explain any details. At first I assume you mean 2D-lines, because for 3D-lines a normal line is not defined.
If you have a vector with the coordinates [x, y], the vectors [y, -x] and [-y, x] are orthogonal. When the line is defined by the coordinates of two points A and B, create the vector B-A at first, determine the orientation by the above simple formula, decide for one of the both vectors, and the midpoint between the points (A+B) * 0.5 might be a nice point to start from. Adjusting the length of the normal vector to either 1 or e.g. the distance norm(B-A) might be nice also.
12 comentarios
Jan
el 21 de Sept. de 2013
@Shivakumar: The normal of a line is a vector. Vectors can be move freely in the space, because they have a direction and a length. but no start point. Therefore the normal of the line at the midpoint is the normal at any other point also. If you want to draw the normal, it looks nice, when you start it at the midpoint of the line segment. but in a mathematical sense it is correct to start it from any other point of the X-Y-plane as well, e.g. at the origin.
Más respuestas (2)
Image Analyst
el 27 de Ag. de 2013
A perpendicular line has a negative inverse slope. So if you used polyfit
coeffs = polyfit(x, y, 1);
then coeffs(1) is the slope. The new slope is -1/coeffs(1). Now you simply use the point-slope formula of a line to draw it. Obviously you need to know at least one point that that line goes through since there are an infinite number of lines at that slope (all parallel to each other of course).
5 comentarios
Image Analyst
el 29 de Ag. de 2013
You gave the two endpoints of the original line. Those do not have to be on the new, perpendicular line, though they could. Where do you want the perpendicular line to cross/intersect the first line? At the end? In the middle? Somewhere else?
Shashank Prasanna
el 28 de Ag. de 2013
Editada: Shashank Prasanna
el 28 de Ag. de 2013
If this is a homework, please spend some time familiarizing yourself with basics of MATLAB. You can start by going through the Getting Started guide
There are several ways you could do this and all of the already suggested approaches are good. Here is how you can think about it in terms of linear algebra.
Answer: Normal lies in the null space of the the matrix A-B
A = [-0.6779, -0.7352]; B = [0.7352, -0.6779];
null(A-B)
Proof:
(A-B)*null(A-B) % Should yield a number close to zero
If you are looking to plot:
x = [A(1);B(1)];
y = [A(2);B(2)];
line(x,y,'color','k','LineWidth',2)
normal = [mean(x),mean(y)] + null(A-B)';
line([mean(x),normal(1)],[mean(y),normal(2)],'color','r','LineWidth',2)
2 comentarios
Ver también
Categorías
Más información sobre Get Started with MATLAB en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!