2014 dxdy logo

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

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




На страницу Пред.  1, 2, 3, 4
 
 Re: Test --> LaTeX-графика
Сообщение03.07.2017, 20:37 
Аватара пользователя
Munin в сообщении #1231313 писал(а):
А мне сглаженный больше нравился :-) Есть в нём залихватскость и собственный вклад.

В первой больше характера. Хотя и сделано небрежно. Такое иногда бывает.
____________________________________________________________________

iifat в сообщении #1230757 писал(а):
С удовольствием бы видел и то, и другое в прикреплённой теме вот с этим пояснением
Dan B-Yallay в сообщении #1230753 писал(а): писал(а):
портирую её в Inkscape, обвожу линии и затем сохраняю в LaTeX

Ну мож, чуток поподробнее, если нетрудно. А то и так сойдёт. Просто как пример и стимул для дерзающих.

Ну вот, решил соединить полезное с приятным. Будем "рисовать" Erleker:

1 шаг: берём аватару, портируем в Инкскейп, обводим контуры и сохраняем в формате ЛаТеХ:

->
Вложение:
Erlek1.png

->
Вложение:
Erlek2.png



Перед сохранением желательно поместить рисунок-контур в нижний левый угол, чтобы координаты точек были относительно небольшими.

Получаем файл приблизительно следующего содержания:
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
<div class="codetitle"><b>Код:</b></div><div class="codecontent">
%LaTeX with PSTricks extensions
%%Creator: inkscape 0.92.1
%%Please note this file requires PSTricks extensions
\psset{xunit=.5pt,yunit=.5pt,runit=.5pt}
\begin{pspicture}(793.7007874,1122.51968504)
{
\newrgbcolor{curcolor}{0 0 1}
\pscustom[linewidth=0.99999995,linecolor=curcolor]
{
\newpath
\moveto(159.5089852,294.52905827)
\curveto(143.92548283,291.1144063)(122.07415937,293.92372913)(108.88223244,288.73753701)
\curveto(101.91064819,285.9967748)(101.71326614,279.68439685)(97.29386457,272.02571339)
\lineto(104.57435339,262.75963465)
\curveto(122.91604913,264.37719685)(108.42142488,258.33297638)(101.92690394,254.15542677)
\lineto(93.98454425,236.94697323)
\curveto(96.85663748,229.48297323)(84.05406614,220.71273071)(77.43796535,212.45805354)
\curveto(49.84385764,258.41809134)(34.0280126,253.73159055)(14.5609852,264.74520945)
\curveto(15.79963465,260.37531969)(13.95959811,257.5447937)(25.15079433,248.19866457)
\curveto(32.87357102,243.74570079)(41.16854173,240.97160315)(46.33040504,229.00463622)
\curveto(53.82286866,204.88361575)(81.85713638,171.51877795)(40.37364661,169.43693858)
\curveto(18.99255307,132.00763465)(16.10770772,122.41515591)(13.89911433,113.84046614)
\lineto(31.76942362,117.14978268)
\curveto(36.54235843,150.41102362)(50.01657071,158.23774488)(66.18629669,158.18528504)
\curveto(80.22876094,150.35674961)(96.18781984,147.00030236)(107.88366614,133.69632756)
\curveto(122.84897008,126.28006299)(141.42536315,112.72493858)(148.25731276,119.13535748)
\curveto(145.7734337,105.16354016)(141.25162961,92.09744882)(146.27172283,74.79053858)
\curveto(169.0692737,64.06117795)(165.59804976,50.6376189)(154.21408252,36.40248189)
\lineto(124.43024504,19.85589921)
\curveto(129.4835452,17.70629291)(135.25062803,15.94098898)(151.56662551,19.85589921)
\lineto(173.40810331,45.66856063)
\curveto(185.39916472,59.07609449)(190.95563717,56.6896252)(193.26398362,46.3304315)
\curveto(181.79168126,30.0543874)(170.31940913,24.51775748)(158.84712189,18.53219528)
\lineto(174.4009285,16.21568504)
\curveto(191.88921827,27.17064567)(203.67824504,46.61007874)(217.7529411,63.53884724)
\curveto(208.19580094,67.0512)(205.91009386,72.38139213)(210.47243717,79.42359685)
\curveto(210.6489411,92.28952441)(212.74351748,98.02998425)(219.07664504,88.02780472)
\curveto(225.90598677,87.68651339)(232.70463874,87.4271622)(236.94696945,93.98456693)
\curveto(222.25246866,101.79341102)(220.5609789,122.60526614)(213.7817537,138.32938583)
\lineto(167.45134488,182.01233386)
\curveto(149.98888819,194.14650709)(156.38404157,206.28064252)(158.1852548,218.41481575)
\curveto(164.40449386,230.86851024)(172.91856756,245.28918425)(173.40810331,252.83168504)
\curveto(183.59005606,254.21782677)(188.93971276,257.21472756)(180.68858835,264.74520945)
\lineto(176.05556787,284.60110866)
\closepath
}
}
{
\newrgbcolor{curcolor}{0 0 0}
\pscustom[linewidth=0.99999995,linecolor=curcolor]
{
\newpath
\moveto(161.16364346,295.8528)
\curveto(174.17018835,303.0511748)(191.13996472,299.15255433)(208.48682457,294.19812283)
\curveto(227.52547654,285.78791811)(247.11903874,276.34714961)(254.1553852,290.22693543)
\curveto(250.77047811,264.54194646)(230.1433285,275.36987717)(212.45801197,279.96808819)
\curveto(193.86931276,289.73790236)(184.43969386,287.60084409)(174.40089071,286.25578583)
}
}
</div>


Шаг 2: Открываем этот файл в экселе (используем запятые и круглые скобки в качестве разделителей) и округляем все координаты до целых значений, потому, что с невменяемыми дробями работать трудно:

->
Вложение:
Erlek3.png


Кстати, поэкспериментируйте немного с размерами картинки. В данном случае цифры большие. поэтому я разделил всё на 3 и округлил.
(Хотя чем больше размер изображения, тем лучше получается передавать мелкие детали/изгибы. На примере Хемуля хорошо видно: если попробовать его уменьшить - выражение его глаз меняется и это сложно исправить в меньшем масштабе.

Так как форум не поддерживает PSTricks, в простом текстовом редакторе убираю шапку-оглавление, все специфичные комманды(\newpath, \newgrbcolor etc.) и делаю массовую замену команд
\moveto(...) ---> \put(....)
\curveto(.....) ----> \qbezier(...)
\lineto(...) ---> удаляю вообще, так как структура команды сильно отличается от аналога.

To be continued....


-- Пн июл 03, 2017 11:42:49 --

Кто-нибудь, напишите любое сообщение. Иначе при добавлении моего нового поста с картинкой, он идёт как продолжение текущего и происходит чехарда со всеми 4-мя вложениями: они почему-то меняются местами.


У вас нет доступа для просмотра вложений в этом сообщении.

 
 
 
 Re: Test --> LaTeX-графика
Сообщение03.07.2017, 20:43 
Аватара пользователя
Угу.

 
 
 
 Re: Test --> LaTeX-графика
Сообщение03.07.2017, 20:46 
Аватара пользователя
Mikhail_K
Thanks!
_____________________________________________________________________


Вторая часть Марлезонского...:


Во время разбивки файла в Екселе, теряются запятые и скобки. Восстанавливаем их как раз в процессе массовой замены. Приблизительно вот так:

->
Вложение:
Erlek4.png


Табы(\t) заменяем на запятые, двойные табы (\t\t) - на скобки ")(" . В окончания строк добавляем закрывающие скобки : ")".
Разумеется, надо будет еще доработать немного вручную и поубирать дополнительно взявшиеся в пустых строках символы и добавить/убрать отсутствующие/лишние скобки. В конце этих мытарств получаем такой файл:
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
<div class="codetitle"><b>Код:</b></div><div class="codecontent">
\documentclass[a4paper,10pt]{letter}
\usepackage[utf8]{inputenc}
\begin{document}

\begin{picture}(300,200)
 
\put(53,98){
\qbezier(48,97)(41,98)(36,96)
\qbezier(34,95)(34,93)(32,91)
\qbezier(41,88)(36,86)(34,85)
\qbezier(32,76)(28,74)(26,71)
\qbezier(17,86)(11,85)(5,88)
\qbezier(5,87)(5,86)(8,83)
\qbezier(11,81)(14,80)(15,76)
\qbezier(18,68)(27,57)(13,56)
\qbezier(6,44)(5,41)(5,38)
\qbezier(12,50)(17,53)(22,53)
\qbezier(27,50)(32,49)(36,45)
\qbezier(41,42)(47,38)(49,40)
\qbezier(49,35)(47,31)(49,25)
\qbezier(56,21)(55,17)(51,12)
\qbezier(43,6)(45,5)(51,7)
\qbezier(62,20)(64,19)(64,15)
\qbezier(61,10)(57,8)(53,6)
\qbezier(64,9)(68,16)(73,21)
\qbezier(69,22)(69,24)(70,26)
\qbezier(70,31)(71,33)(73,29)
\qbezier(75,29)(78,29)(79,31)
\qbezier(74,34)(74,41)(71,46)
\qbezier(50,65)(52,69)(53,73)
\qbezier(55,77)(58,82)(58,84)
\qbezier(61,85)(63,86)(60,88)
}

\put(54,99){
\qbezier(58,101)(64,100)(69,98)
\qbezier(76,95)(82,92)(85,97)
\qbezier(84,88)(77,92)(71,93)
\qbezier(65,97)(61,96)(58,95)
}
\put(59,94){
\qbezier(64,93)(68,94)(74,83)
\qbezier(79,78)(82,75)(84,76)
\qbezier(81,76)(83,71)(74,76)
\qbezier(69,83)(64,89)(60,90)
}


\end{picture}
\end{document}

</div>


Который можно сразу вставить в форум и получить такую картинку:
$$
\begin{picture}(300,200)
 
\put(53,98){
\qbezier(48,97)(41,98)(36,96)
\qbezier(34,95)(34,93)(32,91)
\qbezier(41,88)(36,86)(34,85)
\qbezier(32,76)(28,74)(26,71)
\qbezier(17,86)(11,85)(5,88)
\qbezier(5,87)(5,86)(8,83)
\qbezier(11,81)(14,80)(15,76)
\qbezier(18,68)(27,57)(13,56)
\qbezier(6,44)(5,41)(5,38)
\qbezier(12,50)(17,53)(22,53)
\qbezier(27,50)(32,49)(36,45)
\qbezier(41,42)(47,38)(49,40)
\qbezier(49,35)(47,31)(49,25)
\qbezier(56,21)(55,17)(51,12)
\qbezier(43,6)(45,5)(51,7)
\qbezier(62,20)(64,19)(64,15)
\qbezier(61,10)(57,8)(53,6)
\qbezier(64,9)(68,16)(73,21)
\qbezier(69,22)(69,24)(70,26)
\qbezier(70,31)(71,33)(73,29)
\qbezier(75,29)(78,29)(79,31)
\qbezier(74,34)(74,41)(71,46)
\qbezier(50,65)(52,69)(53,73)
\qbezier(55,77)(58,82)(58,84)
\qbezier(61,85)(63,86)(60,88)
}

\put(54,99){
\qbezier(58,101)(64,100)(69,98)
\qbezier(76,95)(82,92)(85,97)
\qbezier(84,88)(77,92)(71,93)
\qbezier(65,97)(61,96)(58,95)
}
\put(59,94){
\qbezier(64,93)(68,94)(74,83)
\qbezier(79,78)(82,75)(84,76)
\qbezier(81,76)(83,71)(74,76)
\qbezier(69,83)(64,89)(60,90)
}


\end{picture}
$$


В которой в принципе, можно уже угадать изображение оригинала. Дело за малым - играться с координатами кривых безье, соединять обрывки в единое и давать волю художественной фантазии -- тем, кому это интересно, разумеется.

А потом можно тащить сюда для сравнения - устроим конкурс желающих. Но предупрежу сразу: с непривычки убивается очень много времени. Компилить лучше локально на своём компе, а уже готовое постить тут. Я свою версию выложу завтра или послезавтра.


У вас нет доступа для просмотра вложений в этом сообщении.

 
 
 
 Re: Test --> LaTeX-графика
Сообщение04.07.2017, 19:01 
Аватара пользователя
$$
\begin{picture}(300,200)
 
\put(53,98){
\qbezier(52,97)(41,97)(35,96)%
\qbezier(35,96)(32,93)(32,90)%
\qbezier(35,87)(33,89)(32,90)%
\qbezier(35,87)(37,89)(38,87)%
\qbezier(35,83)(39,84)(38,87)%
\qbezier(35,83)(34,82)(32,79)%
\qbezier(28,73)(34,76)(32,79)%
\qbezier(17,86)(25,80)(28,73)
\qbezier(17,86)(11,88)(5,87)%
\qbezier(5,87)(5,86)(10,82)%
\qbezier(10,82)(18,87)(21,67)%
\qbezier(21,67)(27,57)(13,56)%
\qbezier(13,56)(9,57)(3,42)%
\qbezier(9,44)(5,41)(3,42)%
\qbezier(9,44)(11,53)(17,50)%
\qbezier(31,52)(33,48)(17,50)
\qbezier(44,40)(40,45)(35,45)%
\qbezier(31,52)(37,48)(35,45)%
\qbezier(44,40)(47,41)(49,38)%
\qbezier(49,38)(42,29)(49,22)%
\qbezier(40,10)(52,17)(49,22)%
\qbezier(40,10)(43,8)(47,9)%
\qbezier(47,9)(54,14)(57,20)%
\qbezier(57,20)(59,24)(61,19)%
\qbezier(61,19)(61,13)(51,7)%
%\qbezier(59,20)(61,13)(51,7)%
\qbezier(51,7)(53,6)(58,7)%
\qbezier(58,7)(71,16)(70,21)%
\qbezier(70,21)(64,24)(70,28)%
\qbezier(70,28)(71,33)(74,30)%
\qbezier(74,30)(78,29)(82,32)%
\qbezier(82,32)(77,32)(73,43)%
\qbezier(63,53)(67,50)(73,43)%
\qbezier(63,53)(55,60)(55,65)%
\qbezier(55,65)(52,69)(55,77)%
\qbezier(55,77)(55,82)(60,83)%
\qbezier(60,83)(67,82)(60,88)%
\qbezier(52,97)(59,95)(60,88)%
}


\textcolor{blue}{
\put(54,99){
\qbezier(55,94)(64,100)(76,95)%
\qbezier(76,95)(90,92)(90,97)%
\qbezier(74,92)(92,87)(90,97)%
\qbezier(74,92)(63,95)(57,93)%
}
\put(59,94){
\qbezier(70,88)(64,98)(52,97)
\qbezier(70,88)(78,75)(84,76)
\qbezier(84,76)(80,71)(69,80)
\qbezier(69,80)(62,92)(53,95)
}
}

\put(97,190){
\circle{3}
}

\end{picture}

$$
Erleker

 
 
 
 Re: Test --> LaTeX-графика
Сообщение05.07.2017, 12:46 
Спасибо. :mrgreen:

 
 
 [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3, 4


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