• Remix
  • Share
  • New Entry

on 16 Nov 2023
  • 6
  • 68
  • 0
  • 3
  • 524
drawframe(18)
function drawframe(f)
% inspired by this classic gif: https://smallpond.ca/jim/sand/overview/
% (figure 2!)
% yay geology :D
% cross-stratification is the sedimentary structure left behind when
% sand dunes migrate and deposit sediment; it forms when sediment is
% eroded from the stoss (windward) side and deposited on the lee
% (leeward) side, creating layers of slanted stratifications bounded by
% horizontal surfaces! preserved dune cross-stratification can be
% found in places that used to be sandy deserts, such as the navajo
% sandstone, a formation of eolian (wind-blown) sandstone visible in
% outcrop in many places in the southwestern US: https://www.nps.gov/zion/learn/nature/navajo.htm
% this is a little bit extremely hardcoded but i encourage remixes that
% get multiple dunes moving at the same time!
if mod(f,3) == 0 % don't want to have too many frames because then it goes too fast!
close
xcoord = 12-0.5*f; % where will the dune start
% create the dune shape
dunex = [0:0.1:13];
duney = min(tand(12)*dunex, -tand(30)*(dunex-10)); % sand dunes generally have a stoss side angle of about 12º and a lee side angle of about 30º
dunecol = [245, 230, 179]/256; % looks sandy
% create the cross-stratification shapes; these will form the
% sets that make up the bottom layers
% this is NOT how it happens irl! everything i'm doing is backwards
% from how it really happens haha but it makes the code easier
capx = dunex(duney<0.5);
capy = duney(duney<0.5);
% draw most recent dune--have to do this one first, then the other
% ones, otherwise the lee faces don't get preserved
figure
patch(dunex-xcoord, duney+2, dunecol)
hold on
xlim([0 12]); ylim([0 10]);
% draw the other dune lee faces in the row
for i = -1*xcoord-0.877:-0.5:-10
patch(capx+i, capy+2, dunecol)
hold on
end
% cover up interior cross-stratification bounding surface, we dont want to see it yet
plot([-xcoord+2.333, -xcoord+8.323], [2.47, 2.47], 'Color', dunecol, 'LineWidth', 2.5)
hold on
% draw lower layers of cross stratification
for i = 1.5:-0.5:0
for j = 10:-0.5:-10
patch(capx+j, capy+i, dunecol)
hold on
end
end
% clean up a bit
xticks([])
yticks([])
end
end
Animation
Remix Tree