用C语言编制曲线轨迹动画 急~

要求:画一正八边形,如下图,再画一个小圆使在其正八边形边上移动。八边形的大小和小圆移动的速度由键盘输入。并将输入的数据送文件保存。按回车键程序结束。(功能延伸:改变数据文... 要求:画一正八边形,如下图,再画一个小圆使在其正八边形边上移动。八边形的大小和小圆移动的速度由键盘输入。并将输入的数据送文件保存。按回车键程序结束。(功能延伸:改变数据文件的内容后,再根据数据文件里的数据绘制正八边形) 展开
 我来答
兴谆炊o
推荐于2016-01-29 · TA获得超过6985个赞
知道大有可为答主
回答量:2388
采纳率:0%
帮助的人:3728万
展开全部
TurboC 一个正八边形,一个小圆,沿八边形移动

#include <dos.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>

void polygon(int n, int x, int y, int r, int color, float arg, int fillstyle);
void draw8(int x[], int y[], int color);
void movecircle(void);
void getpoint(float *x, float *y, float k1, float b1, float k2, float b2);

float x1[9], y1[9];

int direction = 1;
float argstep = 1;
float px, py;
float stararg = 337.5;
int x, y;
int r;

int main()
{
int GraphDriver;
int GraphMode;
float arg = 292.5;
int a, b;
int x2, y2, x3, y3;
int n = 8;
long delay;
float degree;
GraphDriver = DETECT;
initgraph(&GraphDriver, &GraphMode, "");

x = 300;
y = 200;
r = 80;
degree = atan(1) / 45;

polygon(n, x, y, r, 12, arg, 0);

px = x1[1];
py = y1[1];

px = x + r * cos(atan(1) / 45 * stararg);
py = y + r * sin(atan(1) / 45 * stararg);

circle(px, py, 8);

while(1)
{
for (delay = 0; delay < 2000000; delay++)
;
setcolor(0);
circle(px, py, 8);
draw8(x1, y1, 12);
stararg += argstep;
movecircle();
circle(px, py, 8);

while(kbhit())
{
a = getch();
if (a == 27)
{
closegraph();
return 0;
}
if (a == 0)
{
b = getch();
}
}
}
}

void polygon(int n, int x, int y, int r, int color, float arg, int fillstyle)
{
double pi;
int i;

setcolor(color);

pi = atan(1) * 4;
arg = atan(1) / 45 * arg;
x1[1] = x + r * cos(2 * pi / n + arg);
y1[1] = y + r * sin(2 * pi / n + arg);
moveto(x1[1], y1[1]);
for (i = 2; i <= n; i++)
{
x1[i] = x + r * cos(2 * pi * i / n + arg);
y1[i] = y + r * sin(2 * pi * i / n + arg);
lineto(x1[i], y1[i]);
}
lineto(x1[1], y1[1]);

if (fillstyle != 0)
{
setfillstyle(SOLID_FILL, color);
floodfill(x, y, color);
}
}

void draw8(int x[], int y[], int color)
{
int i;

setcolor(color);
moveto(x1[1], y1[1]);
for (i = 2; i <= 8; i++)
{
x1[i];
y1[i];
lineto(x1[i], y1[i]);
}
lineto(x1[1], y1[1]);
}

void getpoint(float *x, float *y, float k1, float b1, float k2, float b2)
{
*x = (b1 - b2) / (k2 - k1);
*y = k1 * *x + b1;
}

void movecircle(void)
{
float pointx, pointy;
stararg += argstep;

if (stararg > 360)
stararg -= 360;
if (stararg < 0)
stararg = -stararg;

if (stararg >= 337.5 || stararg <= 22.5)
{
px = x1[1];
py = -tan(atan(1) / 45 * stararg) * (x - px) + y;
}
else if (stararg > 22.5 && stararg <= 67.5)
{
getpoint(&pointx, &pointy,
(y1[2] - y1[3]) / (x1[2] - x1[3]),
(y1[2] - y1[3]) / (x1[2] - x1[3]) * (-x1[2]) + y1[2],
tan(atan(1) / 45 * stararg),
y - x * tan(atan(1) / 45 * stararg));
px = pointx;
py = pointy;
}
else if (stararg > 67.5 && stararg <= 112.5)
{
py = y1[3];
if (stararg == 90)
{
px = x;
}
else
{
px = x - (y - py) / (tan(atan(1) / 45 * stararg));
}
}
else if (stararg > 112.5 && stararg <= 157.5)
{
getpoint(&pointx, &pointy,
(y1[4] - y1[5]) / (x1[4] - x1[5]),
(y1[4] - y1[5]) / (x1[4] - x1[5]) * (-x1[4]) + y1[4],
tan(atan(1) / 45 * stararg),
y - x * tan(atan(1) / 45 * stararg));
px = pointx;
py = pointy;
}
else if (stararg > 157.5 && stararg <= 202.5)
{
px = x1[5];
py = -tan(atan(1) / 45 * stararg) * (x - px) + y;
}
else if (stararg > 202.5 && stararg <= 247.5)
{
getpoint(&pointx, &pointy,
(y1[6] - y1[7]) / (x1[6] - x1[7]),
(y1[6] - y1[7]) / (x1[6] - x1[7]) * (-x1[6]) + y1[6],
tan(atan(1) / 45 * stararg),
y - x * tan(atan(1) / 45 * stararg));
px = pointx;
py = pointy;
}
else if (stararg > 247.5 && stararg <= 292.5)
{
py = y1[7];
if (stararg == 90)
{
px = x;
}
else
{
px = x - (y - py) / (tan(atan(1) / 45 * stararg));
}
}
else if (stararg > 292.5 && stararg <= 337.5)
{
getpoint(&pointx, &pointy,
(y1[8] - y1[1]) / (x1[8] - x1[1]),
(y1[8] - y1[1]) / (x1[8] - x1[1]) * (-x1[8]) + y1[8],
tan(atan(1) / 45 * stararg),
y - x * tan(atan(1) / 45 * stararg));
px = pointx;
py = pointy;
}

circle(px, py, 8);
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
励雅鲆0er
2009-06-08
知道答主
回答量:37
采纳率:0%
帮助的人:50.3万
展开全部
很简单的绘图程序,你先学一下如何绘图
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式