gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:00:08 26 4
gpt4 key购买 nike

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

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

enter image description here所以我需要做的是计算出矩形的一半代表什么角度,以便我可以调整开始绘制弧线的位置。圆的中心位于我的 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为斜边,W/2为角A的对边,所以

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)。计算两个角度并使用较小的一个。

关于java - 计算圆弧平移多远以避免相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33405308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com