gpt4 book ai didi

.net - 如何压缩角度?

转载 作者:行者123 更新时间:2023-12-04 15:48:07 26 4
gpt4 key购买 nike

嘎吱嘎吱。
使用来自 Getting End Point in ArcSegment with Start X/Y and Start+Sweep Angles 的计算,我怎么能 scrunchify 或膨胀(-ify)角度。
请参阅下面的图片。绿盒子是原装的。黄线描绘了皱缩或膨胀的开始/结束角度应该变成什么,但红线是如果在皱缩或膨胀的椭圆弧上保持 start=169, end=293 的原始角度。
我需要一种方法来弄清楚如何根据绿色框中的原始值和蓝色和橙色框中的高度/宽度/xRadius/yRadius 值创建新的开始/结束角度。
original width-scrunched height-scrunched
有谁知道计算出新角度应该是什么?

最佳答案

如果您考虑一下这段代码实际上在做什么,它与垂直或水平比例尺非常相似(顺便说一下,这行得通吗?)。我认为这为我们提供了解决此问题的线索,而无需真正深入研究特定于椭圆的几何。

一般方法是根据角度和半径设置找出 x,y 坐标中的端点,应用比例因子,然后转换回角度。
我们还需要知道的第一件事是椭圆的中心。我们所知道的是起点和终点,以及起点和终点。有了这些信息,我们就可以建立一组非常简单的方程并求解:((x,y) 是椭圆的中心)

(yEnd-y)/(xEnd-x) = tan(endAngle) = 从中心到端点的线的斜率
(yStart-y)/(xStart-x) = tan(startAngle) = 从中心到起点的直线斜率

有了这些方便的信息,我们现在可以通过比例因子计算新的中心 (x',y')、x 和 y 半径以及端点 (xEnd', yEnd')。 (根据定义,我相信起点是 0,0,但根据需要进行更改)。

x' = x * xScale, y' = y*yScale
xEnd' = xEnd * xScale, yEnd' = yEnd * yScale

xRadius' = xRadius * xScale, yRadius' = yRadius * yScale

现在我们需要找出新的角度。

Math.Atan2(yStart', xStart') = 新的起始角度
Math.Atan2(yEnd', xEnd') = 新的结束角度

这个策略有意义吗?

关于.net - 如何压缩角度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5515791/

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