计算将圆弧平移多远以避免相交
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)
。计算两个角度并使用较小的一个。
我有一个 Canvas,我在上面画了一个圆/360 度弧。我的圆弧从 -90(顶部)而不是默认的右侧(0)开始绘制。
我想在相同的顶部放置一个矩形 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)
。计算两个角度并使用较小的一个。