gpt4 book ai didi

java - x 和 y 值突然变化

转载 作者:行者123 更新时间:2023-12-02 07:53:08 25 4
gpt4 key购买 nike

在下面的代码中,theta x 和 y 对于较小的 theta 值平滑变化,但是对于较大的 theta 值,会发生突然变化,x 和 y 在相当长的一段时间内没有变化,然后突然变化。

float tantheta=height/base;

double theta=-Math.atan(tantheta);

x=(int) (53*Math.cos(theta)+x0);
y=(int) (53*Math.sin(theta)+y0);

最佳答案

每当你有一些长度(高度和底边)并转换为角度(theta),然后再转换回长度时,你就在做不必要的工作。

假装底边和高度为正值来画一幅画。该数学适用于任何底数和高度。

想象一个三角形,一个顶点位于原点,另一个顶点位于(底,高)。三角形的边是 (0,0) 到 (底,高) 和 (0,0) 到 (底, 0) 和 (底,0) 到 (底,高)。令hypot = sqrt(底*底+高*高)。请注意,theta 是三角形在原点处的角度。这意味着 cos(theta) = base/hypot 且 sin(theta) = height/hypot。

例如,x 的公式变为 x = x0 + 53 * base/hypot;

这些余弦和正弦公式适用于任何底数和高度,无论是正数还是负数。

当底面或高度接近于零时,您几乎肯定会看到由于浮点错误而导致的跳跃。如果您跳过计算 theta,这些将会消失。

关于java - x 和 y 值突然变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993443/

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