... 우리는 교차로, 그래서 xl = xc
을 원하는
a = 10; % constant line offset
th = 0; % constant angle of line
% rl = ?? - variable to find
% Coordinates of line:
% [xl, yl] = [ a + rl * cos(th), a + rl * sin(th) ];
rc = 1; % constant radius of circle
% alpha = ?? - variable to find
% Coordinates of circle:
% [xc, yc] = [ rc * cos(alpha), rc * sin(alpha) ];
, 두 방정식의 yl = yc
% a + rl * cos(th) = rc * cos(alpha)
% a + rl * sin(th) = rc * sin(alpha)
광장 양쪽 그들을 합한다. 단순화 sin(a)^2 + cos(a)^2 = 1
. 브래킷을 확장하고 더 단순화하는 것은
% rl^2 + 2 * a * rl * (cos(th) + sin(th)) + 2 * a - rc^2 = 0
지금 당신이 rl
의 값을 얻기 위해 차 공식을 사용할 수 있습니다.
시험 판별 :
dsc = (2 * a * (cos(th) + sin(th)))^2 - 4 * (2 * a - rc^2);
rl = [];
if dsc < 0
% no intersection
elseif dsc == 0
% one intersection at
rl = - cos(th) - sin(th);
else
% two intersection points
rl = -cos(th) - sin(th) + [ sqrt(dsc)/2, -sqrt(dsc)/2];
end
% Get alpha from an earlier equation
alpha = acos((a + rl .* cos(th)) ./ rc);
지금 당신은 각 라인에 대한 특정 알려 지거나 알려지지 않은 값에서 원 라인의 교차점, 0, 1 또는 2 포인트가 있습니다. 본질적으로 이것은 방정식입니다. 수학의 기초로이 기사의 시작 부분을보십시오
https://en.wikipedia.org/wiki/System_of_linear_equations
나를 수학에 이겼습니다! – Wolfie