Математический форум Math Help Planet http://mathhelpplanet.com/ |
|
Доступ к компоненту массива Table внутри Table http://mathhelpplanet.com/viewtopic.php?f=24&t=46976 |
Страница 2 из 3 |
Автор: | Excalibur921 [ 28 янв 2016, 18:39 ] |
Заголовок сообщения: | Re: Доступ к компоненту массива Table внутри Table |
Спасибо, но формула теперь неправильно считает и смысла не имеет. Не берет xA и углы уплыли =(. Очень странная работа Dynamic, видимо они не правильно обновляют таймер или координаты мышки. Я новичок и как не пытался заставить работать правильно не выходит. Моя задача интерактивно таскать точки и делать расчеты с ними но не выходит. Подскажете как с RunScheduledTask обновлять координаты точки на графике от координат мышки? Или помочь накидать код таскания одной точки? Наверно с RunScheduledTask. ===================== RadiusClick=12 MouseClick = X,Y нажатия левой кнопки -------------- -------------- прерывание таймера timer0 Если { RascZakon4en==1} то {вывод графики из буфера} иначе выход } -------------- -------------- Отпуск левой кнопки мышки{ если LmouseDown!=1 то выход иначе LmouseDown=0 timer0=0 остановка таймера } -------------- -------------- Нажатие левой кнопки мышки { Если {"расстояние MouseClick и xA yA">RadiusClick} // не попадание на точку A то {выход} иначе {LmouseDown=1,запуск таймера с циклами 0.016 сек timer0=1} } -------------- -------------- Если {LmouseDown==1} то RascZakon4en=0,(много расчетов основной код программы),(отрисовка графики в буфер),RascZakon4en=1} -------------- |
Автор: | SAVANTOS [ 28 янв 2016, 18:58 ] |
Заголовок сообщения: | Re: Доступ к компоненту массива Table внутри Table |
Можно попробовать конструкцию с Manipulate, используя Locator. |
Автор: | Excalibur921 [ 28 янв 2016, 19:33 ] |
Заголовок сообщения: | Re: Доступ к компоненту массива Table внутри Table |
SAVANTOS писал(а): Можно попробовать конструкцию с Manipulate, используя Locator. Также и ее пробовал. Лаги еще больше. Я думаю лучше чем с RunScheduledTask Простого таскания точки ничего не будет. Сделать расчет внутри функции а вывод в другой по алгоритму выше, но не знаю синтаксиса, пытался но ничего… Все-таки хотелось бы сделать в Mathematica т.к. дальше хочу попробовать многопараметрическую нелинейную оптимизацию. Но все больше склоняюсь что намного быстрей сделать все самому на С++( и возможно с ассемблерными вставками) и OpenGL изучив и разобрав методы оптимизации... |
Автор: | SAVANTOS [ 28 янв 2016, 20:32 ] |
Заголовок сообщения: | Re: Доступ к компоненту массива Table внутри Table |
Я вам написал ЛС с информацией куда можно обратиться к профессионалам за помощью. |
Автор: | Excalibur921 [ 28 янв 2016, 21:15 ] |
Заголовок сообщения: | Re: Доступ к компоненту массива Table внутри Table |
SAVANTOS писал(а): Я вам написал ЛС Так я ответил давно. А может тут подскажете почему не работают? RunScheduledTask[a0=MousePosition[{"Graphics",Graphics},{0,0}],3], Graphics[ Point[[a0]] ] Slider[Dynamic[a],{0,10}]; ControllerManipulate[Plot[{Sin[x+a]+b,Sinc[x+c]+d},{x,-2Pi,2Pi},PlotRange2],{a,0,10},{b,0,1},{c,0,10},{d,0,1}] |
Автор: | SAVANTOS [ 29 янв 2016, 11:42 ] |
Заголовок сообщения: | Re: Доступ к компоненту массива Table внутри Table |
Я с такими конструкциями не сталкивался, поэтому не могу сказать. |
Автор: | Excalibur921 [ 29 янв 2016, 15:10 ] |
Заголовок сообщения: | Re: Доступ к компоненту массива Table внутри Table |
Исправил, всеравно не хочет читать с массива p1[[]]. Причина всего в двух строчках: может нужно data=Table… не понимаю как сделать. Или записать array а в Table просто брать типа Array[1,1]. Указатель но как не знаю не хочет. Это наверно самый лучший вариант. (*-----Eror----*) (*p0[{1,1}]+(Cos[Angle]*0.2), (*<--------------------------Eror*) p0[{1,2}]+(Sin[Angle]*0.2)*) (*-----Eror----*) Вот готовый фаил работает: https://dropmefiles.com/YAjZp |
Автор: | Excalibur921 [ 29 янв 2016, 16:30 ] |
Заголовок сообщения: | Re: Доступ к компоненту массива Table внутри Table |
И так не хочет: Angle2 = 0.1; |
Автор: | Excalibur921 [ 29 янв 2016, 19:31 ] |
Заголовок сообщения: | Re: Доступ к компоненту массива Table внутри Table |
Теперь работает правильно, сделал через адекватные массивы и циклы. Как я и думал те рукожопы из wolfram намудрили в Table. Баг 1. Если в Table1 бралась переменная, то ее нельзя брать в Table2. Сбоит в формуле и не говорит об ошибке. Баг2. Указатели на массив типа a1[[i,1]]=a0[[2,1]]+Cos[Angle2]*0.2; Не будут работать внутри Table, вообще в Table лучше рисовать точки и ничего не считать. Суть: создается пустой массив, в For заполняется, в Table пробегает по указателям на массив. По другому не пашет не знаю, 5 форумов не помогли =)… вообще жутко лаговая вещь эта Mathematica. {xA, yA} = {0, 0}; |
Автор: | SAVANTOS [ 29 янв 2016, 21:44 ] |
Заголовок сообщения: | Re: Доступ к компоненту массива Table внутри Table |
Процедурный стиль программирования не любят в Wolfram Mathematica. Обычно всё делают в функциональном стиле. |
Страница 2 из 3 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |