本實例使用 Turbo C 的 graphics.h 庫,在圓周上取等分點,兩兩連線繪製正多邊形內部所有對角線,形成優美幾何圖案。
moveto/lineto)。// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include "graphics.h"
#include "math.h"
#include "dos.h"
#include "conio.h"
#include "stdlib.h"
#include "stdio.h"
#include "stdarg.h"
#define MAXPTS 15
#define PI 3.1415926
struct PTS { int x, y; };
double AspectRatio = 0.85;
void LineToDemo(void) {
struct viewporttype vp;
struct PTS points[MAXPTS];
int i, j, h, w, xcenter, ycenter;
int radius, angle, step;
double rads;
getviewsettings(&vp);
h = vp.bottom - vp.top;
w = vp.right - vp.left;
xcenter = w / 2;
ycenter = h / 2;
radius = (h - 30) / (AspectRatio * 2);
step = 360 / MAXPTS;
angle = 0;
for (i = 0; i < MAXPTS; ++i) {
rads = (double)angle * PI / 180.0;
points[i].x = xcenter + (int)(cos(rads) * radius);
points[i].y = ycenter - (int)(sin(rads) * radius * AspectRatio);
angle += step;
}
circle(xcenter, ycenter, radius);
for (i = 0; i < MAXPTS; ++i)
for (j = i; j < MAXPTS; ++j) {
moveto(points[i].x, points[i].y);
lineto(points[j].x, points[j].y);
}
}
int main() {
int driver = CGA, mode = CGAC0;
initgraph(&driver, &mode, "");
setcolor(3);
setbkcolor(GREEN);
LineToDemo();
return 0;
}
僅能在 Turbo C / DOSBox 等 16 位實模式環境下運行,現代 IDE(VS Code, Visual Studio, GCC)無法直接編譯運行,需移植至 SDL、OpenGL 或現代圖形庫。