Hi guys, so I'm currently working on a code which generates a model of the earth, plots your position on the earth, and then a sphere of stars around it. I am able to make this plot, and I am also able to get the earth to rotate when plotted alone (using the rotate function). However, whenever I try to plot both and then rotate the earth either the outer sphere doesn't get plotted, or both are plotted but I get the following error:
Error using rotate (line 29)H must contain axes children only.
I'm really not sure what this error means, and I don't know how to fix it… if you need to look at my code, here it is:
%%Request the user for GPS Coordinates:
Lat = input('Please input the Lattitude of your desired Location: ')Long = input('Please input the Longitude of your desired Location: ')%%Generate the sphere that will later become Earth
alt = 1;skyDome = figure;set(skyDome,'ToolBar','none','MenuBar','none','name','Model of Sky','numbertitle','off',... 'units','normalized','outerposition',[0 .05 1 .95]);subplot(1,2,1); sphere; positionGlobe = plot3(0,0,1,'.','markersize',20,'color','red'); %Place point on earth's surface
[x y z] = sphere(128); r = 5; stars = surfl(r*x, r*y, r*z); set(stars, 'FaceAlpha', .25) shading interp%%Import an image of the Earth and map it to the sphere
img = imread('Earth Texture.jpg');[imgInd,map] = rgb2ind(img,256);[imgIndRows,imgIndCols] = size(imgInd);[X,Y,Z] = sphere(imgIndRows,imgIndCols);surface(X,Y,Z,flipud(imgInd),... 'FaceColor','texturemap',... 'EdgeColor','none',... 'CDataMapping','direct');colormap(map);view(-35,45);%%Reproduce Earth's axial tilt
earth = findobj(gca,'type','surface'); %Define the prime meridian/equator intersection
rotate(positionGlobe,[1 0 0],90); %Align with prime meridian
rotate(positionGlobe,[0 0 1],90); %Align with equator
%Input GPS coordinates:
rotate(positionGlobe,[0 1 0],-Lat); rotate(positionGlobe,[0 0 1],Long); rotate(earth,[0 1 0],23.6); rotate(positionGlobe,[0 1 0],23.6); %Orient coordinates along axial North Pole
%%Produce a standard map to show position location
subplot(1,2,2); imshow(img); hold on positionMap = plot(800+4.444444*(Long),400-4.4444444*(Lat),'.','markersize',20,'color','red'); %Display point on map
positionData = text(0, 820,['Latitude: ', num2str(Lat), char(176), ' | Longitude: ', num2str(Long), char(176),... ' | Time of Day: '],'Fontsize',12)%%Spin the model of the earth
for i = 1:1000hold ondeg = 1;rotate(earth,[.22 0 .5],deg);rotate(positionGlobe,[.22 0 .5],deg);M(i) = getframe(gca);set(positionData,'string',['Latitude: ', num2str(Lat), char(176), ' | Longitude: ', num2str(Long), char(176),... ' | Time of Day: ',num2str(((deg/360)*24)*i)])end
Any help would be greatly appreciated!
Best Answer