Github : https://github.com/bboz/Computational_Geometry
1.Hafta Ders İçeriği
import matplotlib.pyplot as plt
x=[4,0]
y=[0,3]
get_ipython().magic('matplotlib inline')
plt.plot(x,y)
def my_draw_a_vector_from_origin(v):
# from origin to v
plt.axes().set_aspect('equal')
x=[0,v[0]]
y=[0,v[1]]
plt.xlim(-10,15) #sınır değerleri ayarlıyoruz
plt.ylim(-10,15)
plt.plot(x,y)
my_draw_a_vector_from_origin([5,67])
def my_draw_a_vector_from_v_to_w(v,w):
# from origin to v
x=[v[0],w[0]]
y=[v[1],w[1]]
plt.xlim(-10,15) #sınır değerleri ayarlıyoruz
plt.ylim(-10,15) #sınır değerleri ayarlıyoruz
plt.plot(x,y)
my_draw_a_vector_from_v_to_w([5,6],[5,20])
#vektorun bir baska vektor ile skaler carpimi yapıcak
def my_scalar_product(a,b):
return (a[0]*b[0]+a[1]*b[1])
v=[3,4]
w=[4,7]
my_scalar_product(v,w)
#dik durumda iki vektor carpinca sifir gelmeli
v=[0,4]
w=[3,0]
my_scalar_product(v,w)
my_draw_a_vector_from_origin(v)
my_draw_a_vector_from_origin(w)
my_scalar_product(v,w)
my_draw_a_vector_from_v_to_w([5,5],[10,12])
my_draw_a_vector_from_origin([-7,5])
my_draw_a_vector_from_origin([4,3])
my_draw_a_vector_from_origin([-3,4])
my_scalar_product([4,3],[-3,4])
def distance(v,w):
return (((v[0]-w[0])**2) + ((v[1]-w[1])**2))**.5
def my_vector_add(v,w):
return [v[0]+w[0],v[1]+w[1]]
def my_vector_substract(v,w):
return [v[0]-w[0],v[1]-w[1]]
def my_vector_multiply_with_scalar(c,v):
return [c*v[0],c*v[1]]
a=[3,0]
b=[0,4]
print("toplam : ",my_vector_add(a,b))
print("fark : ",my_vector_substract(a,b))
print("5 kati : ",my_vector_multiply_with_scalar(5,b))
print("uzunluk :",distance(a,b))
![]() |
| my_draw_a_vector_from_origin([5,67]) |
![]() |
| my_draw_a_vector_from_v_to_w([5,6],[5,20]) |
2.Hafta Ders İçeriği
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
point1=np.array([0,0,0])
#orjinden geçen x=1 y=-2 z=1 olan bir normal var meshgrid yapısı ile oluşturucaz point-nokta normal-doğru
normal1=np.array([1,-2,1])
point2=np.array([0,-4,0])
normal2=np.array([0,2,-8])
point3=np.array([0,0,1])
normal3=np.array([-4,5,9])
point_test = np.array([1,-1,1])
#np bu listeleri çarpabiliyor , kullanmadan yaparsak hata alırız
normal_test = np.array([1,-2,1])
np.sum(point_test*normal_test)
d1 = -np.sum(point1*normal1) # dot product -- distance
d2 = -np.sum(point2*normal2) # dot product -- distance
d3 = -np.sum(point3*normal3) # dot product -- distance
d1,d2,d3
# 4x+5y+6z+7 -<4>. = d skaler çarpma aradaki işlem
xx,yy=np.meshgrid(range(5),range(5))
xx # 5^3 değeri 125 tane değer geliyor 3 boyutlu
yy
z1 = (-normal1[0]*xx - normal1[1]*yy - d1)*1./normal1[2]
get_ipython().magic('matplotlib inline')
plt3d = plt.figure().gca(projection='3d')
plt3d.plot_surface(xx,yy,z1,color='blue')
# ax+by+cz+d=0 bir doğruysa şu şekilde çevirebiliyoruz z=(-d-ax-by)/c
point_test = np.array([1,-1,1])
#np bu listeleri çarpabiliyor , kullanmadan yaparsak hata alırız
normal_test = np.array([1,-2,1])
np.sum(point_test*normal_test)
d1 = -np.sum(point1*normal1) # dot product -- distance
d2 = -np.sum(point2*normal2) # dot product -- distance
d3 = -np.sum(point3*normal3) # dot product -- distance
d1,d2,d3
# 4x+5y+6z+7 -<4>. = d skaler çarpma aradaki işlem
xx,yy=np.meshgrid(range(5),range(5))
xx # 5^3 değeri 125 tane değer geliyor 3 boyutlu
yy
z1 = (-normal1[0]*xx - normal1[1]*yy - d1)*1./normal1[2]
get_ipython().magic('matplotlib inline')
plt3d = plt.figure().gca(projection='3d')
plt3d.plot_surface(xx,yy,z1,color='blue')
# ax+by+cz+d=0 bir doğruysa şu şekilde çevirebiliyoruz z=(-d-ax-by)/c
# deniyelim çizdirelim
n = 1000
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Plot a helix along the x-axis
theta_max = 8 * np.pi
theta = np.linspace(0, theta_max, n)
x = theta
z = np.sin(theta)
y = np.cos(theta)
ax.plot(x, y, z, 'b', lw=2)
# An line through the centre of the helix
ax.plot((-theta_max*0.2, theta_max * 1.2), (0,0), (0,0), color='k', lw=2)
# sin/cos components of the helix (e.g. electric and magnetic field
# components of a circularly-polarized electromagnetic wave
ax.plot(x, y, 0, color='r', lw=1, alpha=0.5)
ax.plot(x, [0]*n, z, color='m', lw=1, alpha=0.5)
# Remove axis planes, ticks and labels
ax.set_axis_off()
plt.show()
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')
n=1000
thete_max=0*np.pi
theta=np.linspace(0,theta_max,n)
x=np.sin(theta) #theta
y=np.cos(theta)
z=theta
ax.plot(x,y,z,'b',lw=2)
4> 4>
3.Hafta Ders İçeriği
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def draw_my_line(normal_vector,point_on_line):
a=normal_vector[0]
b=normal_vector[1]
c=normal_vector[2]
x_0=point_on_line[0]
y_0=point_on_line[1]
z_0=point_on_line[2]
x=[]
y=[]
z=[]
#x.append(other_point[0])
#y.append(other_point[1])
#z.append(other_point[2])
for t in range(-100,100):
x.append(x_0+t*a)
y.append(y_0+t*b)
z.append(z_0+t*c)
return (x,y,z)
def my_scalar_product(a,b):
#a=[-1,-2,4]
#b=[-2,-5,2]
# a tanspose b ?
a_t_b=a[0]*b[0]+a[1]*b[1]+a[2]*b[2]
return a_t_b
def point_on_line(normal_vector,point_on_line,other_point):
a_x=other_point[0]-point_on_line[0] # otherpoint pointOnLine ikilisi
a_y=other_point[1]-point_on_line[1]
a_z=other_point[2]-point_on_line[2]
b=[a_x,a_y,a_z]
a=normal_vector
c=my_scalar_product(a,b)/my_scalar_product(a,a)
b_x=c*a[0]
b_y=c*a[1]
b_z=c*a[2]
nearest_point_on_line=(b_x,b_y,b_z)
return nearest_point_on_line
get_ipython().run_line_magic('matplotlib', 'notebook')
p=(0,0,0)
n=(1,1,1) #hat üzerinde bir nokta
other_point=[1,1,100]
#bulundugun nokta bekleme noktası
n_p=point_on_line(n,p,other_point)
#neraest point , n_p değeri hat üzerindeki bize en yakın nokta
points=draw_my_line(n,p)
ax=plt.axes(projection='3d')
#ax.plot3D(points[0],points[1],points[2],'red')
#ax.plot3D(3,4,5,'red')
ax.plot3D(points[0],points[1],points[2],'red')
ax.scatter(other_point[0],other_point[1],other_point[2],'*')
ax.scatter(n_p[0],n_p[1],n_p[2],'*')
plt.show()
4.Hafta Ders İçeriği
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def my_product(a,b):
return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]
def my_length_function(a): #gelen vektörün uzunluğunu vericek
return my_product(a,a)**0.5
#düzlemin denklemi ve düzlem üzerindeki noktayı gondericez fonksiyona
def plane_point(plane,point):
plane_normal=[plane[0],plane[1],plane[2]]
d=my_product(plane_normal,point) / my_length_function(plane_normal)
t=(my_product(plane_normal,point))
t=t/my_product(plane_normal,plane_normal)
p_0=[0,0,0]
p_0[0]=point[0]+t*plane[0]
p_0[1]=point[1]+t*plane[1]
p_0[2]=point[2]+t*plane[2]
return d,t,p_0
def plot_planes_lines_points(plane,line_with_two_points,two_points):
plane_normal=[plane[0],plane[1],plane[2]]
d=plane[3]
xx,yy = np.meshgrid(range(-10,20),range(-10,20))
z = (-plane_normal[0] * xx -plane_normal[1] * yy - d)* 1./ plane_normal[2]
plt3d=plt.figure().gca(projection='3d')
plt3d.plot_surface(xx,yy,z,color='red')
point_1=line_with_two_points[0]
point_2=line_with_two_points[1]
points_x=[point_1[0],point_2[0]]
points_y=[point_1[1],point_2[1]]
points_z=[point_1[2],point_2[2]]
plt3d.plot3D(points_x, points_y, points_z)
point_1=two_points[0]
point_2=two_points[1]
points_x=[point_1[0],point_2[0]]
points_y=[point_1[1],point_2[1]]
points_z=[point_1[2],point_2[2]]
plt3d.scatter3D(points_x, points_y, points_z)
plt.show()
%matplotlib notebook
def test():
plane_1=[1,2,3,-6]
point_1=[4,2,10]
#results = plane_point(plane_1,point_1)[2] # 38/kok14 verdi bu bize defterde var
#plane_1=[3,2,6,-6]
#point_1=[1,1,3]
(d,t,p)=plane_point(plane_1,point_1)
plot_planes_lines_points(plane_1,[point_1, p],[point_1, p])
print(d,t,p)
test()
5.Hafta Ders İçeriği
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import math
get_ipython().magic('matplotlib notebook')
n = 1000
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
#plot a helix along the x-axis
theta_max = 8 * np.pi
theta = np.linspace(0, theta_max, n) # 0 dan 8pi ye kadar n tane nokat oluştur
x = np.sin(theta)
y = np.cos(theta)
z = theta
ax.plot(x, y, z, 'b', lw=2)
#ax.set_axis_off()
theta_current = 3 * np.pi/2
#türevini aldık çalıştığımız nokta 3*np.pi/2 olsun dedik ordaki türev x_1,y_1,z_1 vektörü
x_1=math.cos(theta_current)
#bunlar ordaki teğet olan vektörün büyüklüğü
y_1=math.sin(theta_current)
z_1=1
x_2=math.sin(theta_current)
y_2=-math.cos(theta_current)
z_2=theta_current
x_3=x_1+x_2
y_3=y_1+y_2
z_3=z_1+z_2
x_s=[x_3,x_2]
y_s=[y_3,y_2]
z_s=[z_3,z_2]
ax.plot(x_s,y_s,z_s) # iki nokta var birleştiriceğiz
plt.show()
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import math
get_ipython().magic('matplotlib notebook')
n = 1000
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
#plot a helix along the x-axis
theta_max = 8 * np.pi
theta = np.linspace(0, theta_max, n) # 0 dan 8pi ye kadar n tane nokat oluştur
a=5
b=7
x = a*np.sin(theta)
y = b*np.cos(theta)
z = theta
ax.plot(x, y, z, 'b', lw=2)
#ax.set_axis_off()
theta_current = 3 * np.pi/2
#türevini aldık çalıştığımız nokta 3*np.pi/2 olsun dedik ordaki türev x_1,y_1,z_1 vektörü
x_1=math.cos(theta_current)
#bunlar ordaki teğet olan vektörün büyüklüğü
y_1=math.sin(theta_current)
z_1=1
x_2=a*math.sin(theta_current)
y_2=b*-math.cos(theta_current)
z_2=theta_current
x_3=x_1+x_2
y_3=y_1+y_2
z_3=z_1+z_2
x_s=[x_3,x_2]
y_s=[y_3,y_2]
z_s=[z_3,z_2]
ax.plot(x_s,y_s,z_s) # iki nokta var birleştiriceğiz
plt.show()
8.Hafta Ders İçeriği
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#%matplotlib notebook
fig=plt.figure()
ax=Axes3D(fig)
X=np.arange(-14,14,0.25)
Y=np.arange(-14,14,0.25)
X, Y=np.meshgrid(X,Y)
#R=np.sqrt(X**2+Y**2)
R=(X**2+Y**2)
Z=np.sin(R)
Z_planes=-5+2*X+4*Y
ax.plot_surface(X, Y, R, rstride=1, cstride=1, cmap='hot')
ax.plot_surface(X, Y, Z_planes, rstride=1, cstride=1, cmap='hot')






Hiç yorum yok:
Yorum Gönder