Что нового

3D Axis - Построение 3D графиков функций

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
AutoIt: 3.3.4.0
Версия: 2.2

Категория: Графика / GDI+, Математика

Описание: Программа позволяет строить практически любые графики функций, которые можно задать одним уравнением вида f(a) или f(a, b). Графики можно строить в одной из следующих систем координат: прямоугольная, цилиндрическая или сферическая. Для начала попробуйте поиграться с примерами, которые представлены ниже (файл Examples.3da), где находятся 20 разных функций для разных систем координат. Импортируйте его в программу и посмотрите, что получится. Но не следует выбирать сразу все функции, т.к. их обработка может занять довольно много времени. Далее можете придумать свои собственные уравнения, здесь все зависит только от Вашей фантазии. Если у кого-нибудь получатся красивые графики, то пожалуйста поделитесь ими в этой теме. По умолчанию, в программе доступны все математические функции, которые определены непосредственно в AutoIt - Cos(), Sin(), Sqrt() и т.д., но если Вам этого будет мало, то можно подключить свои собственные функции в виде обычных AutoIt функций:

Код:
Func MyFunc($nValue)
	Return ...
EndFunc   ;==>MyFunc


Например, таким образом можно построить график ряда Фурье, причем в пространстве (!), ну или еще что-нибудь. И на последок, если кому интересно, то вот основа данной программы. Функция преобразования (проекции) пространственных координат (X,Y,Z) на плоскость (Xp,Yp), пришлось самому выводить, т.к. лень было искать в сети. Смысл переменных $D, $I и $T можно понять, поигравшись с первыми тремя ползунками (слайдерами) в программе.

Код:
Func _2D($X, $Y, $Z, $D, $I, $T, ByRef $Xp, ByRef $Yp)

	Local $DC = Cos($D * $Pi / 180)
	Local $DS = Sin($D * $Pi / 180)
	Local $IC = Cos($I * $Pi / 180)
	Local $IS = Sin($I * $Pi / 180)
	Local $TC = Cos($T * $Pi / 180)
	Local $TS = Sin($T * $Pi / 180)

	$Xp = $X * ($DC * $TC - $DS * $TS * $IC) - $Y * ($DS * $TC + $DC * $TS * $IC) + $Z * ($TS * $IS)
	$Yp = $X * ($DS * $IS) + $Y * ($DC * $IS) + $Z * ($IC)

EndFunc   ;==>_2D


Файл: AU3, EXE, EXE (1101x733)

Используемые библиотеки: ColorChooser.au3, ColorPicker.au3, Restart.au3, WinAPIEx.au3

Пример(ы): Examples.3da

Просто натяните этот файл на основное окно программы, выберите функции и нажмите кнопку "Draw".

Скриншот:

3DAxis.png


Источник: 3D Axis (оффициальный форум)
Автор: Yashied

Примечание:

Размер основного окна программы более 1250x860 точек и не подлежит изменению, чему будут рады не все мониторы, особенно ноутбуки. Поэтому, для комфортной работы я рекомендую минимально необходимый размер монитора ~ 17-19".
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Yashied [?]
для комфортной работы я рекомендую минимально необходимый размер монитора ~ 17-19
У меня 17, и при этом не видно заголовка окна и левого края.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Современные 17" (3:4) мониторы как правило имеют нативное разрешение 1280x1024, 19" (16:10) - 1440x900.

Ну по крайней мере теперь есть объективная причина задуматься о приобретении нового монитора.

:smile:


Добавлено:
Сообщение автоматически объединено:

У меня на ноуте тоже заголовка не видно, но он 13"! (или 14")
 

TheBloodTear

Знающий
Сообщения
36
Репутация
9
Блин, офигенно!!! :laugh: Вот где это было, когда я учил Геометрию? :smile: ..
:IL_AutoIt_1:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
А есть возможность брать данные не в результате расчета функций, а считывания с файла, например? т.к. построение графиков известных функций это наверное 10% практической необходимости подобных программ, все остальное это визуализация имеющихся табличных данных.
а так, шикарно :ok:


Добавлено:
Сообщение автоматически объединено:

и еще, у меня монитор 19 инчей. но окно еле еле умещается на экран. не видно только границ, и нижние кнопки на половину ;D
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Специально для любителей всего портативного добавил уменьшенную версию программы. Размер клиентской части GUI - 1101x733. Это максимум, что я смог сделать...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Прекрасная работа Yashied! :ok:
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Спасибо.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Kaster [?]
А есть возможность брать данные не в результате расчета функций, а считывания с файла, например?

Я тут прикинул, каких размеров должен быть массив с данными... ~5k точек для довольно средненького результата, для одной поверхности... :wacko:



Наверное, попробую на эту тему что-нибудь сделать.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Yashied [?]
Я тут прикинул, каких размеров должен быть массив с данными... ~5k
5k? :rofl:
это ерунда. мне приходится визуазилировать данные до 1 ГБ. тут фишка в том, что не обязательно обрабатывать все. все равно монитор физически не способен это отобразить. поэтому, например та прога что у меня, она рисует только те точки, что попадают в промежуток между двумя пикселями. а остальные данные нужны, например, чтобы делать зуминг. если сделать зуминг на максимуме, то в идеале получается соответствие 1pixel per 1data_point
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Да, не рисовать, но обрабатывать все равно нужно будет.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Обновил программу до версии 2.2. Улучшен алгоритм Drag & Drop.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Обновил программу, добавил это.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Вот мне интересно, кто-нибудь пользовался этой программой?
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
Yashied сказал(а):
Вот мне интересно, кто-нибудь пользовался этой программой?
Yashied, я пользовался, вздохнул и подумал - вот бы мне раньше такую, лежит в рабочих проектах :smile:
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Первую версию я написал еще в институте на Turbo Pascal 7.0, работала под MS-DOS. Вторая версия, это своего рода реинкарнация этой программы для Windows. Раньше я пользовался ей достаточно часто...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Yashied [?]
Вот мне интересно, кто-нибудь пользовался этой программой?
я пользовался, но чисто побаловаться. к сожалению, в силу специфики своей работы мне приходится визаулизировать огромные массивы данных, и делаю я это как правило в продвинутых мат. пакетах. в основном матлаб. но в целом, тулза для простых вещей просто идеальная. я уже давно выразил свое изумление по поводу него :ok:
 

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Yashied, добрый день!
Я ищу библиотеку для отображения 2D линейных графиков из массивов или любых табличных данных. Кроме простоты в использовании и скорости работы, хотелось бы, чтобы данные могли масштабироваться из окна, ползунком сжиматься график и раздвигаться по осям, например, и была возможность перемещаться по графику в окне назад и вперед.
Скажите, пожалуйста, Ваша программа в состоянии это обеспечить без особых программерских манипуляций :smile: ? Если да, то с удовольствием бы ею воспользовался.
 
Верх