python - Plotting a rectangular area on the surface of a sphere -


i trying trace out rectangular area on surface of sphere.

this code have sphere:

import numpy np import random rand import matplotlib.pyplot plt mpl_toolkits.mplot3d import axes3d  fig = plt.figure()  ax = fig.gca(projection='3d')  ax.set_aspect("equal")    theta, phi =  np.mgrid[0:2*np.pi : 20j ,0:np.pi : 20j]  r = 6.3  x = r * np.cos(phi)*np.sin(theta) y = r * np.sin(phi)*np.sin(theta) z = r * np.cos(theta)  ax.plot_wireframe(x,y,z, color = "k") plt.show() 

the points converted lat/long cart coords.

lat1x = 46.49913179 * (2*np.pi/360) lat2x = 46.4423682 * (2*np.pi/360) long1y = -119.4049072 * (2*np.pi/360) long2y = -119.5048141 * (2*np.pi/360)  lat3x = 46.3973998 * (2*np.pi/360) lat4x = 46.4532495 * (2*np.pi/360) long3y = -119.4495392 * (2*np.pi/360) long4y = -119.3492884 * (2*np.pi/360)   xw1 = r * np.cos(lat1x)*np.cos(long1y) yw1 = r * np.cos(lat1x)*np.sin(long1y) zw1 = r * np.sin(lat1x)  xw2 = r * np.cos(lat2x)*np.cos(long2y) yw2 = r * np.cos(lat2x)*np.sin(long2y) zw2 = r * np.sin(lat2x)  xw3 = r * np.cos(lat3x)*np.cos(long3y) yw3 = r * np.cos(lat3x)*np.sin(long3y) zw3 = r * np.sin(lat3x)  xw4 = r * np.cos(lat4x)*np.cos(long4y) yw4 = r * np.cos(lat4x)*np.sin(long4y) zw4 = r * np.sin(lat4x)   p1 = [xw1,yw1,zw1] p2 = [xw2,yw2,zw2] p3 = [xw3,yw3,zw3] p4 = [xw4,yw4,zw4]  ax.scatter(p1,p2,p3,p4, color = "r") 

these points , there conversion cartesian coordinates having trouble getting them appear on surface of sphere. should form rough rectangular shape. able connect points draw rectangle on surface of sphere. aside rectangle meant small

your conversion cartesian coordinates may wrong. when creating sphere, might want use usual

enter image description here

but of course depend on how "lat" , "lon" defined on sphere.

more importantly, scatter plot incorrect. it's scatter(x,y,z), first argument x coordinates, second argument y coordinates, third argument z coordinates.

import numpy np import random rand import matplotlib.pyplot plt mpl_toolkits.mplot3d import axes3d  fig = plt.figure()  ax = fig.gca(projection='3d')  ax.set_aspect("equal")    theta, phi =  np.mgrid[0:2*np.pi : 20j ,0:np.pi : 20j]  r = 6.3  x = r * np.cos(phi)*np.sin(theta) y = r * np.sin(phi)*np.sin(theta) z = r * np.cos(theta)  ax.plot_wireframe(x,y,z, color = "k")   lat1x = 46.49913179 * (2*np.pi/360) lat2x = 46.4423682 * (2*np.pi/360) long1y = -119.4049072 * (2*np.pi/360) long2y = -119.5048141 * (2*np.pi/360)  lat3x = 46.3973998 * (2*np.pi/360) lat4x = 46.4532495 * (2*np.pi/360) long3y = -119.4495392 * (2*np.pi/360) long4y = -119.3492884 * (2*np.pi/360)  def to_cartesian(lat,lon):     x = r * np.cos(lon)*np.sin(lat)     y = r * np.sin(lon)*np.sin(lat)     z = r * np.cos(lat)     return [x,y,z]  p1 = to_cartesian(lat1x,long1y) p2 = to_cartesian(lat2x,long2y) p3 = to_cartesian(lat3x,long3y) p4 = to_cartesian(lat4x,long4y)  x = np.array([p1,p2,p3,p4]) ax.scatter(x[:,0],x[:,1],x[:,2], color = "r")   plt.show() 

because rectangle pretty small need zoom in quite bit in order see it.

enter image description here


Comments

Popular posts from this blog

node.js - Node js - Trying to send POST request, but it is not loading javascript content -

javascript - Replicate keyboard event with html button -

javascript - Web audio api 5.1 surround example not working in firefox -