发布网友
共2个回答
热心网友
你这个问题没说清楚吧,y=x^3是一条曲线,奇函数,关于原点中心对称,在x轴正半轴是一个凹函数,递增。不知道你还想知道什么相关的属性
热心网友
turboc 演示 y=x三次方 曲线
#include <dos.h>
#include <fcntl.h>
#include <io.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define TEXT_BIG_CURSOR 0
#define TEXT_NORMAL_CURSOR 7
typedef struct /*16Mrgb像素类型*/
{
unsigned char b;
unsigned char g;
unsigned char r;
}rgb16M;
float MulDiv(float Number, float Numerator, float Denominator);
void getpixel(int x, int y, rgb16M *color);
void line(int startx, int starty, int endx, int endy, rgb16M color);
void fillbox_(int startx, int starty, int endx, int endy, rgb16M color);
static int g_lastpage = 50;
unsigned char set_SVGA_mode(int vmode)
{union REGS r;
r.x.ax=0x4f02;
r.x.bx=vmode;
int86(0x10,&r,&r);
return(r.h.ah);
}
void hide_text_cursor(void)
{union REGS r;
r.h.ah=1;
r.h.ch=32;
int86(0x10,&r,&r);
}
void selectpage(register char page)
{union REGS r;
r.x.ax=0x4f05;
r.x.bx=0;
r.x.dx=page;
int86(0x10,&r,&r);
}
void show_text_cursor(char size)
{union REGS r;
r.h.ah=1;
r.h.cl=size;
r.h.ch=7;
int86(0x10,&r,&r);
}
unsigned int get_SVGA_mode()
{union REGS r;
r.x.ax=0x4f03;
int86(0x10,&r,&r);
return(r.x.bx);
}
unsigned int Vmode=0;
void init16M()
{Vmode=get_SVGA_mode();
hide_text_cursor();
if(set_SVGA_mode(0x118))
{printf("\nSorry, Your graphics driver does not supplied.\n");
show_text_cursor(TEXT_NORMAL_CURSOR);
exit(0);
}
}
void close16M()
{
union REGS r;
r.h.ah = 0;
r.h.al = 3;
int86(0x10, &r, &r);
r.h.ah = 0x05;
r.h.al = 0;
int86(0x10, &r, &r);
}
void putpoint16M(int x, int y, rgb16M color)
{
static int nowpage = 0, lastpage = 50;
static long temp;
unsigned char far *p = (unsigned char *)0xa0000000;
temp = y;
x <<= 2;
temp <<= 12;
temp += x;
nowpage = temp >> 16;
temp &= 0xffff;
if (nowpage != g_lastpage)
{
static union REGS r;
r.x.ax = 0x4f05;
r.x.bx = 0;
r.x.dx = nowpage;
int86(0x10, &r, &r);
g_lastpage = nowpage;
}
*((rgb16M *)(p + temp)) = color;
}
void line(int startx, int starty, int endx, int endy, rgb16M color)
{
register int t, distance;
int x = 0, y = 0;
int delta_x, delta_y;
int incx, incy;
delta_x = endx-startx;
delta_y = endy-starty;
if (delta_x > 0) incx = 1;
else if(delta_x == 0) incx = 0;
else incx = -1;
if(delta_y > 0) incy = 1;
else if (delta_y == 0) incy = 0;
else incy = -1;
if (delta_x < 0) delta_x = -delta_x;
if (delta_y < 0) delta_y = -delta_y;
if(delta_x > delta_y) distance = delta_x;
else distance = delta_y;
for (t = 0; t <= distance + 1; t++){
putpoint16M(startx, starty, color);
x += delta_x;
y += delta_y;
if (x > distance){
x -= distance;
startx += incx;
}
if(y > distance){
y -= distance;
starty += incy;
}
}
}
void fillbox_(int startx, int starty, int endx, int endy, rgb16M color)
{
int i, j;
if (startx > endx)
{
i = startx;
startx = endx;
endx = i;
}
if (starty > endy)
{
i = starty;
starty = endy;
endy = i;
}
if (startx < 0)
startx = 0;
if (endx > 1023)
endx = 1023;
if (starty < 0)
starty = 0;
else if (endy > 767)
endy = 767;
for (j = starty; j <= endy; j++)
for (i = startx; i <= endx; i++)
putpoint16M(i, j, color);
}
int main(void)
{
int i, j;
float x, y, x1, y1;
rgb16M color;
init16M();
color.r = 255;
color.g = 255;
color.b = 255;
fillbox_(0, 0, 1023, 767, color);
color.r = 127;
color.g = 127;
color.b = 127;
line(0, 384, 1023, 384, color);
line(512, 0, 512, 767, color);
x1 = -6;
y1 = x1 * x1 * x1;
color.r = 255;
for (x = -6; x <= 6; x += 0.001)
{
y = x * x * x;
line(512 + 50 * x, 384 - 3 * y, 512 + 50 * x1, 384 - 3 * y1, color);
y1 = y;
x1 = x;
}
getch();
close16M();
return 0;
}