PIT绘制椭圆代码

介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

import numpy as np
from PIL import Image
 
array = np.ndarray((660, 660, 3), np.uint8)
array[:, :, 0] = 255
array[:, :, 1] = 255
array[:, :, 2] = 255
 
for i in range(0,660,1):
  array[i,330]=(0,0,0)
for j in range(0,660,1):
  array[330,j]=(0,0,0)
  
def draw(x,y):
  array[x+330,y+330]=(255,0,0)
  array[x+330,330-y]=(255,0,0)
  array[330-x,330-y]=(255,0,0)
  array[330-x,y+330]=(255,0,0)

def MidpointEllipse(a,b):
  x=0
  y=b
  d1=b*b+a*a*(-b+0.25)
  draw(x,y)
  while(b*b*(x+1)<a*a*(y-0.5)):
    if(d1<0):
      d1+=b*b*(2*x+3)
    else:
      d1+=(b*b*(2*x+3)+a*a*(-2*y+2))
      y-=1
    x += 1
    draw(x,y)
  d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b
  while(y>0):
    if(d2<0):
      d2+=b*b*(2*x+2)+a*a*(-2*y+3)
      x+=1
      y-=1
    else:
      d2+=a*a*(-2*y+3)
      y-=1
    draw(x,y)

def main():
  MidpointEllipse(100, 150) 
  image = Image.fromarray(array)
  image.show() 

if __name__ == "__main__":
  main()
 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值