110.绘制彩色抛物线

简介: 110.绘制彩色抛物线
#include <graphics.h>
#include <math.h>
/*画抛物线的子函数spara()*/
/*row,col代表抛物线顶点的坐标,x1,y1是抛物线起点相对顶点的坐标*/
/*t为抛物线绕顶点旋转的角度*/
void spara(row,col,x1,y1,t,color)  
int row,col,x1,y1,t,color;
{   
  int n,dx,dy,x,y,x2,y2;
  double ct,st;
  double f,fx,fy,b,a,rx;
  st=(double)t*3.1415926/180.0;   /*把角度转化为弧度*/
  ct=cos(st); st=sin(st);
  n=abs(x1)+abs(y1); n=n+n;     
  dx=1; dy=1; f=0.0;        /*初始化工作*/
  if (x1>0) dx=-1;
  if (y1>0) dy=-1;
  a=y1; b=x1; b=b*b;
  rx=-a-a; fx=2.0*x1*dx+1.0;
  fx=-a*fx; fy=b;
  if (dy<0) fy=-fy;
  x=x1; y=y1;
  x2=(double)x*ct-(double)y*st+2000.5;
  y2=(double)x*st+(double)y*ct+2000.5;
  x2=x2-2000; y2=y2-2000;
  putpixel(row-y2,col+x2,color);
  while (n>0)           /*具体的运算法则见上面的公式*/
    { n=n-1;
    if (f>=0.0)
    { x=x+dx;
      x2=(double)x*ct-(double)y*st+2000.5;
      y2=(double)x*st+(double)y*ct+2000.5;
      x2=x2-2000; y2=y2-2000;
      putpixel(row-y2,col+x2,color);
      if (fx>0.0) f=f-fx;
      else f=f+fx;
      fx=fx+rx;
      if (fx==0.0||(fx<0.0&&fx-rx>0.0)||(fx>0.0&&fx-rx<0.0))
        { dy=-dy; fy=-fy; f=-f;}
    }
  else
    { y=y+dy;
      x2=(double)x*ct-(double)y*st+2000.5;
      y2=(double)x*st+(double)y*ct+2000.5;
      x2=x2-2000; y2=y2-2000;
      putpixel(row-y2,col+x2,color);
      if (fy>0.0) f=f+fy;
      else f=f-fy;
    }
    }
  return;
}
void main()
{
  int i,color;
  int gdriver = DETECT , gmode;
  color = 1;
  registerbgidriver(EGAVGA_driver);
  initgraph(&gdriver,&gmode,"..\\bgi");     /*初始化图形界面*/
  for (i=1;i<=4;i++)              /*先画出四个互成90度的抛物线*/
  {
    spara(200,200,100,100,i*90,color);
    color+=3;
    getch();
  }
  color = 1;
  for (i=1;i<=11;i++)             /*再画12个互成30度的抛物线*/
  { 
    spara(200,200,100,100,i*30,color);
    color++;
  }
  getch();
  closegraph();
  return;
}
相关文章
|
图形学
浅谈Unity之ShaderGraph-等高线和高程渐变设色
ShaderGraph实现等高线和高程渐变设色
|
7月前
|
前端开发
canvas系列教程02——圆、弧线、圆角矩形、曲线(气泡、心形、N叶草)、扇形
canvas系列教程02——圆、弧线、圆角矩形、曲线(气泡、心形、N叶草)、扇形
103 0
|
9月前
|
计算机视觉
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
115 0
|
计算机视觉
五、OpenCV绘制线、矩形、圆等基本几何形状
通过javaOpenCV中的Imgproc函数进行简单几何图形的绘制
146 0
五、OpenCV绘制线、矩形、圆等基本几何形状
|
C# 图形学
C#之深入理解GDI+绘制圆弧及圆角矩形等比缩放的绘制
GDI+中对于圆弧的绘制,是以给定的长方形(Rectangle`结构)为边界绘制的椭圆的一部分形成的圆弧。绘制的圆弧的中心为长方形内切椭圆的圆心(如果是正方形,则正方形的...
681 0
C#之深入理解GDI+绘制圆弧及圆角矩形等比缩放的绘制
|
前端开发 JavaScript 数据可视化
用Canvas实现简单画图(线、三角形、矩形、圆)
👋因为在B站看到一个小demo是基于canvas写的,非常喜欢,然后上掘金大数据又给我推了 《Canvas 从入门到劝朋友放弃(图解版)》,就像上手一下canvas,本来不想写笔记的,因为《Canvas 从入门到劝朋友放弃(图解版)》自己看了一下挺全的,但本着输入要有输出,所以就有了这篇文章
258 0
|
算法 计算机视觉 Python
霍夫变换绘制出图案里的直线
霍夫变换绘制出图案里的直线
|
开发者 异构计算
3D引擎为什么使用三角形绘制曲面
这个问题是我第一次接触3D开发就有的疑问,最近在看《游戏引擎架构》(Game Engine Architecture),在书中找到了答案。   三角网格(Triangle Mesh),游戏开发者会使用三角形网格来建模。
2467 0