2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Математические 3D-рисунки
Сообщение13.08.2006, 22:05 


22/06/05
164
Предлагаю делиться опытом создания трёхмерных математических рисунков (графиков).

Вот некоторые поверхности второго порядка, нарисованные с помощью Maple (rar-архив содержит Maple-страницу, которая создаёт eps,
tex-файл, в котором подключаются eps, и результат в виде ps). Буду рад эстетическим и техническим замечаниям ;). Интересно, насколько легко создаются подобные рисунки (с похожими тенями и осями) в других системах.

 Профиль  
                  
 
 
Сообщение14.08.2006, 08:31 
Заслуженный участник
Аватара пользователя


03/03/06
648
Уважаемый Егор.

Я не видел Вашего файла, но скажу следующее:

1) ранее я рисовал различные графике в старой программке Gnuplot проблем с надптсями по осям и т.д. не было;

2) а в каких еще программах можно рисовать мат. графики, как не в Maple (Matcad мне не очень нравится и дискутировать не буду на данную тему, с Derice, Mathematica я не знаком, альтернатива вижу в MatLab --- но есть ли там экспорт в eps я не знаю --- не задавался целью);

3) а с точки эстетики --- надо осваивать команду \parbox

 Профиль  
                  
 
 
Сообщение14.08.2006, 08:54 
Заслуженный участник
Аватара пользователя


03/03/06
648
Посмотрел Ваш файл --- нормально.

Я посмотрел также и mws-файл, мне кажется графики буду красивее если несколько уменьшить сетку, по умолчанию grid=30, попробовать, например, 60. По-моему, Вы не меняли или я не заметил?

Ну и включение рисунок в текст, например, как в Word, обтекание слева или права.

 Профиль  
                  
 
 gnutplot хорош, только освещения и теней не нашёл
Сообщение17.08.2006, 22:35 


22/06/05
164
Да, программа gnuplot весьма хороша, только в трёхмерном режиме не нашёл освещения. Ещё не обнаружил готовых объёмных стрелочек, но это мелочь.
reader_st писал(а):
Посмотрел Ваш файл --- нормально.

Я посмотрел также и mws-файл, мне кажется графики буду красивее если несколько уменьшить сетку, по умолчанию grid=30, попробовать, например, 60. По-моему, Вы не меняли или я не заметил?

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

Совет по поводу \parbox не понял. Видимо, это тоже относится к обтеканию рисунка текстом.

 Профиль  
                  
 
 
Сообщение17.08.2006, 23:47 
Экс-модератор
Аватара пользователя


30/11/05
1275
reader_st писал(а):
1) ранее я рисовал различные графике в старой программке Gnuplot проблем с надптсями по осям и т.д. не было;

А что эта Gnuplot намного лучше Мэйпла? У меня все руки не доходят ей заняться. Егор, Ваши графики нормальные, только стрелочки обычно не рисуют. Посмотрите еще, для сравнения, здесь. Лично я, уже давно ищу программу в которой такое можно строить, но безуспешно...

 Профиль  
                  
 
 
Сообщение18.08.2006, 06:51 


22/06/05
164
Аурелиано Буэндиа писал(а):
Посмотрите еще, для сравнения, здесь. Лично я, уже давно ищу программу в которой такое можно строить, но безуспешно...

Да, те графики очень красивые. Не понял, а что мешает нарисовать это в Maple? Естественно, нужно параметрически задать поверхности и удачно подобрать цветовую функцию.

 Профиль  
                  
 
 
Сообщение18.08.2006, 08:24 
Заслуженный участник
Аватара пользователя


03/03/06
648
Аурелиано Буэндиа писал(а):

Цитата:
А что эта Gnuplot намного лучше Мэйпла? У меня все руки не доходят ей заняться.


Нет она, конечно, не лучше Maple. Просто экспорт графики проще. И заниматься ей, по-моему, не надо.

Егор писал(а):

Цитата:
Совет по поводу \parbox не понял. Видимо, это тоже относится к обтеканию рисунка текстом.


Совершенно верно. Речь идет об обтекании.

 Профиль  
                  
 
 
Сообщение18.08.2006, 11:11 
Экс-модератор
Аватара пользователя


30/11/05
1275
Егор писал(а):
Не понял, а что мешает нарисовать это в Maple? Естественно, нужно параметрически задать поверхности и удачно подобрать цветовую функцию

попробуйте в Maple воссоздать хотя бы первый рисунок с вырезами и кинуть его сюда (например, в gifе). Хотя наверно Вы правы. Это можно сделать в принципе, но придется немного попарится.

 Профиль  
                  
 
 
Сообщение23.08.2006, 10:46 


22/06/05
164
Несколько технических вопросов по Maple.

Как менять цвет фона рисунков?

Как Maple вписывает рисунок в рамку? Дело в том, что в некоторых случаях трёхмерный рисунок получается сдвинутым в сторону (относительно рамки). Кроме того, даже при shrinkby=0 получаются большие поля.

Хотелось бы увидеть простой пример, как написать функцию с параметрами типа ключ-значение. Скажем, такую функцию root, что
root(64) = 8, но root(64, p=3) = 4.
Аурелиано Буэндиа писал(а):
попробуйте в Maple воссоздать хотя бы первый рисунок с вырезами и кинуть его сюда (например, в gifе).

Не могу угадать уравнения некоторых поверхностей и не могу хорошо подобрать цвета. Но это не проблема Maple. Нетрудно нарисовать обычный шарик, вокруг которого тор с вырезом.

 Профиль  
                  
 
 
Сообщение23.08.2006, 13:19 
Заслуженный участник
Аватара пользователя


03/03/06
648
Я, например, никогда не видел другого фона кроме белого. Здесь, как мне кажется, надо красить проекции на соответствующие плоскости.

Егор писал:
Цитата:
Хотелось бы увидеть простой пример, как написать функцию с параметрами типа ключ-значение. Скажем, такую функцию root, что
root(64) = 8, но root(64, p=3) = 4.


Извините Егор, не понял. Затруднение в том, как заставить Maple взять значение p=3, т.е. как узнать значение степени?

 Профиль  
                  
 
 
Сообщение23.08.2006, 13:54 


22/06/05
164
reader_st писал(а):
Я, например, никогда не видел другого фона кроме белого. Здесь, как мне кажется, надо красить проекции на соответствующие плоскости.

Т. е. нарисовать, к примеру, чёрную плоскость, параллельную экрану? Но тогда, видимо, рамка рисунка отодвинется, и возникнет белый просвет между "фоном" и рамкой. Потом ещё обрезать где-то...
reader_st писал(а):
Извините Егор, не понял. Затруднение в том, как заставить Maple взять значение p=3, т.е. как узнать значение степени?

Вопрос в том, как писать функции с аргументами (параметрами) типа "ключ-значение". Представим себе, что хочется написать свою функцию coosys, которая рисует трёхмерную систему координат в школьном стиле:
coosys(1, 1, 1) - только положительные полуоси длины 1, надписи 'x' и 'y' над осями, 'z' справа;
coosys(1, 1, 1, zneg=1) - ось Oz продлена на 1 в отрицательном направлении;
coosys(1, 1, 1, ylabelpos=down, xneg=0.5) - ось Ox продлена на 0.5 в отрицательном направлении, надпись 'y' находится под осью Oy.
Для простоты привёл пример с root (вопрос в том, как самому написать подобную функцию). В документации что-то говорится на тему передачи таких аргументов, но хороших примеров не нашёл.

 Профиль  
                  
 
 
Сообщение23.08.2006, 19:49 
Заслуженный участник
Аватара пользователя


03/03/06
648
Теперь понятно, подобно функциям Maple Вы хотите вводить дополнительные опции(параметры). Я вот здесь наткнулся в help’e на команду args (nargs). Она выдает список параметров процедуры. И если перебирать каждый член этого списка, то можно найти желаемый(дополнительный) параметр. Адрес по help’у Programming/Procedures and Functions/ (пользовал Maple 10).

Или вот совсем дикая идея --- посмотреть исходники процедуры plot в Matlab'e (файлы --- plot.m and plotedit.m).

А на счет изображений --- ни красть сами проективные плоскости (Oxy), а только сами проекции фигур на эти плоскости.

 Профиль  
                  
 
 
Сообщение23.08.2006, 21:14 
Заслуженный участник
Аватара пользователя


03/03/06
648
Егор

Вот чуть переделал приведенный там пример

Определение максимального значения из последовательности пяти чисел (с дополнительным параметром add_two (добавление ко второму члену последовательности))
Цитата:
> maximum := proc () local max, i, add_two,two,ind;

ind:=0;
for i from 1 to nargs do
two[i]:=args[i]
end do;

for i from 1 to nargs do
if searchtext(convert(add_two,string),convert(two[i],string))<>0
then
ind:=i:
two[2]:=two[2]+rhs(two[ind]);
end if
end do;

max := two[1];

for i from 2 to 5 do
if two[i] > max then
max := two[i]
end if
end do;
max;
end proc:
> maximum(6,1,4,2,47,add_two=450);

По-моему, то что надо. Здесь пока не могу сделать для нескольких членов (в последнем цикле for надо указать длину числового ряда, а если параметров будет несколько, то чуть изменить). Но как поставлена задача (фиксированное значение количества чисел) предлагаемое решение корректно. Может можно и проще.

 Профиль  
                  
 
 
Сообщение23.08.2006, 23:44 


22/06/05
164
reader_st, большое спасибо за указание насчёт args и за подробный пример. Пример из хелпа мне мало помог.
reader_st писал(а):
А на счет изображений --- ни красть сами проективные плоскости (Oxy), а только сами проекции фигур на эти плоскости.

Не могу понять, что Вы предлагаете. :-(
Возьмём простой пример (тор вокруг сферы, цвет малиновый, с бликами):
Код:
with(plottools): with(plots):
setoptions3d(scaling=constrained, style=patchnogrid, orientation=[0,60]):

R1:=5: R2:=1: R3:=1:
fthor1:=[(R1+R2*cos(v))*cos(u),(R1+R2*cos(v))*sin(u),R3*sin(v)]:
thor1:=plot3d(fthor1, u=Pi/6..11*Pi/6, v=0..2*Pi, color=white):

shere1:=sphere([0,0,0], 3, color=white):
display(thor1, sphere1, light=[60,60,1,1,1], ambientlight=[0.5,0,0.3]);

Хотелось бы получить это на чёрном фоне.

Ещё не могу сообразить, как правильно делать на крашеной поверхности белые блики. Пытаюсь жульничать (color=white, ambientlight=[0.5,0,0.3]), но этот трюк не проходит для нескольких предметов с разными цветами.

 Профиль  
                  
 
 
Сообщение24.08.2006, 17:13 
Заслуженный участник
Аватара пользователя


03/03/06
648
Егор

С изображениями я честно сказать работать не хочу, т.к. не понимаю зачем это нужно. Если Вы хотите повторить те картинки из Mathematica, то я не сомневаюсь, что это возможно, может быть чуть труднее, чем там. Хотя, наверное, интересно повозится. Интересно узнать графические возможности Mathematica, но к сожалению я не знаком с этой системой.

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

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group