0

重複の可能性:
勾配が異なる線と円の交点

pp=randi([-400 400],2,2)それまでにプロットした線がx=pp(:,1)ありy=pp(:,2)ます。半径rの中心(a、b)の円があります

円と線の交点を確認したい。

polyfitコマンドを使用して勾配と切片を確認しました。次にlincirc、コマンドを使用しましたが、問題は、線が 1 つのポイントのみを横切る場合、他のポイントも表示されることです。

たとえば、線が一方の側を横切って途中で止まる場合、境界を横切らないもう一方の点も示します。

4

1 に答える 1

1

(a、b)を中心とする円の半径rがあります。あなたには一線があります。これらの点をプロットした場合は、データをxベクトルとyベクトルに格納する必要があるため、要素の最初と最後をそれぞれ(x、y)座標として使用します。最初のペアはラインの始点を形成し、最後のペアは終点を形成します。これらの点を(c1、d1)および(c2、d2)と呼びます。lincirc関数が、線と円の間に2つの交点があることを示していると仮定して、計算します。

A1 = (c1-a,d1-b)
A2 = (c2-a,d2-b)

今なら

norm(A1,2) < r

エンドポイント(c1、d1)は、円の内側にあります。

norm(A2,2) < r

次に、端点(c2、d2)は円の内側にあります。

ポイントの1つが円の内側にある場合、交点は1つだけです。

どちらの点も円の内側にない場合は、線が円と2回交差していることがわかります(lincirc関数が2つの点があることを示していると仮定します)

両方の点が円の内側にある場合、lincirc関数はあなたに嘘をついています。

于 2012-07-16T17:11:11.747 に答える