私は多数の 3D 球と球の交差に関する質問に目を通しましたが、残念ながら、それらは私の理解能力をはるかに超えているか、探しているものに合わせられていません。
これは Unity ゲーム エンジン内であり、c# を使用しています
このコードを機能させることができました:
public void calculatePoints_H(Vector3 c1p, Vector3 c2p, float c1r, float c2r, out Vector3 startLine, out Vector3 endLine)
{
//c1p = circle one position
//c1r = circle one radius
Vector3 P0 = c1p;
Vector3 P1 = c2p;
float d,a,h;
d = Vector3.Distance(P0,P1);
a = (c1r*c1r - c2r*c2r + d*d)/(2*d);
h = Mathf.Sqrt(c1r*c1r - a*a);
Vector3 P2 = (P1 - P0);
P2 = (P2 * (a/d));
P2 = (P2 + P0);
float x3,y3,x4,y4 = 0;
x3 = P2.x + h*(P1.y - P0.y)/d;
y3 = P2.y - h*(P1.x - P0.x)/d;
x4 = P2.x - h*(P1.y - P0.y)/d;
y4 = P2.y + h*(P1.x - P0.x)/d;;
//draw visual to screen (unity 3D engine)
Debug.DrawLine(new Vector3(x3,0,y3), new Vector3(x4,0,y4),Color.green);
//out parameters for a line renderer
startLine = new Vector3(x3,0,y3);
endLine = new Vector3(x4,0,y4);
}
現在、このコードにより、交差する 2 つの球の x 軸と z 軸上の 2 つの点を計算し、線を引くことができます。
私が達成したいのはxyz交点であるため、メソッドに高さ(yベクトル3値)を追加して、球を任意の方向/高さから別の球と交差させることができます
誰かがこれを行う方法を理解するのを手伝ってくれませんか?