Mathematica: Асинхронная инкрементальная генерация динамической графики

Каков самый простой способ асинхронно применить последовательные улучшения к объекту Graphics в динамической настройке (и прервать оценку ненужных результатов, если входные данные изменяются во время их вычисления)?

Как Рассмотрим простой пример:

speed[r_] := Graphics@{Red, Circle[{0, 0}, r]}
qualityA[r_] := (Pause[1]; Graphics@{Red, Disk[{0, 0}, r]})
qualityB[r_] := (Pause[1]; Graphics@{Black, Circle[{0, 0}, r]})
Manipulate[Show[
  ControlActive[speed[r], {qualityA[r], qualityB[r]}],
  PlotRange -> {{-1, 1}, {-1, 1}}
  ], {{r, .5}, 0, 1}] 

Mathematica graphics

Как я могу последовательно оценить qualityA и qualityB и добавить их вывод на дисплей, когда он будет готов?

Бонусные баллы за Прервать оценку ненужных результатов и за возможность многократного вычисления части результата, чтобы после освобождения элемента управления я увидел, например, {qualityA [r]} , затем {qualityA [r], qualityB [r]} и, наконец, {qualityA2 [r], qualityB [r]} .

9
задан Sjoerd C. de Vries 3 January 2012 в 10:34
поделиться