Find intersection between line and circle
Mostrar comentarios más antiguos
Hi I currently work with a small project regarding particle behaviour in closed domains.
I want to create a function which takes start point, and start direction for a point. The domain is a circle. How do I calculate the two intersections with the circle?
I know how to do the calculations but I have trouble with the implementation.
px = -0.5; % start x-coordinate of point
py = -0.5; % start y-coordinate of point
rx = 1; % x-direction of vector with the above startcoordinates
ry = 2; % y ------ || ---------
I tried using symbolic toolbox but I can't convert it back to normal variables.
fsolve won't help because the representation of a circle is not a function. What to do?
Thanks in advance
Regards
1 comentario
Andrew Newell
el 27 de Abr. de 2011
Show me what you did using the symbolic toolbox and I'll show you how to convert it back to normal variables.
Respuesta aceptada
Más respuestas (4)
Kasper
el 27 de Abr. de 2011
Kasper
el 27 de Abr. de 2011
0 votos
3 comentarios
Teja Muppirala
el 27 de Abr. de 2011
Option 1: Use the subs command to put in the values of each variable.
subs([x_sol y_sol],{'R' 'rx', 'ry', 'px', 'py'},{1 8 6 0 0})
Or Option 2:
Copy the text of the symbolic expression and then use that just like a regular MATLAB expression where everything is a number.
R = 1;
px = 0;
py = 0;
rx = 8;
ry = 6;
x_sol = [px - (rx*(px*rx + py*ry + (R^2*rx^2 + R^2*ry^2 - px^2*ry^2 + 2*px*py*rx*ry - py^2*rx^2)^(1/2)))/(rx^2 + ry^2); px - (rx*(px*rx + py*ry - (R^2*rx^2 + R^2*ry^2 - px^2*ry^2 + 2*px*py*rx*ry - py^2*rx^2)^(1/2)))/(rx^2 + ry^2)]
y_sol = [px - (rx*(px*rx + py*ry - (R^2*rx^2 + R^2*ry^2 - px^2*ry^2 + 2*px*py*rx*ry - py^2*rx^2)^(1/2)))/(rx^2 + ry^2);
py - (ry*(px*rx + py*ry - (R^2*rx^2 + R^2*ry^2 - px^2*ry^2 + 2*px*py*rx*ry - py^2*rx^2)^(1/2)))/(rx^2 + ry^2)]
Teja Muppirala
el 27 de Abr. de 2011
Oops, I miscopied y_sol, but I think you get the idea.
Christopher Creutzig
el 28 de Abr. de 2011
Instead of copying the symbolic expression manually, you might want to try using matlabFunction(x_sol(1)) etc. At the very least, it will vectorize better/more correctly.
Kasper
el 27 de Abr. de 2011
0 votos
Anupama
el 20 de Mayo de 2020
0 votos
find tthe point of intersections of a circle at (1,2) and radius 4 and a straight line 2x+3y =9 using graphical method.
Categorías
Más información sobre Conversion Between Symbolic and Numeric en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!