You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In the program below I try to put a section of the earth (ocean), a tower (of a wind turbine) at origo, and the Sun.
My final goal is to animate the sunset as seen from some hundred meters behind the tower - and with the real curvature of the Earth.
When zooming in the nearest objects seem to disappear too early - as if there was a 'near clip plane' (WebGL term).
In the actual program I have put the Sun too near the Earth because if I put the Sun at its real position (units in meters) I cannot see the objects in the foreground at all.
Is there any way to make it better?
If I am right about the 'near clip plane' is there any way to modify the position of that plane (and eventually also a 'far clip plane')?
Poul Riis
Denmark
import numpy as np
from mayavi.mlab import *
from math import *
from matplotlib.colors import hsv_to_rgb
onemillion=1000000
unit=1000000 # sizes and distances well be in meters if unit is set to one million
rsun=150000unit
Rsun=700unit
Rearth=20unit/pi
dmax=Rearth/100
phimax=atan2(dmax,Rearth)
htower=300/onemillionunit
rtower=3/onemillion*unit
def cylinder(pos,axis,radius,length):
pi = np.pi
twopi=2*pi
cos = np.cos
sin = np.sin
dphi, dh = pi / 250.0, 0.1
[phi, z] = np.mgrid[0:pi + dphi * 1.5:dphi,
0:length:dh]
ex=[1,0,0]
normaxis=sqrt(axis[0]**2+axis[1]**2+axis[2]*2)
ez=[axis[0]/normaxis,axis[1]/normaxis,axis[2]/normaxis]
ey=[0,-ez[2],ez[1]]
x = pos[0]+radius(cos(phi)ex[0]+sin(phi)ey[0])+zez[0]
y = pos[1]+radius(cos(phi)ex[1]+sin(phi)ey[1])+zez[1]
z = pos[2]+radius(cos(phi)*ex[2]+sin(phi)ey[2])+zez[2]
return mesh(x, y, z, colormap="copper")
def calot(pos,axis,radius,deltatheta):
pi = np.pi
twopi=2pi
cos = np.cos
sin = np.sin
dphi, dtheta = pi / 250.0, deltatheta/250.0
[phi, theta] = np.mgrid[0:twopi + dphi * 1.0:dphi,0:deltatheta:dtheta]
ex=[1,0,0]
normaxis=sqrt(axis[0]**2+axis[1]**2+axis[2]**2)
ez=[axis[0]/normaxis,axis[1]/normaxis,axis[2]/normaxis]
ey=[0,-ez[2],ez[1]]
x = pos[0]+radiussin(theta)*(cos(phi)ex[0]+sin(phi)ey[0])+radiuscos(theta)ez[0]
y = pos[1]+radiussin(theta)(cos(phi)ex[1]+sin(phi)ey[1])+radiuscos(theta)ez[1]
z = pos[2]+radiussin(theta)(cos(phi)*ex[2]+sin(phi)ey[2])+radiuscos(theta)*ez[2]
return mesh(x, y, z,color=(0,0,1))
In the program below I try to put a section of the earth (ocean), a tower (of a wind turbine) at origo, and the Sun.
My final goal is to animate the sunset as seen from some hundred meters behind the tower - and with the real curvature of the Earth.
When zooming in the nearest objects seem to disappear too early - as if there was a 'near clip plane' (WebGL term).
In the actual program I have put the Sun too near the Earth because if I put the Sun at its real position (units in meters) I cannot see the objects in the foreground at all.
Is there any way to make it better?
If I am right about the 'near clip plane' is there any way to modify the position of that plane (and eventually also a 'far clip plane')?
Poul Riis
Denmark
import numpy as np
from mayavi.mlab import *
from math import *
from matplotlib.colors import hsv_to_rgb
onemillion=1000000
unit=1000000 # sizes and distances well be in meters if unit is set to one million
rsun=150000unit
Rsun=700unit
Rearth=20unit/pi
dmax=Rearth/100
phimax=atan2(dmax,Rearth)
htower=300/onemillionunit
rtower=3/onemillion*unit
def cylinder(pos,axis,radius,length):
pi = np.pi
twopi=2*pi
cos = np.cos
sin = np.sin
dphi, dh = pi / 250.0, 0.1
[phi, z] = np.mgrid[0:pi + dphi * 1.5:dphi,
0:length:dh]
ex=[1,0,0]
normaxis=sqrt(axis[0]**2+axis[1]**2+axis[2]*2)
ez=[axis[0]/normaxis,axis[1]/normaxis,axis[2]/normaxis]
ey=[0,-ez[2],ez[1]]
x = pos[0]+radius(cos(phi)ex[0]+sin(phi)ey[0])+zez[0]
y = pos[1]+radius(cos(phi)ex[1]+sin(phi)ey[1])+zez[1]
z = pos[2]+radius(cos(phi)*ex[2]+sin(phi)ey[2])+zez[2]
return mesh(x, y, z, colormap="copper")
def calot(pos,axis,radius,deltatheta):
pi = np.pi
twopi=2pi
cos = np.cos
sin = np.sin
dphi, dtheta = pi / 250.0, deltatheta/250.0
[phi, theta] = np.mgrid[0:twopi + dphi * 1.0:dphi,0:deltatheta:dtheta]
ex=[1,0,0]
normaxis=sqrt(axis[0]**2+axis[1]**2+axis[2]**2)
ez=[axis[0]/normaxis,axis[1]/normaxis,axis[2]/normaxis]
ey=[0,-ez[2],ez[1]]
x = pos[0]+radiussin(theta)*(cos(phi)ex[0]+sin(phi)ey[0])+radiuscos(theta)ez[0]
y = pos[1]+radiussin(theta)(cos(phi)ex[1]+sin(phi)ey[1])+radiuscos(theta)ez[1]
z = pos[2]+radiussin(theta)(cos(phi)*ex[2]+sin(phi)ey[2])+radiuscos(theta)*ez[2]
return mesh(x, y, z,color=(0,0,1))
figure(size=(1200,1000))
cylinder([0,0,0],[0,0,1],rtower,htower)
rgb1=hsv_to_rgb((0.2,0.7,1))
xaxis=quiver3d(0, 0, 0, 1000,0,0, line_width=2, scale_factor=1)
yaxis=quiver3d(0, 0, 0, 0,1000,0, line_width=2, scale_factor=1)
calot([0,0,-6366000/100],[0,0,1],6366000/100,pi/180/2*10)
points3d(-0,-1500000,1000,7000,resolution=256,scale_factor=1,color=(rgb1[0],rgb1[1],rgb1[2]))
hsv_to_rgb((0.2,0.7,1))
view(90, 89, 5000,(0,0,0))
The text was updated successfully, but these errors were encountered: