missing NULL terminator in set_config_x
[geda-gaf.git] / docs / wiki / pcb-projects.ru.html
blobcdbdb27b1559366595f8fef844efabcb65fc7ae8
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html>
4 <head>
5 <link rel="stylesheet" media="screen" type="text/css" href="./style.css" />
6 <link rel="stylesheet" media="screen" type="text/css" href="./design.css" />
7 <link rel="stylesheet" media="print" type="text/css" href="./print.css" />
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 </head>
11 <body>
13 <p>
14 <em>Эта страница доступна также на следующих языках:</em>
15 <a href="pcb-projects.html" class="wikilink1" title="pcb-projects.html">English</a>
16 </p>
18 <h3 class="sectionedit1" id="редактор_топологии_печатной_платы">Редактор топологии печатной платы</h3>
19 <div class="level3">
21 </div>
23 <h5 id="возможность_раздвижки">Возможность «раздвижки»</h5>
24 <div class="level5">
26 <p>
27 Возможность «раздвижки» («plow» feature) — когда при проведении линии с
28 помощью инструмента <strong>LINE</strong> она раздвигает существующие дорожки в стороны,
29 стараясь сохранить, где это возможно, соответствие нормам проектирования.
30 </p>
32 <p>
33 <code>Сложность = 4-5</code>
34 </p>
36 </div>
38 <h5 id="алгоритм_быстрого_округления_точек_привязки">Алгоритм быстрого округления точек привязки</h5>
39 <div class="level5">
41 <p>
42 Реализовать алгоритм быстрого округления точек привязки и разрешить тот
43 случай, когда вставка точки приводит к самопересечению.
44 </p>
46 <p>
47 В <strong>pcb</strong> для всех объектов используется целочисленная координатная
48 система. В коде обрезки полигонов рассчитываются все точки пересечений
49 между двумя несамопересекающимися контурами (помимо прочего, что там
50 делается), но координаты этих точек пересечения тоже должны быть целыми
51 числами.
52 </p>
54 <p>
55 Алгоритм быстрого округления точек привязки замещает два сегмента,
56 пересекающихся не в точках их концов, четырьмя сегментами с координатами,
57 являющимися целыми числами и близкими к исходной точке пересечения
58 (координаты которой не целые числа). Так как такая операция округления в
59 точке пересечения может изменить наклон каждого из четырёх сегментов в
60 сравнении с исходными двумя, она вызывает возможность возникновения новых
61 пересечений между сегментами, замещающими прежние, и другими сегментами
62 контура, не существовавших для первоначальных сегментов. Алгоритм округления
63 точек привязки должен произвести такой набор сегментов, все пересечения
64 которых находятся в конечных точках сегментов с целыми координатами. В
65 существующем коде <strong>pcb</strong> это уже делается, но там используется алгоритм, в
66 теории более медленный по сравнению с другими известными, такими как:
67 </p>
69 <p>
70 “Improved output-sensitive snap rounding,” John Hershberger, Proceedings of
71 the 22nd annual symposium on Computational geomerty, 2006, pp 357-366.
72 <a href="http://doi.acm.org/10.1145/1137856.1137909" class="urlextern" title="http://doi.acm.org/10.1145/1137856.1137909" rel="nofollow">http://doi.acm.org/10.1145/1137856.1137909</a>
73 </p>
75 <p>
76 Алгоритмы, написанные такими авторами, как <em>de Berg</em>, <em>Goodrich</em>,
77 <em>Halperin</em>, <em>Hobby</em> возможно также были бы лучше, чем реализованные в
78 настоящее время.
79 </p>
81 <p>
82 Кроме того, существуют редкие, но реальные ситуации ухудшения, когда
83 результаты округления точек привязки в одном (или обоих) контурах имеют
84 самопересечения, которых не было ранее. Эти самопересечения фатальны для
85 нашего кода обрезки полигонов. Мы не знаем, решают ли эту проблему алгоритмы
86 округления точек привязки, приведённые в этой литературе, или нет, но если
87 нет, нам нужно разработать иной алгоритм, который её решит, с помощью ли
88 умного выбора создаваемых точек округления, или на этапе пост-обработки, на
89 котором самопересечения будут удаляться с минимальным искажением геометрии
90 оригинальных контуров.
91 </p>
93 <p>
94 <code>Сложность = 4-5</code>
95 </p>
97 </div>
99 <h5 id="инструмент_черчения_с_автотрассировкой">Инструмент черчения с автотрассировкой</h5>
100 <div class="level5">
103 По существу с помощью этого инструмента вы могли бы щёлкнуть в начальной
104 точке, переместить перекрестие курсора в какую-то другую (обычно
105 промежуточную) точку, возможно на другом слое, и инструмент автотрассировки
106 показал бы предполагаемый маршрут до этой точки (соблюдая проектные нормы и
107 требования стиля). Если вам не нравится предложенная дорожка, вы могли бы
108 нажать какую-нибудь клавишу, чтобы посмотреть более дорогой вариант, или
109 какую-то другую клавишу, чтобы откатиться к менее дорогому варианту.
110 Предполагаемый маршрут мог бы динамически изменяться при перемещении
111 перекрестия курсора для достижения указанной им точки. Если бы было
112 невозможно найти путь, дорожка бы пропадала. Щелчок мышью приводил бы к
113 добавлению предложенной дорожки и к переходу инструмента в новую начальную
114 точку (таким же образом, как это делается сейчас для инструмента <strong>LINE</strong>).
115 </p>
118 <code>Сложность = 5</code>
119 </p>
121 </div>
123 <h5 id="калькулятор_посадочных_мест_ipc">Калькулятор посадочных мест IPC</h5>
124 <div class="level5">
127 Создать калькулятор посадочных мест, который принимал бы правила IPC и
128 производил посадочное место для <strong>pcb</strong>. Предпочтительно написать его таким
129 образом, чтобы ядро программы не зависело от графического интерфейса, с тем
130 чтобы программу можно было использовать в скриптах для создания больших
131 семейств посадочных мест или привязать её к выбранному графическому
132 интерфейсу (lesstif, gtk, может даже cgi). Может быть потребуется купить
133 IPC-7351 (приблизительно в $100 США) и проверить, что кому-нибудь
134 разрешается произвести такой калькулятор.
135 </p>
138 <code>Сложность = 2</code>
139 </p>
141 </div>
143 <h5 id="экспорт_ipc-356">Экспорт IPC-356</h5>
144 <div class="level5">
147 IPC-D-356 — спецификация выходного формата списка соединений,
148 используемого для производственной проверки печатных плат. Она определяет
149 информацию и о соединениях, и о положении контактных площадок, облегчая,
150 таким образом, использование автоматического тестирования после производства
151 печатной платы. В данном проекте вам надо реализовать программу экспорта,
152 которая бы писала IPC-D-356-совместимый файл из <strong>pcb</strong>. Спецификация
153 IPC-D-356 доступна по адресу:
154 <a href="http://www.solidigm.com/downloads/ipc356.pdf" class="urlextern" title="http://www.solidigm.com/downloads/ipc356.pdf" rel="nofollow">http://www.solidigm.com/downloads/ipc356.pdf</a>.
155 </p>
158 <code>Сложность = 3</code>
159 </p>
161 </div>
163 <h5 id="перечень_последних_загруженных_файлов">Перечень последних загруженных файлов</h5>
164 <div class="level5">
167 В настоящее время в меню <em>Файл</em> программы <strong>pcb</strong> не отображается перечень
168 последних загруженных файлов. Было бы здорово, если бы <strong>pcb</strong> отслеживала
169 несколько последних загруженных пользователем файлов. Это стандартная
170 возможность в других программах.
171 </p>
174 <code>Сложность = 1</code>
175 </p>
177 </div>
178 <!-- EDIT1 SECTION "Редактор топологии печатной платы" [121-] --></body>
179 </html>