带圆点的java swing相交线

带圆点的java swing相交线,java,swing,math,geometry,Java,Swing,Math,Geometry,可能重复: 我有个问题。我需要找到A点。 我怎样才能做到最好 编程语言是Java。给定: 圆心为C=[x2,y2]且半径为R的圆 从C到B的线段=[x1,y2] 计算它们的交点 这很容易,因为其中一个端点是圆的中心。您必须从C向B走R的距离。该距离保证您将在圆上结束,方向保证您将在光线C->B上结束。您仍然需要检查交点是否位于线段上 如果您有一个向量库,下面是伪代码 - offset = B-C - if length_square(offset) < R^2 output "no i

可能重复:

我有个问题。我需要找到A点。

我怎样才能做到最好

编程语言是Java。

给定: 圆心为C=[x2,y2]且半径为R的圆 从C到B的线段=[x1,y2] 计算它们的交点

这很容易,因为其中一个端点是圆的中心。您必须从C向B走R的距离。该距离保证您将在圆上结束,方向保证您将在光线C->B上结束。您仍然需要检查交点是否位于线段上

如果您有一个向量库,下面是伪代码

- offset = B-C
- if length_square(offset) < R^2 output "no intersection"
- offset_a = normalize(B-C) * R
- output C + offset_a
如果没有库,代码会更长:

- off_x = x1-x2;
- off_y = y1-y2;

- ls = off_x*off_x + off_y*off_y
- if ls < R*R
-- return an empty array, meaning "no intersections"

- scale = R / sqrt(ls)
- res_x = off_x * scale + x2
- res_y = off_y * scale + y2
- return [[off_x, off_y]]
鉴于: 圆心为C=[x2,y2]且半径为R的圆 从C到B的线段=[x1,y2] 计算它们的交点

这很容易,因为其中一个端点是圆的中心。您必须从C向B走R的距离。该距离保证您将在圆上结束,方向保证您将在光线C->B上结束。您仍然需要检查交点是否位于线段上

如果您有一个向量库,下面是伪代码

- offset = B-C
- if length_square(offset) < R^2 output "no intersection"
- offset_a = normalize(B-C) * R
- output C + offset_a
如果没有库,代码会更长:

- off_x = x1-x2;
- off_y = y1-y2;

- ls = off_x*off_x + off_y*off_y
- if ls < R*R
-- return an empty array, meaning "no intersections"

- scale = R / sqrt(ls)
- res_x = off_x * scale + x2
- res_y = off_y * scale + y2
- return [[off_x, off_y]]

编程语言并不重要。这是基础数学。这不是一个特定于java的问题,它是纯数学。是的,但如果任何人有这种编程语言的解决方案,它可以在没有任何额外解释的情况下共享。这是我的家庭作业问题吗?不,这是我的“我想完成我的项目”问题。编程语言不重要。这是基础数学。这不是一个特定于java的问题,它是纯数学。是的,但如果任何人有这种编程语言的解决方案,它可以在没有任何额外解释的情况下共享。这是我的家庭作业问题吗?不,这是我的“我想完成我的项目”问题。