在屏幕上繪製 y = x²、笛卡爾愛心線 r = a(1 - sinθ) 等數學曲線,本質上是將數學坐標映射到屏幕像素坐標並連線。
| 庫 | 平台 | 特點 | 示例:畫 y=x² |
|---|---|---|---|
| EasyX | Windows | 極簡 C 風格,適合教學/競賽 | initgraph(640,480); for(x=-10;x<=10;x+=0.1) putpixel(320+x*20, 240-y*20, RED); |
| SFML | 跨平台 | 現代 C++,面向對象,支持 2D/音頻/網絡 | 用 VertexArray 畫線條 |
| SDL2 | 跨平台 | C 底層,手動管理渲染器,性能極高 | SDL_RenderDrawPoint(renderer, x, y); |
| Qt Charts / QCustomPlot | 跨平台 | 集成在 Qt Widgets,適合 GUI 應用 | 直接用 QLineSeries 添加點 |
| OpenGL / Vulkan | 跨平台 | GPU 加速,學翆曲線陡峭,適合高性能/3D | 頂點著色器計算曲線 |
#include <graphics.h>
#include <math.h>
int main() {
initgraph(600, 600);
setorigin(300, 300); // 設定邏輯原點
setaspectratio(1, -1); // Y軸向上
double a = 100;
for (double t = 0; t <= 2*M_PI; t += 0.01) {
double r = a * (1 - sin(t));
double x = r * cos(t);
double y = r * sin(t);
putpixel((int)x, (int)y, RED);
}
getch();
closegraph();
return 0;
}
知乎大神 Milo Yip 的經典回答,系統講解了從軟件光柵化到現代 GPU 渲染管線的繪圖原理:
如何用代碼畫出函數圖像?