编一个程序,画出以下抛物线
①y=2x^2 ②y=2x^2-1 ③y=2(x-1)^2+1 ④2(x+1)^2-1
运行结果:
不考虑效率的话很简单,直接上代码:
#include "pch.h"
#include <iostream>
#include"graphics.h"
void zbz(int x) {
line(x-50,350, x+50, 350);
line(x, 250, x, 370);
}
void pw1() {
double x = 0, y = 0;
zbz(900);
for (int i = 0; i < 100; i++) {
if (i <2) {
y = 0.05 * x * x;
putpixel((int)x + 900, -((int)y) + 350, WHITE);
putpixel(-(int)x + 900, -((int)y) + 350, WHITE);
x += 1;
}
else {
x = sqrt(y /0.05);
putpixel((int )x+900 ,- ((int)y) + 350, WHITE);
putpixel(-(int)x +900, -((int)y) + 350, WHITE);
y++;
}
}
outtextxy(900, 400, '1');
}
void pw2() {
zbz(700);
double x = 0, y = 0;
for (int i = 0; i < 100; i++) {
if (i < 10) {
y = 0.05 * x * x-5;
putpixel((int)x +700, -((int)y) + 350, WHITE);
putpixel(-(int)x + 700, -((int)y) + 350, WHITE);
x += 1;
}
else {
x = sqrt((y +5)/ 0.05);
putpixel((int)x + 700, -((int)y) + 350, WHITE);
putpixel(-(int)x + 700, -((int)y) + 350, WHITE);
y++;
}
}
outtextxy(700,400, '2');
}
void pw3() {
zbz(500);
double x = 0, y = 0;
for (int i = 0; i < 100; i++) {
if (i < 20) {
y = 0.05 * (x-10) * (x - 10)+10;
putpixel((int)x + 500, -((int)y) + 350, WHITE);
// putpixel(-(int)x + 500, -((int)y) + 350, WHITE);
x += 1;
}
else {
x = sqrt((y - 10) / 0.05)+10;
putpixel((int)x + 500, -((int)y) + 350, WHITE);
putpixel(-(int)(x-20) + 500, -((int)y) + 350, WHITE);
y++;
}
}
outtextxy(500, 400, '3');
}
void pw4() {
zbz(300);
double x = -10, y = 0;
for (int i = 0; i < 100; i++) {
if (i <10) {
y = 0.05 *( x +10)*( x +10)-10;
putpixel((int)x + 300, -((int)y) + 350, WHITE);
putpixel(-(int)(x+20) + 300, -((int)y) + 350, WHITE);
x += 1;
}
else {
x = sqrt((y + 10) / 0.05)-10;
putpixel((int)x + 300, -((int)y) + 350, WHITE);
putpixel(-(int)(x+20) +300, -((int)y) + 350, WHITE);
y++;
}
}
outtextxy(300, 400, '4');
}
int main()
{
initgraph(1000,600);
pw1();//抛物线2x^2
pw2();//抛物线2x^2-1
pw3();//抛物线2(x-1)^2+1
pw4();//抛物线2(x+1)^2-1
getchar();
closegraph();
}