Find intersection between line and circle
古いコメントを表示
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 件のコメント
Andrew Newell
2011 年 4 月 27 日
Show me what you did using the symbolic toolbox and I'll show you how to convert it back to normal variables.
採用された回答
その他の回答 (4 件)
Kasper
2011 年 4 月 27 日
Kasper
2011 年 4 月 27 日
0 投票
3 件のコメント
Teja Muppirala
2011 年 4 月 27 日
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
2011 年 4 月 27 日
Oops, I miscopied y_sol, but I think you get the idea.
Christopher Creutzig
2011 年 4 月 28 日
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.
Anupama
2020 年 5 月 20 日
0 投票
find tthe point of intersections of a circle at (1,2) and radius 4 and a straight line 2x+3y =9 using graphical method.
カテゴリ
ヘルプ センター および File Exchange で Conversion Between Symbolic and Numeric についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!