두 점을 통해 원 그리기
10770 단어 Python
초등학생 때 나침반에서 놀던 거.
조개껍질처럼 낙서하는 것을 기억해라.
python으로 그림을 그렸어요.
import matplotlib.pyplot as plt
import numpy as np
def cir_th2p(x,y,p1,p2,r,inv=False):
def cal_center(p,q,r):
pt3 = (p + q) * 0.5
r =r**2
l1 = (q[0] - pt3[0])**2 + (q[1] - pt3[1])**2
d = np.sqrt(r / l1 - 1.0)
dy,dx= d * (q - pt3)
pc1 = [pt3[0] + dx, pt3[1] - dy]
pc2 = [pt3[0] - dx, pt3[1] + dy]
return pc1,pc2
def cir_eq(x,y,a,b,r):
return (x-a)**2+(y-b)**2-r**2
r=float(r)
p1=np.array(p1).astype("float")
p2=np.array(p2).astype("float")
center=cal_center(p1,p2,r)
if inv:center=center[0]
else:center=center[1]
return cir_eq(x,y,center[0],center[1],r)
delta = 0.1
xrange = np.arange(-3, 3, delta)
yrange = np.arange(-3, 3, delta)
X, Y = np.meshgrid(xrange,yrange)
x=np.logspace(np.log10(1) , np.log10(5) , num=5)
for i in x:
plt.contour(X, Y, cir_th2p(X,Y,(-0.5,-0.5),(1,0),i),[0])
plt.contour(X, Y, cir_th2p(X,Y,(-0.5,-0.5),(1,0),i,inv=True),[0])
plt.gca().set_aspect('equal', adjustable='box')
plt.savefig("c.pdf",bbox_inches='tight')
공책 cir_th2p(x,y,p1,p2,r,inv=False):
import matplotlib.pyplot as plt
import numpy as np
def cir_th2p(x,y,p1,p2,r,inv=False):
def cal_center(p,q,r):
pt3 = (p + q) * 0.5
r =r**2
l1 = (q[0] - pt3[0])**2 + (q[1] - pt3[1])**2
d = np.sqrt(r / l1 - 1.0)
dy,dx= d * (q - pt3)
pc1 = [pt3[0] + dx, pt3[1] - dy]
pc2 = [pt3[0] - dx, pt3[1] + dy]
return pc1,pc2
def cir_eq(x,y,a,b,r):
return (x-a)**2+(y-b)**2-r**2
r=float(r)
p1=np.array(p1).astype("float")
p2=np.array(p2).astype("float")
center=cal_center(p1,p2,r)
if inv:center=center[0]
else:center=center[1]
return cir_eq(x,y,center[0],center[1],r)
delta = 0.1
xrange = np.arange(-3, 3, delta)
yrange = np.arange(-3, 3, delta)
X, Y = np.meshgrid(xrange,yrange)
x=np.logspace(np.log10(1) , np.log10(5) , num=5)
for i in x:
plt.contour(X, Y, cir_th2p(X,Y,(-0.5,-0.5),(1,0),i),[0])
plt.contour(X, Y, cir_th2p(X,Y,(-0.5,-0.5),(1,0),i,inv=True),[0])
plt.gca().set_aspect('equal', adjustable='box')
plt.savefig("c.pdf",bbox_inches='tight')
cir_th2p(x,y,p1,p2,r,inv=False):
x
x 메쉬y
y의 격자p1
첫 번째 점(x, y)의 좌표로p2
두 번째r
반경inv
반전정리 좀 하려고요.
Reference
이 문제에 관하여(두 점을 통해 원 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sammrai/items/d03a7bea67d257dac527텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)