abs() 会导致这次崩溃吗?

问题描述 投票:0回答:0

长期潜伏者,第一次发帖所以请温柔哈哈

在 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);
c++ arduino signal-processing arduino-c++ teensy
© www.soinside.com 2019 - 2024. All rights reserved.