2014 dxdy logo

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

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




На страницу 1, 2  След.
 
 Математические 3D-рисунки
Сообщение13.08.2006, 22:05 
Предлагаю делиться опытом создания трёхмерных математических рисунков (графиков).

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

 
 
 
 
Сообщение14.08.2006, 08:31 
Аватара пользователя
Уважаемый Егор.

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

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

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

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

 
 
 
 
Сообщение14.08.2006, 08:54 
Аватара пользователя
Посмотрел Ваш файл --- нормально.

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

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

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

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

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

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

 
 
 
 
Сообщение17.08.2006, 23:47 
Аватара пользователя
reader_st писал(а):
1) ранее я рисовал различные графике в старой программке Gnuplot проблем с надптсями по осям и т.д. не было;

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

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

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

 
 
 
 
Сообщение18.08.2006, 08:24 
Аватара пользователя
Аурелиано Буэндиа писал(а):

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


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

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

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


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

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

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

 
 
 
 
Сообщение23.08.2006, 10:46 
Несколько технических вопросов по Maple.

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

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

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

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

 
 
 
 
Сообщение23.08.2006, 13:19 
Аватара пользователя
Я, например, никогда не видел другого фона кроме белого. Здесь, как мне кажется, надо красить проекции на соответствующие плоскости.

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


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

 
 
 
 
Сообщение23.08.2006, 13:54 
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 
Аватара пользователя
Теперь понятно, подобно функциям 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 
Аватара пользователя
Егор

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

Определение максимального значения из последовательности пяти чисел (с дополнительным параметром 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 
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 
Аватара пользователя
Егор

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

 
 
 [ Сообщений: 20 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group