Visual C++绘制金刚石图案

一笔绘制金刚石图案
本文介绍了一种使用C++及EasyX图形库实现的一笔绘制金刚石图案的方法。该方法适用于n大于等于5且为奇数的情况,通过计算顶点坐标并连结形成图案。

多笔绘制:

//编译环境:Visual C++ 6.0,EasyX_20190219(beta)
#include<graphics.h>
#include<math.h>
#include<conio.h>
int main()
{
  initgraph(640,480);
  setcolor(RED);
  int n=7,i,j;
  double t=3.14159*2/n,r=150.0; 
  double x0=300.0,y0=200.0,x[7],y[7];
  for(i=0;i<n;i++)   
  { 
	  x[i]=r*cos(i*t)+x0;     
	  y[i]=r*sin(i*t)+y0;   
  } 
   for(i=0;i<=n-2;i++)     
	   for(j=i+1;j<=n-1;j++)         
		   line(x[i],y[i],x[j],y[j]);  

  _getch();
  closegraph();
  return 0;
}

n=5时,效果如下:
在这里插入图片描述
一笔绘制

//功能:一笔绘制金刚石图案(n>=5,n是奇数)
//编译环境:Visual C++ 6.0,EasyX_20190219(beta) 
#include<graphics.h>
#include<math.h>
#include<conio.h>
int main()
{
  initgraph(640,480);
  setcolor(RED);
  int n=7,i,j;
  double t=3.14159*2/n,r=150.0; 
  double x0=300.0,y0=200.0,x[7],y[7];
  for(i=0;i<n;i++)   
  { 
	  x[i]=r*cos(i*t)+x0;     
	  y[i]=r*sin(i*t)+y0;   
  } 
   for(i=1;i<=n/2;i++)  
	   
	   for(j=0;j<n;j++)  
	   {
		   if((j+i)>=n) 
		   {
			  int r=(j+i)%n;
              line(x[j],y[j],x[r],y[r]);
		   }
		   else
		   line(x[j],y[j],x[j+i],y[j+i]); 
	   }
  _getch();
  closegraph();
  return 0;
}

n=20时,效果如下:
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值