Дискуссионный математический форумМатематический форум

Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 4 часа [ Летнее время ]
MathHelpPlanet.com RSS-лента Математического форума

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Доступ к компоненту массива Table внутри Table
СообщениеДобавлено: 28 янв 2016, 19:39 
Не в сети
Начинающий
Зарегистрирован:
14 дек 2013, 13:51
Сообщений: 19
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Спасибо, но формула теперь неправильно считает и смысла не имеет. Не берет 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}
--------------

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Доступ к компоненту массива Table внутри Table
СообщениеДобавлено: 28 янв 2016, 19:58 
Не в сети
Одарённый
Зарегистрирован:
27 май 2015, 20:47
Сообщений: 123
Cпасибо сказано: 3
Спасибо получено:
26 раз в 25 сообщениях
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Можно попробовать конструкцию с Manipulate, используя Locator.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Доступ к компоненту массива Table внутри Table
СообщениеДобавлено: 28 янв 2016, 20:33 
Не в сети
Начинающий
Зарегистрирован:
14 дек 2013, 13:51
Сообщений: 19
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
SAVANTOS писал(а):
Можно попробовать конструкцию с Manipulate, используя Locator.

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

Все-таки хотелось бы сделать в Mathematica т.к. дальше хочу попробовать многопараметрическую нелинейную оптимизацию. Но все больше склоняюсь что намного быстрей сделать все самому на С++( и возможно с ассемблерными вставками) и OpenGL изучив и разобрав методы оптимизации...

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Доступ к компоненту массива Table внутри Table
СообщениеДобавлено: 28 янв 2016, 21:32 
Не в сети
Одарённый
Зарегистрирован:
27 май 2015, 20:47
Сообщений: 123
Cпасибо сказано: 3
Спасибо получено:
26 раз в 25 сообщениях
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Я вам написал ЛС с информацией куда можно обратиться к профессионалам за помощью.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Доступ к компоненту массива Table внутри Table
СообщениеДобавлено: 28 янв 2016, 22:15 
Не в сети
Начинающий
Зарегистрирован:
14 дек 2013, 13:51
Сообщений: 19
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
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},PlotRange2],{a,0,10},{b,0,1},{c,0,10},{d,0,1}]

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Доступ к компоненту массива Table внутри Table
СообщениеДобавлено: 29 янв 2016, 12:42 
Не в сети
Одарённый
Зарегистрирован:
27 май 2015, 20:47
Сообщений: 123
Cпасибо сказано: 3
Спасибо получено:
26 раз в 25 сообщениях
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Я с такими конструкциями не сталкивался, поэтому не могу сказать.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Доступ к компоненту массива Table внутри Table
СообщениеДобавлено: 29 янв 2016, 16:10 
Не в сети
Начинающий
Зарегистрирован:
14 дек 2013, 13:51
Сообщений: 19
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Исправил, всеравно не хочет читать с массива 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

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Доступ к компоненту массива Table внутри Table
СообщениеДобавлено: 29 янв 2016, 17:30 
Не в сети
Начинающий
Зарегистрирован:
14 дек 2013, 13:51
Сообщений: 19
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
И так не хочет:
Angle2 = 0.1; 
p1 = Dynamic@Table[
{
If[Angle2 > 2*Pi, Angle2 = Angle2 - (2*Pi)];(* if more 2 Pi*)
Angle2 = Angle2 + AngleStep; (* add AngleStep*)
(*
(xA+Cos[StartAngle]*AB)+(Cos[Angle2]*0.2), (*<----------it works*)
(yA+Sin[StartAngle]*AB)+(Sin[Angle2]*0.2)*)
(*-----Eror----*)
p2[[p, 1]] + (Cos[Angle2]*0.2), (*<--------------------------Eror*)
p2[[p, 2]] + (Sin[Angle2]*0.2)
(*-----Eror----*)
},
{p, 1, Positions + 1}];

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Доступ к компоненту массива Table внутри Table
СообщениеДобавлено: 29 янв 2016, 20:31 
Не в сети
Начинающий
Зарегистрирован:
14 дек 2013, 13:51
Сообщений: 19
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Теперь работает правильно, сделал через адекватные массивы и циклы. Как я и думал те рукожопы из 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};
{xB, yB} = {0.25, 0.25};
Positions = 10;
AngleStep = (2 Pi)/Positions;
AB = Dynamic[EuclideanDistance[{xA, yA}, {xB, yB}]];(*----length AB must updated*)
StartAngle = Dynamic[Mod[ArcTan[xB - xA, yB - yA], 2 Pi]];(*---Start Angle AB must updated*)
Angle = StartAngle;
(*---------------------------------------------*)
a0 = Array[0 &, {Positions, 2}];
a1 = Array[0 &, {Positions, 2}];
(*---------Array B-------------------------*)
For[i = 1, i < Positions + 1, i++,
If[Angle > 2*Pi, Angle = Angle - (2*Pi)];(* if more 2 Pi*)
Angle = Angle + AngleStep; (* add AngleStep*)
a0[[i, 1]] = Dynamic@xA + Cos[Angle]*AB;
a0[[i, 2]] = Dynamic@yA + Sin[Angle]*AB
];
(*-------------------------*)
p0 = Table[{
a0[[t, 1]],
a0[[t, 2]]},
{t, 1, Positions}];
(*---------Array B-------------------------*)
(*---------Array C-------------------------*)
Angle2 = 0.1;
For[i = 1, i < Positions + 1, i++,
If[Angle2 > 2*Pi, Angle2 = Angle2 - (2*Pi)];(* if more 2 Pi*)
Angle2 = Angle2 + AngleStep; (* add AngleStep*)
a1[[i, 1]] = a0[[2, 1]] + Cos[Angle2]*0.2;
a1[[i, 2]] = a0[[2, 2]] + Sin[Angle2]*0.2
];
p1 = Table[{
a1[[t, 1]],
a1[[t, 2]]
}, {t, 1, Positions}];
(*---------Array C-------------------------*)
Graphics[
{
RGBColor[10, 0, 0],
PointSize[0.03],
Point[Dynamic[{xA, yA}]],
Point[Dynamic[{xB, yB}]],
Line[{Dynamic[{xA, yA}], Dynamic[{xB, yB}]}],
RGBColor[0, 0, 0],
PointSize[0.02],
Point[p0],
Point[p1],
Locator[Dynamic[{xA, yA}], None],
Locator[Dynamic[{xB, yB}], None]
},
AspectRatio -> 1, Axes -> True, PlotRange -> 1]

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Доступ к компоненту массива Table внутри Table
СообщениеДобавлено: 29 янв 2016, 22:44 
Не в сети
Одарённый
Зарегистрирован:
27 май 2015, 20:47
Сообщений: 123
Cпасибо сказано: 3
Спасибо получено:
26 раз в 25 сообщениях
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Процедурный стиль программирования не любят в Wolfram Mathematica. Обычно всё делают в функциональном стиле.

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу Пред.  1, 2, 3  След.

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Доступ к Matlab из стороних приложений через COM(DCOM). Как?

в форуме MATLAB

MCKokos

0

53

26 май 2017, 11:12

Дописать продолжеие массива

в форуме Mathematica

Anatol

6

565

04 янв 2013, 14:24

Заполнение массива по спирали

в форуме MathCad

Alexandr_II

2

542

19 дек 2012, 18:11

Обращение к элементу массива ячеек

в форуме MATLAB

GriFFoN

0

208

14 апр 2015, 23:35

Быстрый поиск элементов массива

в форуме Численные методы

alex345

0

152

26 сен 2014, 15:14

Поменять местами элементы массива - C++

в форуме Информатика и Компьютерные науки

kgkfdgfk

1

206

25 окт 2016, 16:08

C++ поменять местами min и max элементы массива

в форуме Информатика и Компьютерные науки

tan_tan

1

1631

07 янв 2014, 19:45

Отображение двумерного массива через цикл for

в форуме Maple

IOF

6

526

16 ноя 2013, 17:18

C++ максимальное произведение трех элементов массива

в форуме Информатика и Компьютерные науки

nimus

1

777

29 ноя 2013, 00:47

Прикладная задача с оценкой массива данных

в форуме Математическая статистика и Эконометрика

slavem

3

68

20 апр 2017, 12:43


Часовой пояс: UTC + 4 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2016 MathHelpPlanet.com. All rights reserved