长期潜伏者,第一次发帖所以请温柔哈哈
在 Arduino 中,我尝试使用下面的 for 循环根据极坐标函数读取二维数组。如果我不使用 abs() 函数/宏,一切似乎都可以正常工作,但是当我添加它时,它会导致我的整个程序崩溃。我认为这可能与 Arduino 对 abs() 的特定实现有关,但我推出了自己的 abs() 函数并遇到了同样的问题,所以现在我想知道它是否与我的代码/数学有关?
我要复制的极坐标函数在这里:https://www.desmos.com/calculator/p9ukf7e4bw
Variables:
size = float from 0 - 1.5
change = float from 0 - 2PI
offsetX and offsetY = float from -1.0 to 1.0
RESOLUTION = 1024
for(int i = 0; i < RESOLUTION; i++){
double theta = (PI*2/RESOLUTION);
double angle = theta*i;
double realPart = size*cos(angle-change)-size*sin(angle);
double imaginaryPart = size*cos(angle)+size*sin(angle);
double radius = abs(realPart) + abs(imaginaryPart);
XArray[i] = (radius*cos(angle)) + offsetX;
YArray[i] = (radius*sin(angle)) + offsetY;
XArray[i] = saturate(orbitXArray[i], -0.99609375, 0.99609375);
YArray[i] = saturate(orbitYArray[i], -0.99609375, 0.99609375);
}
更多上下文:稍后在代码中将 XArray 和 YArray 映射为索引二维数组(稍后会转换为 int)。
x = mapdub(XArray[i], -1.0, 1.0, 0, RESOLUTION);
y = mapdub(YArray[i], -1.0, 1.0, 0, RESOLUTION);