function clockOfEras; geoStart = 4550 % mya geoPresentDay = 0 % mya clockStart = 2.5; clockLength = 24; events = {'precambrianEon' 4550 543 ; 'hadeanEra' 4550 3800 ; 'formationOfEarth' 4550 4550; 'formationOfOceans' 4200 4200; 'archaenEra' 3800 2500 ; 'evidenceOfLife' 3850 3850 ; 'eukaryotes' 2700 2700 ; 'proterozoicEra' 2500 543 ; 'algae' 1200 1200 ; 'softBodiedAnimals' 900 900 ; 'phanerozoicEon' 543 0 ; 'paleozoicEra' 543 248 ; 'cambrianPeriod' 543 490 ; 'chordates' 530 520 ; 'cambrianExplosion' 530 520 ; 'ordovicianPeriod' 490 443 ; 'landPlants' 480 480 ; 'fish' 480 480 ; 'sharks' 450 450 ; 'silurianPeriod' 443 417 ; 'vascularLandPlants' 425 425 ; 'devonianPeriod' 417 354 ; 'oxygenNear21Percent' 400 400 ; 'amphibiansOnLand' 375 375 ; 'gymnospermsEarliestSeedPlantsPollen' 360 360 ; ' }'; for eventIdx=1:size(events,2) eventName = events{1,eventIdx}; eventBegin_geo = events{2,eventIdx}; eventEnd_geo = events{3,eventIdx}; if eventBegin_geo > geoStart continue end eventName; eventBegin_clock = ((geoStart - eventBegin_geo)/geoStart)*clockLength + clockStart; eventEnd_clock = ((geoStart - eventEnd_geo)/geoStart)*clockLength + clockStart; eventBeginHour = floor(mod(eventBegin_clock, 24)); eventBeginMinute = mod(eventBegin_clock, 1)*60; eventBeginMinuteFloor = floor(eventBeginMinute); eventEndHour = floor(mod(eventEnd_clock, 24)); eventEndMinute = mod(eventEnd_clock, 1)*60; eventEndMinuteCeil = ceil(eventEndMinute); printf('%20s; %d:%d-%d:%d\n', eventName, eventBeginHour, eventBeginMinuteFloor, eventEndHour, eventEndMinuteCeil); end