
正文
c语言三维坐标函数画图 c语言 坐标
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
怎样用c语言画函数曲线图
/*请不要看完了就走人*/
/*帮帮忙,采纳我的答案!*/
#includestdio.h
#includemath.h
main(){
double
y;
int
x,m,i;
printf("y=sin(x)
[0x2*pi]\n");
for(y=1;y=-1;y-=0.1){
if(y=0){
m=asin(y)*10;
for(x=1;xm;x++)printf("
");
printf("*",m);
for(;x31-m;x++)printf("
");
printf("*\n");}
else{
m=-1*asin(y)*10;
for(i=0;i32;i++)printf("
");
for(x=1;xm;x++)printf("
");
printf("*",m);
for(;x31-m;x++)printf("
");
printf("*\n",m);
}
}
}
相关问答
Q1: C语言如何画图
framebuffer(帧缓冲)。
帧的最低数量为24(人肉眼可见)(低于24则感觉到画面不流畅)。
显卡与帧的关系:由cpu调节其数据传输速率来输出其三基色的配比。
三基色:RGB(红绿蓝)。
在没有桌面和图形文件的系统界面,可以通过C语言的编程来实现在黑色背景上画图!
用下面的代码,在需要的地方(有注释)适当修改,就能画出自己喜欢的图形!
PS:同样要编译运行后才能出效果。
#include stdio.h
#include sys/mman.h
#include fcntl.h
#include linux/fb.h
#include stdlib.h
#define RGB888(r,g,b) ((r 0xff) 16 | (g 0xff) 8 | (b 0xff))
#define RGB565(r,g,b) ((r 0x1f) 11 | (g 0x3f) 5 | (b 0x1f))
int main()
{
int fd = open("/dev/fb0", O_RDWR);
if(fd 0){
perror("open err. \n");
exit(EXIT_FAILURE);
printf("xres: %d\n", info.xres);
printf("yres: %d\n", info.yres);
printf("bits_per_pixel: %d\n", info.bits_per_pixel);
size_t len = info.xres*info.yres*info.bits_per_pixel 3;
unsigned long* addr = NULL;
addr = mmap(NULL, len, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
if(addr == (void*)-1){
perror("mmap err. \n");
Q2: 用c语言写程序,此程序能画出来函数y=2x+5的曲线图形。
此题把数学问题转化为用C语言描述即可c语言三维坐标函数画图,很多画图问题可以使用这种方法。
假设屏幕左上角为坐标轴原点
也就是把c语言三维坐标函数画图我们c语言三维坐标函数画图的屏幕当作第一象限时,代码如下
#include stdio.h
#define MAX 30 // 选定曲线要显示c语言三维坐标函数画图的范围,因为一次函数是一条直线,所以它c语言三维坐标函数画图的显示范围无穷
int main()
{
int x, y;
for (y = 0; y MAX; y++) // 因为我们的光标是向下,向右增长。这里设定y为纵坐标
{
for (x = 0; x MAX; x++)
{
if (y == 2 * x + 5)
{
printf("*");
}
else
{
printf(" "); // 空格,不满足y=2x+5的点
}
}
printf("\n"); // x轴已经到显示范围,所以需要换行。
}
return 0;
}
2. 更换坐标轴原点显示
#include stdio.h
#define MAX 30 // 选定曲线要显示的范围,因为一次函数是一条直线,所以它的显示范围无穷
int main()
{
int x, y;
for (y = 30; y = 0; y--)
{
for (x = 0; x MAX; x++)
{
if (y == 2 * x + 5)
{
printf("*");
}
else
{
printf(" "); // 空格,不满足y=2x+5的点
}
}
printf("\n"); // x轴已经到显示范围,所以需要换行。
}
return 0;
}
Q3: 求一个纯C语言绘图函数
SDL可以做到。给c语言三维坐标函数画图你贴个源码c语言三维坐标函数画图:
#includestdio.h
#includestdlib.h
#includeunistd.h
#includeSDL/SDL.h
#includeSDL/SDL_image.h
//函数声明
int Init(void);
SDL_Surface *createScreen(int width,int height,int bpp,Uint32 flags);
void destroyScreen(SDL_Surface *screen);
SDL_Surface *loadImageBMP(char *filename);
void loadImage(char *filename,SDL_Surface *screen,int xPos,int yPos);
SDL_Surface *screen;
SDL_Surface *image_handler;
char buffer[10];
int main(int argc,char *argv[])
{
int height=640,width=480;
int bpp=8;
Init();
screen = createScreen(width,height,bpp,SDL_SWSURFACE);
loadImage("./wuyajie.bmp",screen,width/2,height/4);
read(STDIN_FILENO,buffer,1);
destroyScreen(screen);
SDL_Quit();
return 0;
}
int Init(void)
{
if(SDL_Init(SDL_INIT_VIDEO)==-1)
{
fprintf(stderr,"SDL Init Error:%s\n",SDL_GetError());
exit(-1);
}
return 0;
}
/*
创建屏幕c语言三维坐标函数画图,并将屏幕设置为640x480大小
*/
SDL_Surface *createScreen(int width,int height,int bpp,Uint32 flags)
{
SDL_Surface *screen;
if((screen = SDL_SetVideoMode(width,height,bpp,flags))==NULL)
{
fprintf(stderr,"Could not create a screen:%s\n",SDL_GetError());
exit(-1);
}
return screen;
}
/*
加载图片
*/
void loadImage(char *filename,SDL_Surface *screen,int xPos,int yPos)
{
SDL_Surface *image;
SDL_Rect dest;
image = SDL_LoadBMP(filename);
if ( image == NULL ){
fprintf(stderr, "无法加载 %s: %s\n", filename, SDL_GetError());
exit(-1);
}
dest.x = xPos;
dest.y = yPos;
dest.w = image-w;
dest.h = image-h;
SDL_BlitSurface(image,NULL,screen,dest);
SDL_UpdateRects(screen,1,dest);
}
void destroyScreen(SDL_Surface * screen)
{
SDL_FreeSurface(screen);
}
Q4: C语言处理TXT里面的三维坐标问题!
int YuanZhu(double d[])
{
double x = d[0], y = d[1], z = d[2];
if (z 20 z 10) {
double xx = x - 10;
double yy = y - 10;
xx *= xx;
yy *= yy;
if (xx + yy 100)
return 1;
else
return 0;
} else
return 0;
}
double prev[351][3];
double curr[351][3];
#include stdio.h
void readone(FILE* fp, double d[][3])
{
int i, j;
for(i = 0; i 351; ++i)
for(j = 0; j 3; ++j)
fscanf(fp, "%lf", d[i][j]);
}
#include stdlib.h
#include string.h
void switchbuffer()
{
memcpy(prev, curr, 351 * 3 * sizeof(double));
}
int main()
{
double x, y, z;
int cnt = 0;
int i, j;
FILE* fp = fopen("wtf.txt", "r");
readone(fp, prev);
for(i = 1; i 1200; ++i) {
readone(fp, curr);
for(j = 0; j 351; ++j)
if(YuanZhu(prev[j]) != YuanZhu(curr[j]))
++cnt;
switchbuffer();
}
fclose(fp);
printf("%d\n", cnt);
return 0;
}
原文件也没拿来,所以没调试。
Q5: 如何用C语言实现三维
最简单的做法是在结构体里存函数指针c语言三维坐标函数画图,然后初始化结构体的时候将函数的地址赋值给它。
复杂一点的c语言三维坐标函数画图,就得按照c++的多态原理c语言三维坐标函数画图,用虚函数表(其实就是能记录函数名对应的函数地址就好)记录每种结构体的成员函数地址c语言三维坐标函数画图,然后每个结构体里多存一个虚函数表的地址。。。然后调用函数的时候查到函数地址强转成函数类型然后调用。。。这个可以自己研究一下c++的虚函数表机制。
c语言三维坐标函数画图的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言 坐标、c语言三维坐标函数画图的信息别忘了在本站进行查找喔。







