How to draw normal line at given points ?
42 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
MMSAAH
am 27 Mär. 2020
Beantwortet: michael scheinfeild
am 28 Aug. 2021
Hello everyone,
I have a red curve that fit 4 bleu points. I want to draw normal at these points.
Here attached my curve.
and the x, y coordinates of the bleu points are :
x=[142;127;181;234];
y=[251;251;261;255];
So, please, how to get the normal line ?
I will be very grateful if anyone could help me.
2 Kommentare
Akzeptierte Antwort
Ameer Hamza
am 31 Mär. 2020
Try this:
x=[142;127;181;234];
y=[251;251;261;255];
[x, idx] = sort(x);
y = y(idx);
points = [x y];
xint = linspace(127,234,50)';
spl = spline(x,y);
tangent_vector = zeros(4,2);
for i=1:4
if i==4 % last polynomial need to evalauted at endpoint
deri_coef = polyder(spl.coefs(i-1,:));
tangent_vector(i, :) = [1 polyval(deri_coef, x(end)-x(end-1))];
else
deri_coef = polyder(spl.coefs(i,:));
tangent_vector(i, :) = [1 polyval(deri_coef, 0)];
end
end
normal_vec = [-tangent_vector(:,2) tangent_vector(:,1)];
start_points = points;
end_points = 10*normal_vec + points;
fig = figure;
ax = axes();
hold(ax);
t = plot(y,x,'.',ppval(spl,xint),xint,'r-');
for i=1:4
p1 = start_points(i,:);
p2 = end_points(i,:);
plot([p1(2) p2(2)], [p1(1) p2(1)], 'r', 'LineWidth', 2);
end
daspect([1 1 1]);
xlim([180 340])
ylim([100 250])
2 Kommentare
Ameer Hamza
am 1 Apr. 2020
For loop is just calculating the tangent vector at each point, since we can calculate the normal vectors from tangent vectors. The spline function output 3 polynomials for 4 data points. So to compute tangent at 4 data points, we need to do it like this
datapoint # 1 -> polynomial # 1 (start point)
datapoint # 2 -> polynomial # 2 (start point) or polynomial # 1 (end point)
datapoint # 3 -> polynomial # 3 (start point) or polynomial # 2 (end point)
datapoint # 4 -> polynomial # 3 (end point)
Which shows where I evaluated the derivative of each polynomial
Weitere Antworten (1)
michael scheinfeild
am 28 Aug. 2021
https://michaelsheinfeild.medium.com/unit-normal-vector-to-curve-d63ef0124acd
0 Kommentare
Siehe auch
Kategorien
Mehr zu Polynomials finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!