sin,cosまたはピタゴラスの定理を使います。
今回はそこからアナログ時計作成。
3D空間への丸の投影をしてみます。
#1,#2 丸
#3,#4,#5 時間
#6 アナログ時計
#7 空間に丸
すでに基礎ではない気もしますが...
#7は鬼級
前回と同じく必要なキーワード
前回とかぶるものは入れてません。
#1 sin cos 円(python不要 画像検索)
#2 べき乗 **
#3 時刻
#4 置き換え 分割
#7 タプル型
#7 座標変換 投影(python不要 画像検索)
今回はそこからアナログ時計作成。
3D空間への丸の投影をしてみます。
#1,#2 丸
#3,#4,#5 時間
#6 アナログ時計
#7 空間に丸
すでに基礎ではない気もしますが...
#7は鬼級
前回と同じく必要なキーワード
前回とかぶるものは入れてません。
#1 sin cos 円(python不要 画像検索)
#2 べき乗 **
#3 時刻
#4 置き換え 分割
#7 タプル型
#7 座標変換 投影(python不要 画像検索)
#1 import math def put(x,y,st): if 0>y or y>len(sc)-1 or 0>x or x>len(sc[0])-1:return sc[y]=sc[y][:x]+st+sc[y][x+1:] def circle(cx,cy,r,st): for th in range(360): rd=th*math.pi/180 put(int(cx+r*math.sin(rd)),int(cy+r*math.cos(rd)),st) sc=[" "*40 for i in range(40)] for i in range(30): circle(20,20,i,chr(i+50)) for s in sc: print(s) #2 def put(x,y,st): if 0>y or y>len(sc)-1 or 0>x or x>len(sc[0])-1:return sc[y]=sc[y][:x]+st+sc[y][x+1:] def circle(cx,cy,r,st): for x in range(40): for y in range(46): if r*r>(x-cx)**2+(y-cy)**2: put(x,int(y*0.5),st) sc=[" "*40 for i in range(23)] circle(10,10,8,"@") circle(25,25,17,"o") circle(5,35,12,"+") for s in sc: print(s) #3 import datetime now = datetime.datetime.now() print(str(now)) #4 import datetime #2018-06-23 02:30:59.561902 now = str(datetime.datetime.now()) now=now.replace(" ","-") y,m,d,o=now.split("-") print(y+"年"+m+"月"+d+"日") #5 import datetime #2018-06-23 02:30:59.561902 now = str(datetime.datetime.now()) now=now.replace(" ",":") now=now.replace(".",":") _,h,m,s,_=now.split(":") print(h+"時"+m+"分"+s+"秒") #6 import math import datetime #2018-06-23 02:30:59.561902 def put(x,y,st): if 0>y or y>len(sc)-1 or 0>x or x>len(sc[0])-1:return sc[y]=sc[y][:x]+st+sc[y][x+1:] def arrow(cx,cy,r,th,st): rd=th*math.pi/180-math.pi/2 for i in range(r): put(int(cx+i*math.cos(rd)),int((cy+i*math.sin(rd))*0.6),st) def getTime(): now = str(datetime.datetime.now()) now=now.replace(" ",":") now=now.replace(".",":") _,h,m,s,_=now.split(":") print(":".join([h,m,s])) return [int(h)*30,int(m)*6,int(s)*6] sc=[" "*40 for i in range(22)] r=10 for i in getTime(): arrow(20,18,r,i,"*") r+=5 for s in sc: print(s) #7 import math import random def put(x,y,st): if 0>y or y>len(sc)-1 or 0>x or x>len(sc[0])-1:return sc[y]=sc[y][:x]+st+sc[y][x+1:] def conv3d2d(p,st): x,y,z=p ez=50 rx=x*ez/(ez+z)+20 ry=y*ez/(ez+z)+20 put (int(rx),int(ry*0.5),st) def dataset(): r=[] for i in range(12): r.append((1000*math.sin(i*math.pi/6),1000*math.cos(i*math.pi/6),0)) r.extend(shift(0,0,2000,r)) return r def shift(sx,sy,sz,a): r=[] for i in a: x,y,z=i r.append((sx+x,sy+y,sz+z)) return r rnd=random.randint sc=[" "*40 for i in range(23)] for i in range(5): c="+*o@x"[i] for p in shift(rnd(-2500,2500),rnd(-2500,2500),rnd(8000,30000),dataset()): conv3d2d(p,c) for s in sc: print(s)