Получить географическую карту для Земли, вращение которой остановилось: различия между версиями

Материал из Common History development
Перейти к навигации Перейти к поиску
Строка 4: Строка 4:
 
[[Алгоритм моделирования рельефа]] слишком ресурсоёмкий. По этой причина, а также из-за того, что в будущем планирую моделировать [[lw:Societies simulation|движения людей]], то начну с малоресурсоёмкого алгоритма. Назовем его "направленная волна". Имеется вектор силы. Тазики группирую в ряды, перпендикулярные силе. Сначала расчет идет на уровне рядов, а потом можно внутри ряда. Реалистичной динамики: с вихрями, пеной и брызгами не будет, но будет некоторая иллюзия [[wikiru:Поверхностное натяжение|поверхностного натяжения]].
 
[[Алгоритм моделирования рельефа]] слишком ресурсоёмкий. По этой причина, а также из-за того, что в будущем планирую моделировать [[lw:Societies simulation|движения людей]], то начну с малоресурсоёмкого алгоритма. Назовем его "направленная волна". Имеется вектор силы. Тазики группирую в ряды, перпендикулярные силе. Сначала расчет идет на уровне рядов, а потом можно внутри ряда. Реалистичной динамики: с вихрями, пеной и брызгами не будет, но будет некоторая иллюзия [[wikiru:Поверхностное натяжение|поверхностного натяжения]].
  
 +
# для каждого тазика (центр верхней грани обозначен как Q) рассчитывается баланс с соседними, например, с северным (центр верхней грани обозначен как Qn)
 +
# нормали поверхности эллипсоида пересекаются в точке M
 +
#: рассчитываются длины отрезков QnM и QM; неизбежно использование [[:Категория:Географические координаты#меридианные|меридианных координат]]
 +
# рассчитываются длина отрезка MN через углы Δϑ и α по [[wikiru:Теорема синусов|теореме синусов]]
 +
#: угол α равен 90<sup>o</sup>, то есть верхняя грань тазика параллельна поверхности эллипсоида в том случае, если на воду не действует ускорение
 +
#: полученные две длины отрезка MN должны совпадать с некоторой точностью
  
 +
<html>
 +
<svg width="600" height="400" xmlns="http://www.w3.org/2000/svg">
 +
<!-- Created with Method Draw - http://github.com/duopixel/Method-Draw/ -->
 +
 +
<g>
 +
  <title>background</title>
 +
  <rect x="-1" y="-1" width="602" height="402" id="canvas_background" fill="#fff"/>
 +
  <g id="canvasGrid" display="none">
 +
  <rect id="svg_3" width="100%" height="100%" x="0" y="0" stroke-width="0" fill="url(#gridpattern)"/>
 +
  </g>
 +
</g>
 +
<g>
 +
  <title>Layer 1</title>
 +
  <ellipse fill="#fff" stroke-width="1.5" cx="200.465116" cy="250" id="svg_1" rx="200" ry="150" stroke="#000"/>
 +
  <line fill="none" stroke="#000" stroke-width="1.5" stroke-opacity="null" fill-opacity="null" x1="0" y1="250" x2="600" y2="250" id="svg_2" stroke-linejoin="null" stroke-linecap="null"/>
 +
  <ellipse fill="#fff" stroke="#000" stroke-width="1.5" stroke-opacity="null" fill-opacity="null" cx="200" cy="250" id="svg_5" rx="2" ry="2"/>
 +
  <ellipse fill="#fff" stroke="#000" stroke-width="1.5" stroke-opacity="null" fill-opacity="null" cx="488.5" cy="251.5" id="svg_6"/>
 +
  <ellipse fill="#fff" stroke="#000" stroke-width="1.5" stroke-opacity="null" fill-opacity="null" cx="548.5" cy="278.5" id="svg_7"/>
 +
  <line fill="none" stroke-width="1.5" x1="200" y1="250" x2="287.581079" y2="115.959466" id="svg_8" stroke-linejoin="null" stroke-linecap="null" stroke="#0000ff"/>
 +
  <line fill="none" stroke="#0000ff" stroke-width="1.5" x1="200" y1="250" x2="359.5" y2="159.5" id="svg_9" stroke-linejoin="null" stroke-linecap="null"/>
 +
  <line stroke="#56aaff" transform="rotate(-0.40490052103996277 291.05801391601966,224.96374511718471) " fill="none" stroke-width="1.5" x1="382.111071" y1="140.723929" x2="200.00493" y2="309.203544" id="svg_10" stroke-linejoin="null" stroke-linecap="null"/>
 +
  <line stroke="#56aaff" fill="none" stroke-width="1.5" x1="298.728658" y1="91.491678" x2="200" y2="332.499965" id="svg_11" stroke-linejoin="null" stroke-linecap="null"/>
 +
  <line stroke="#ff56ff" transform="rotate(84.48666381835938 277.8903503417968,204.54406738281253) " fill="none" stroke-width="1.5" x1="193.174604" y1="134.111038" x2="362.606109" y2="274.977102" id="svg_12" stroke-linejoin="null" stroke-linecap="null"/>
 +
  <line stroke-linecap="null" stroke-linejoin="null" id="svg_13" y2="400" x2="200.384651" y1="50" x1="200" fill-opacity="null" stroke-width="1.5" stroke="#000000" fill="none"/>
 +
  <text xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_16" y="317.057231" x="213.246899" stroke-width="0" stroke="#56aaff" fill="#56aaff">M</text>
 +
  <text xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_17" y="105.769258" x="260.384636" stroke-opacity="null" stroke-width="0" stroke="#ff56ff" fill="#007fff">Qn</text>
 +
  <text xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_18" y="168.846167" x="371.153841" stroke-opacity="null" stroke-width="0" stroke="#ff56ff" fill="#007fff">Q</text>
 +
  <line stroke="#ffaa56" stroke-linecap="null" stroke-linejoin="null" id="svg_19" y2="134.230792" x2="328.846157" y1="101.493765" x1="255.983916" stroke-width="1.5" fill="none"/>
 +
  <line stroke="#ffaa56" stroke-linecap="null" stroke-linejoin="null" id="svg_20" y2="133.461557" x2="328.076922" y1="187.200379" x1="389.38282" stroke-width="1.5" fill="none"/>
 +
  <text style="cursor: move;" xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_21" y="138.076943" x="332.692312" stroke-width="0" stroke="#ffaa56" fill="#ff00ff">N</text>
 +
  <ellipse ry="2.307692" rx="1.923076" id="svg_22" cy="134.194972" cx="326.565328" stroke-width="1.5" stroke="#ffaa56" fill="#ff00ff"/>
 +
  <ellipse ry="2.307692" rx="1.923076" id="svg_23" cy="160.241483" cx="360.053701" stroke-width="1.5" stroke="#ffaa56" fill="#007fff"/>
 +
  <ellipse ry="2.307692" rx="1.923076" id="svg_24" cy="116.520553" cx="289.356027" stroke-width="1.5" stroke="#ffaa56" fill="#007fff"/>
 +
  <ellipse ry="2.307692" rx="1.923076" id="svg_25" cy="295.590317" cx="215.867654" stroke-width="1.5" stroke="#56aaff" fill="#ff00ff"/>
 +
  <path transform="rotate(17.333145141601562 292.76629638671886,122.87789154052744) " stroke="#ffaa56" id="svg_26" d="m287.835244,124.878295l2.465538,-2.000401l0,1.0002l3.698302,0l0,-3.000601l-1.232768,0l2.465537,-2.000401l2.465537,2.000401l-1.232768,0l0,5.001002l-6.163839,0l0,1.0002l-2.465539,-2.000401l0,0z" fill-opacity="null" stroke-opacity="null" stroke-width="1.5" fill="none"/>
 +
  <path transform="rotate(43.97276306152344 359.7430419921876,167.99418640136713) " stroke="#ffaa56" id="svg_27" d="m354.811988,169.994576l2.465538,-2.000401l0,1.0002l3.698302,0l0,-3.000601l-1.232768,0l2.465537,-2.000401l2.465537,2.000401l-1.232769,0l0,5.001002l-6.163839,0l0,1.000201l-2.465538,-2.000401l0,0z" fill-opacity="null" stroke-opacity="null" stroke-width="1.5" fill="none"/>
 +
  <text stroke="#56aaff" transform="matrix(1.113876461982727,0,0,0.8454328876433692,-32.520087833418074,32.16742012011869) " xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_28" y="133.488372" x="286.976744" stroke-opacity="null" stroke-width="0" fill="#ffaa56"/>
 +
  <path transform="rotate(17.333145141601562 292.7663116455078,122.87789154052734)" stroke="#ffaa56" id="svg_29" d="m287.835244,124.878295l2.465538,-2.000401l0,1.0002l3.698302,0l0,-3.000601l-1.232768,0l2.465537,-2.000401l2.465537,2.000401l-1.232769,0l0,5.001002l-6.163839,0l0,1.000201l-2.465538,-2.000401l0,0z" fill-opacity="null" stroke-opacity="null" stroke-width="1.5" fill="none"/>
 +
  <text xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_30" y="140.930233" x="293.953488" stroke-opacity="null" stroke-width="0" stroke="#56aaff" fill="#ffaa56">α</text>
 +
  <path stroke="#56aaff" transform="rotate(-43.69541549682617 225.22518920898446,282.3741760253907) " id="svg_32" d="m227.203743,283.166467c0,-2.026965 -1.771658,-3.670147 -3.957108,-3.670147l0,-2.936118l0,0c2.18545,0 3.957108,1.643181 3.957108,3.670147l0,2.936118c0,1.673581 -1.220695,3.13521 -2.967831,3.553605l0,1.468059l-0.989277,-2.819575l0.989277,-3.05266l0,1.468059l0,0c1.178107,-0.282127 2.150775,-1.051252 2.637473,-2.085546" stroke-opacity="null" stroke-width="0" fill="#ff0000"/>
 +
  <text stroke="#000" transform="matrix(0.7187328338623047,0,0,0.7333263754844666,68.80937531590462,76.8978396942839) " xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_33" y="294.841553" x="221.172329" stroke-opacity="null" stroke-width="0" fill="#ff0000">Δϑ</text>
 +
</g>
 +
</svg>
 +
</html>
  
 
= Динамика воды =
 
= Динамика воды =

Версия 20:48, 31 января 2019

комментарии в LiveJournal

Алгоритм моделирования рельефа слишком ресурсоёмкий. По этой причина, а также из-за того, что в будущем планирую моделировать движения людей, то начну с малоресурсоёмкого алгоритма. Назовем его "направленная волна". Имеется вектор силы. Тазики группирую в ряды, перпендикулярные силе. Сначала расчет идет на уровне рядов, а потом можно внутри ряда. Реалистичной динамики: с вихрями, пеной и брызгами не будет, но будет некоторая иллюзия поверхностного натяжения.

  1. для каждого тазика (центр верхней грани обозначен как Q) рассчитывается баланс с соседними, например, с северным (центр верхней грани обозначен как Qn)
  2. нормали поверхности эллипсоида пересекаются в точке M
    рассчитываются длины отрезков QnM и QM; неизбежно использование меридианных координат
  3. рассчитываются длина отрезка MN через углы Δϑ и α по теореме синусов
    угол α равен 90o, то есть верхняя грань тазика параллельна поверхности эллипсоида в том случае, если на воду не действует ускорение
    полученные две длины отрезка MN должны совпадать с некоторой точностью

background Layer 1 M Qn Q N α Δϑ

Динамика воды[править]

Если убрать из модели центробежное ускорение и подогнать гидросферу к форме нового геоида, то полученная карта будет неправильной, потому что игнорируется перетекание воды во внутренних впадинах.

Поэтому необходимо начинать с современной формы геоида и постепенно шаг за шагом уменьшать центробежное ускорение, балансирую гидросферу методом решёточных уравнений Больцмана.

Ограничения модели[править]

Законы сохранения импульса и момента импульса выполняются, если будет смоделировано время физических процессов и будут учтены трение и вязкость воды. Погрешностью, вызванной трением и вязкостью воды, пренебрегаю.

Предполагается, что ни гидросфера, ни другие факторы не разрушают литосферу. Также вода не меняет своего состояния: не замерзает-конденсируется, не тает-испаряется. Погрешностью, вызванной допущением про неизменность литосферы и гидросферы, пренебрегаю.

Соответственно из законов сохранения выполняется в полной мере только закон сохранения массы.