2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3  След.
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 13:27 
Заслуженный участник
Аватара пользователя


31/01/14
11056
Hogtown
longstreet в сообщении #930823 писал(а):
Вы какую книгу/источник имели здесь в виду?


pgf/tikz документацию (версия 3.0) В TeXLive напечатайте в терминале

texdoc pgf

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 14:03 


28/11/11
2884
Спасибо! TeXLive у меня нет, читаю онлайн: http://ctan.uni-altai.ru/graphics/pgf/base/doc/pgfmanual.pdf.
Добротная документация, не ожидал даже!

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 15:15 
Заслуженный участник
Аватара пользователя


31/01/14
11056
Hogtown
longstreet в сообщении #930846 писал(а):
eXLive у меня нет,


У меня заняло 27 сек найти на вебе

mthelp <package>

RTFM (Read The Friendly* Manual)

* И пусть стыдно будет тому, кто подумал что-то другое

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 18:35 
Заслуженный участник


27/04/09
28128

(Оффтоп)

longstreet в сообщении #922301 писал(а):
Я не знаю точно, но есть же всякие модели цветов типа RGB. Может, нужно что-то проделать с этими значениями цветов, чтобы смешать два цвета "равноправно"...
Тут есть интересный нюанс: если смешать два цвета «равноправно», что можно сделать в «линейных» координатах типа RGB, CMY или XYZ покоординатным средним арифметическим, то полученный цвет не обязательно будет смотреться как средний между этими (и в смысле яркости, и в смысле насыщености, и в смысле оттенка). Если брать среднее в одной из систем координат Lab или ещё чего-то близкого, результат будет практически «правильный» (т. к. это всё равно некоторое приближение).

Поместил в оффтоп, потому что многие люди, имевшие дело с RGB, ничего плохого в том, что среднее между жёлтым и синим — это вдруг вот такой серый, не заметят. [Люди, испорченные красками, захотят зелёный, хотя равноотстоящим по оттенку будет и ещё какой-нибудь малиновый, ну и вообще пигменты могут смешиваться довольно неинтуитивно.] Тем более что такие цвета будут всегда лежать в пространстве представимых устройством, если смешиваемые лежали, а вот с «перцепционным» (как это лучше по-русски?) средним всё не так хорошо. Для подобных вашему приложений среднее в RGB — вполне нормально. (Кстати, мне тоже не нравится, когда на графиках одни линии перекрывают другие.)

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 20:10 


28/11/11
2884
У меня пока типовая часть графика как-то так выходит:
Изображение

Ужасный код этого дела:

(Оффтоп)

Код:
\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}

\path [fill=lightgray] (-0.01,-0.2) rectangle (6.01,2.2); %серый фон, внутри которого будут все шкалы

\draw [thick] (0,0) -- (6,0); %нижняя шкала
\draw [thick] (0,1) -- (6,1); %средняя шкала
\draw [thick] (0,2) -- (6,2); %верхняя шкала

%засечки на нижней шкале
\draw (0, -0.1) -- (0, 0.1);
\draw (1, -0.1) -- (1, 0.1);
\draw (2, -0.1) -- (2, 0.1);
\draw (3, -0.1) -- (3, 0.1);
\draw (4, -0.1) -- (4, 0.1);
\draw (5, -0.1) -- (5, 0.1);
\draw (6, -0.1) -- (6, 0.1);

%засечки на средней шкале
\draw (0, 0.9) -- (0, 1.1);
\draw (1, 0.9) -- (1, 1.1);
\draw (2, 0.9) -- (2, 1.1);
\draw (3, 0.9) -- (3, 1.1);
\draw (4, 0.9) -- (4, 1.1);
\draw (5, 0.9) -- (5, 1.1);
\draw (6, 0.9) -- (6, 1.1);

%засечки на верхней шкале
\draw (0, 1.9) -- (0, 2.1);
\draw (1, 1.9) -- (1, 2.1);
\draw (2, 1.9) -- (2, 2.1);
\draw (3, 1.9) -- (3, 2.1);
\draw (4, 1.9) -- (4, 2.1);
\draw (5, 1.9) -- (5, 2.1);
\draw (6, 1.9) -- (6, 2.1);

%красная линия
\draw [red, thick] (2,0) -- (4,1);
\draw [red, thick] (4,1) -- (4,2);

%синяя линия
\draw [blue, thick] (3,0) -- (5,1);
\draw [blue, thick] (5,1) -- (3,2);

%синие кружочки
\draw [fill, red] (2,0) circle [radius=0.1];
\draw [fill, red] (4,1) circle [radius=0.1];
\draw [fill, red] (4,2) circle [radius=0.1];

%красные кружочки
\draw [fill, blue] (3,0) circle [radius=0.1];
\draw [fill, blue] (5,1) circle [radius=0.1];
\draw [fill, blue] (3,2) circle [radius=0.1];

\end{document}


Области пересечений в подобных случаях -- параллелограммы, понятно как искать координаты их вершин. Но нельзя ли как-то свойство иметь в области пересечения смешанный цвет (записанное Red_Herring на предыдущей странице) определить глобально? Было бы супер, хотя понимаю что овервещь хочу.

-- 14.11.2014, 20:11 --

arseniiv, очень интересные замечания! Ничего прежде не слышал про Lab, и вообще, теперь будет что гуглить. Спасибо!

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 20:33 
Заслуженный участник


27/04/09
28128
Честно говоря, я хотел написать что-то более полезное (непосредственно по теме всё равно нечего предложить), а получилось даже как-то сумбурно. :-) Суть как раз в том, что читатели статьи как раз вряд ли будут возражать против «линейного» смешивания хоть с помощью того же среднего в RGB, т. к. это «схематическое» применение. Другой аргумент в том, что цвет со средним воспринимаемым оттенком — это не непрерывная функция от двух других цветов, т. к. оттенки образуют что-то, гомеоморфное окружности. Ну и брать среднее всяко проще, чем преобразовывать туда, брать среднее и преобразовывать назад (что сложнее преобразования вперёд, если надо проецировать не входящие в пространство представимых в sRGB цветов на его край).

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 20:58 


28/11/11
2884
Читаю вот этот пункт документации (стр. 341) -- 23.3 Blend Modes -- про предусмотренные TikZ типы смешения цветов. Предупреждают, что для многих принтеров может оказаться проблемой корректно напечатать такие вещи.

Но, например, вот этот код (Venn diagramm with PGF 3.0 blend mode) выдаёт мне ошибку:
Код:
Package pgfkeys Error: I do not know the key '/tikz/blend group' and I am going to ignore it. Perhaps you misspelled it. \begin{tikzpicture}[blend group=screen]

Что я делаю не так?

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 00:06 
Заслуженный участник
Аватара пользователя


31/01/14
11056
Hogtown
longstreet в сообщении #930985 писал(а):
%засечки на верхней шкале
\draw (0, 1.9) -- (0, 2.1);
\draw (1, 1.9) -- (1, 2.1);
\draw (2, 1.9) -- (2, 2.1);
\draw (3, 1.9) -- (3, 2.1);
\draw (4, 1.9) -- (4, 2.1);
\draw (5, 1.9) -- (5, 2.1);
\draw (6, 1.9) -- (6, 2.1);


Ну можно проще

Используется синтаксис LaTeX
\begin{tikzpicture}
\foreach \j in {0,1,...,6}
\draw (\j,1.9)--(\j,2.1);
\end{tikzpicture}


и т.д.

У меня код с диаграммами Ванна работает. Проверьте свою версию pgf (например она записана в log проецируемого док-та)

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 13:15 


28/11/11
2884
Red_Herring в сообщении #931102 писал(а):
Ну можно проще

Круто, спасибо!

Red_Herring в сообщении #931102 писал(а):
Проверьте свою версию pgf (например она записана в log проецируемого док-та)

Там такая строчка:
Код:
Package: pgf 2008/01/15 v2.10 (rcs-revision 1.12)


А какая должна быть и как обновить? (У меня MikTex и Windows.)

-- 15.11.2014, 13:48 --

Попытался проапргейдить pgf согласно инструкции на StackExchange, но строчка версии не изменилась.

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:00 
Заслуженный участник
Аватара пользователя


31/01/14
11056
Hogtown
Я про MikTeX мало знаю. Устанавливал знакомым пару раз. Я написал все в http://dxdy.ru/post861742.html#p861742 про TeXLive, и предложил написать про MikTeX тем, кто знает. Увы, никто не откликнулся

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:03 


28/11/11
2884
А у меня оказалась не последняя версия пакета pgf? 2, а должна быть 3?

-- 15.11.2014, 14:29 --

Согласно этой инструкции обновил все пакеты через MikTeX, теперь Package Manager изнутри себя показывает версию 3.0.0 у PGF. Но та диаграмма Венна выдаёт прежнюю ошибку.

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:29 
Заслуженный участник
Аватара пользователя


31/01/14
11056
Hogtown
longstreet в сообщении #931262 писал(а):
А у меня оказалась не последняя версия пакета pgf? 2, а должна быть 3?


У Вас 2.1 — практически предпоследняя (там сразу выскочила 3.0)

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:32 


28/11/11
2884
Если в строке
Код:
\begin{tikzpicture}[blend group=screen]

убираю квадратные скобки и всё что в них -- то пример работает, но никакого смешения цветов нет.

-- 15.11.2014, 14:45 --

longstreet в сообщении #931262 писал(а):
Package Manager изнутри себя показывает версию 3.0.0 у PGF

Хотя лог файл по-прежнему выдаёт 2.1, кхм.

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:53 
Заслуженный участник
Аватара пользователя


31/01/14
11056
Hogtown
Сравниваем главу 21 pgfmanual 2.1 и 23 от 3.0 и видим, что в 3.0 появилась секция 23.3 Blend Modes а 21.3 стала 23.4

 Профиль  
                  
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:57 


28/11/11
2884
Отлично! Теперь точно понятно в чём проблема.

-- 15.11.2014, 15:17 --

Получилось запустить пример с диаграммой Венна. Использовал http://tex.stackexchange.com/a/161666.

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

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



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

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


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

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