计算将圆弧平移多远以避免相交

Calculate how far to translate an arc to avoid intersection

我有一个 Canvas,我在上面画了一个圆/360 度弧。我的圆弧从 -90(顶部)而不是默认的右侧(0)开始绘制。

我想在相同的顶部放置一个矩形 canvas 并减少圆弧的扫掠,使两者不相交。我附上了一张图片来说明

所以我需要做的是算出矩形的一半代表什么角度,这样我就可以调整从哪里开始绘制弧线。圆心在我的圆心Canvas:

[canvas.width /2, canvas.height /2]

我已经阅读了一些资源,例如 this question,但它们除了让我觉得自己一无所知之外并没有帮助。我尝试了一些以这个结尾的失败公式

double adjustment = Math.atan2(rectangleY - circleY, rectangleX - circleX) - Math.atan2(rectangleY - circleY, (rectangleX + rectangleWidth) - circleX);

有人能告诉我在 Java 中计算这个的正确方法是什么吗?如果可能的话,我还想知道如何找到矩形相交的位置(即图像上阴影橙色部分的宽度),尽管现在这对我来说不太重要

设 W 为矩形的宽度,R 为圆的半径,A 为您要查找的角度。

有一个直角三角形,角A为中心,斜边为R,角A的对边为W/2,所以

W/2R = sin(A)

所以

A = Math.asin(0.5*W/R);

当W > 2R时当然不能用asin(0.5W/R)

编辑

回答第二题(求交点)

设H为圆心到矩形的距离。当矩形足够宽,圆与下边相交时,有一个直角三角形,以A为中心,R为斜边,H为与A相邻的边

H/R = cos(A)A = Math.acos(H/R)。计算两个角度并使用较小的一个。