矩阵内的 C++ 正弦函数

标签 c++ math graphic

如何用 0 和 1 在 C++ 矩阵中表示正弦函数的图形?

char sinM[DN][DM];
memset(sinM,32, sizeof(sinM));

for(int i=1;i<DN;++i) {

    double val = sin(i*M_PI/180);
    int valY = int(val*DM);
    sinM[i][valY] = '1';
}

这似乎不能正常工作。

最佳答案

如果您正在寻找这样的东西:

0000000000000000000000000000000000000000000000000000000000000000
0000000000000111111100000000000000000000000000000000000000000000
0000000000111000000011100000000000000000000000000000000000000000
0000000011000000000000011000000000000000000000000000000000000000
0000001100000000000000000110000000000000000000000000000000000000
0000110000000000000000000001100000000000000000000000000000000000
0001000000000000000000000000010000000000000000000000000000000000
0110000000000000000000000000001100000000000000000000000000000000
1000000000000000000000000000000010000000000000000000000000000000
0000000000000000000000000000000001100000000000000000000000000011
0000000000000000000000000000000000010000000000000000000000000100
0000000000000000000000000000000000001100000000000000000000011000
0000000000000000000000000000000000000011000000000000000001100000
0000000000000000000000000000000000000000110000000000000110000000
0000000000000000000000000000000000000000001110000000111000000000
0000000000000000000000000000000000000000000001111111000000000000

然后你可以使用这个:

#include <iostream>
#include <cmath>

const size_t HEIGHT=16;
const size_t LENGTH=64;
const double pi = std::acos(-1);

int main() {
    char board[HEIGHT][LENGTH];
    double x_scale = 2.0 * pi / LENGTH;
    size_t y_scale = (HEIGHT - 1) / 2;
    size_t y;
                                        // initialize 
    for ( size_t i=0; i<HEIGHT; i++)
        for (size_t j=0; j<LENGTH; j++) board[i][j]='0';
                                        // "draw" the function in the matrix
    for ( size_t x=0; x<LENGTH; x++) {
        y = (size_t)(std::round(y_scale + 1 - std::sin(x*x_scale) * y_scale));
        board[y][x] = '1';
    }
                                        // print the matrix
    for ( size_t i=0; i<HEIGHT; i++) {
        for (size_t j=0; j<LENGTH; j++) {
            std::cout << board[i][j];
        }
        std::cout << std::endl;
    }
    return 0;
}

关于矩阵内的 C++ 正弦函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33737886/

相关文章:

java - 线条在应该重叠时却没有重叠 Java Swing

c++ - 如何在 Win32 应用程序中拖动纯色矩形而不会出现白色闪烁且不会干扰屏幕上的其他对象?

c++ - 使用 C++ 的 OpenCV 库 - 详细说明 cv::Mat::at 在大图像上导致 SIGSEGV

c++ - RCpp:期待单值错误

c - 我们如何计算多重集的 r 组合?

c++ - 按像素访问 linux 的终端

用于创建图形的 Java 库

c++ - 将返回类型专门化为 void 或 const 左值引用

math - 我怎样才能最好地填补我数学知识的空白?

python - 对序列进行数学求和