Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 30.05.2012
Сообщений: 22
1

Создание анимации эволюции диаграммы Вороного

30.05.2012, 17:05. Показов 3710. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите разобраться, что не так.
Задача: изначально есть 10 файлов с координатами точек [x y] в каждой строчке; каждый файл на конкретный момент времени t
Мне нужно получить анимацию эволюции некоторого параметра psi соответствующего ячейке Вороного конкретной точки в каждый момент времени.

я вначале пишу функцию которая рисует цветную диаграмму Вороного в зависимости от psi и на выходе дает дескриптор текущего графика

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function[h]= psi6_voronoi(name)
 
[a, psi]= psi6_local(name);        % функция выдает исходные координаты в массиве a и параметр psi       соответствующий данной точке
 
[V,C]=voronoin([a(:,1),a(:,2)]);
 
 
 
axis([0.1 1 0.1 1]);
for k=1:length(C)    
    if all(C{k}~=1)             % конечные многоугольники рисуем полигональными объектами
       VertCell = V(C{k},:);
    
        if psi(k,2)==6
        patch('XData',VertCell(:,1),'YData',VertCell(:,2),'FaceColor','g','FaceAlpha',1)
        
        elseif psi(k,2)<6
        patch('XData',VertCell(:,1),'YData',VertCell(:,2),'FaceColor','r','FaceAlpha',1)
        
         elseif psi(k,2)>6
        patch('XData',VertCell(:,1),'YData',VertCell(:,2),'FaceColor','b','FaceAlpha',1)
        end
    end
end
   h=gcf; 
    
end

а дальше начинаются трудности. Когда я пытаюсь все картинки свести в анимацию:
clear all

for j=1:10
name='j'
[h]= psi6_voronoi(name);


F(j) = getframe(h);

end

movie(F)

У меня во первых на анимации все кадры накладываются друг на дружку, и появляются две системы координат сдвинутые друг относительно друга после команды movie.
Подскажите как мне очищать окно графика прежде чем там будет нарисована диаграмма Вороного в следующий момент времени и как сделать чтобы оси не дублировались?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2012, 17:05
Ответы с готовыми решениями:

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

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

Создание круговой диаграммы брать данные для диаграммы из dataGridView1 ?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

Нужна помощь в анимации бифуркационной диаграммы.
Есть уравнение параболы -2*x2+3-z=0, где z-параметр нужно чтобы при изменении z по параболе вверх...

2
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
02.06.2012, 18:58 2
Есть у меня несколько догадок, но они останутся догадками, пока сам не попробую поиграться. Можете скинуть мне на мыло zosima0@gmail.com файлы с данными и m-файл с программой? Я во вторник доберусь до матлаба и гляну
P.S.: диапазон значений на графике у вас задается ф-цией axis(...), однако для того, чтобы оно работало для plot, (собственно и grid on) нужно поместить после ф-ции, в данном случае, patch (правда я не уверен, т.к. с ней не работал) тогда все графики будут строиться в одинаковых систеиах координат и прыгать не должно.
PPS: чтобы графики не налазили один поверх другого при анимации можно попробовать поставить после F(j)=getframe(h); clear h; или всиавлять пустые фреймы между графиками:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
for j = 1:20
    name = num2str( (j+1)/2 );
    if mod(j, 2) == 0 % проверка на четность
         h = [];
    else 
        h = psi_voron...
    end
    F(j) = getframe(j);
    clear h;
end
movie(F)
Точнее смогу сказать только во вторник.
2
1 / 1 / 0
Регистрация: 30.05.2012
Сообщений: 22
02.06.2012, 20:00  [ТС] 3
спасибо) на самом деле я пошла немного другим путем и все решилось. Просто не стала выводить все графики в одном окне, а в цикле открывала и закрывала полученную картинку с запоминанием дескриптора на нее. Тем не менее спасибо за помощь)
А если самому интересно, то можно например задать рандомные координаты - суть от этого не изменится.
0
02.06.2012, 20:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2012, 20:00
Помогаю со студенческими работами здесь

Создание анимации
Нужно создать анимацию: мяч катится по траве. Я создал, Button1, в ней написал: x1=0; y1=370;...

Создание анимации (C#)
Ребята выручайте пожалуйста, для зачета нужно написать приложение в Visual Studio C#. Домик и возле...

создание анимации
помогите сделать анимацию вот такого механизма, пожалуйста

Создание анимации
Как сделать что бы при нажатии кнопки, была произвелась анимация ( не с кнопкой а с картинками)

создание анимации
доброго времени суток......я сейчас начинаю учить Delphi и делаю игру (21 очко)....можете...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru