RU2597480C1 - METHOD FOR PARALLEL PROCESSING OF THREE-DIMENSIONAL BODIES IN b-rep REPRESENTATION - Google Patents
METHOD FOR PARALLEL PROCESSING OF THREE-DIMENSIONAL BODIES IN b-rep REPRESENTATION Download PDFInfo
- Publication number
- RU2597480C1 RU2597480C1 RU2015118397/08A RU2015118397A RU2597480C1 RU 2597480 C1 RU2597480 C1 RU 2597480C1 RU 2015118397/08 A RU2015118397/08 A RU 2015118397/08A RU 2015118397 A RU2015118397 A RU 2015118397A RU 2597480 C1 RU2597480 C1 RU 2597480C1
- Authority
- RU
- Russia
- Prior art keywords
- faces
- processing
- graph
- rep
- dimensional bodies
- Prior art date
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
Description
Область техникиTechnical field
Настоящее изобретение относится к области обработки трехмерных тел в B-Rep представлении, а именно обработке трехмерных тел с использованием параллельных вычислений.The present invention relates to the field of processing three-dimensional bodies in a B-Rep representation, namely, processing three-dimensional bodies using parallel computing.
Предшествующий уровень техникиState of the art
Из существующего уровня техники известны технические решения «Parameterizing a 3d modeled object for tessellation» [Заявка на патент № US2014184599, з. 28.12.2012 г.] и «Tessellation of a Parameterized 3D Modeled Object», заявка на патент № US2014184598, з. 28.12.2012 г.]. Оба технических решения описывают способы обработки трехмерных моделей для решения задач построения сеток (триангуляции).The technical solutions known for the "Parameterizing a 3d modeled object for tessellation" [Patent Application No. US2014184599, z. December 28, 2012] and "Tessellation of a Parameterized 3D Modeled Object", patent application No. US2014184598, s. December 28, 2012]. Both technical solutions describe methods for processing three-dimensional models to solve the problems of meshing (triangulation).
При этом для решения задачи триангуляции не возникает необходимости преобразования объектов внутри тела в B-Rep представлении, например, геометрических объектов (поверхностей, кривых, точек), используемых соответствующими топологическими объектами (гранями, ребрами, вершинами). Соответственно, указанные технические решения не могут быть применены к случаям, когда такие преобразования к телу в B-Rep представлении необходимо применить. Заявляемое изобретение адресует подобные случаи. Moreover, to solve the triangulation problem, there is no need to transform objects inside the body in the B-Rep representation, for example, of geometric objects (surfaces, curves, points) used by the corresponding topological objects (faces, edges, vertices). Accordingly, these technical solutions cannot be applied to cases where such transformations to the body in the B-Rep representation must be applied. The claimed invention addresses such cases.
Сущность изобретенияSUMMARY OF THE INVENTION
Задачей, на решение которой направлено заявляемое изобретение, является ускорение обработки трехмерных тел в B-Rep представлении за счет использования параллельных вычислений. B-Rep представление описывается с помощью структуры элементов, связных между собой (вершин, ребер, граней и др.). В силу связности элементов между собой (например, в замкнутом теле каждое ребро разделяется двумя гранями, а каждая вершина разделяется как минимум двумя ребрами) эффективное использование параллельных вычислений сильно затруднено (по причине сильной зависимости по данным).The task to which the invention is directed is to accelerate the processing of three-dimensional bodies in a B-Rep representation through the use of parallel computing. B-Rep representation is described using the structure of elements connected among themselves (vertices, edges, faces, etc.). Due to the connected elements (for example, in a closed body, each edge is divided by two faces, and each vertex is separated by at least two edges), the effective use of parallel computing is very difficult (due to the strong dependence on the data).
Данная задача решается посредством обработки трехмерных тел в B-Rep представлении с использованием параллельных вычислений. Структуру B-Rep представления преобразуют в граф зависимостей между гранями тела, предварительно формируя массивы зависимостей между гранями на основании информации о связности граней через дочерние элементы (вершины или ребра тела в B-Rep представлении). Отношение «зависимости» между гранями Fi и Fj обозначает требование, что грань Fj может быть обработана только после грани Fi. При этом массивы зависимостей формируют в памяти вычислительного устройства, используя по меньшей мере идентификаторы граней и принадлежащих им вершин, а также идентификаторы вершин и граней, к которым принадлежит каждая вершина. После чего при необходимости оптимизируют граф, исключая в нем дублирующие зависимости, а параллельные вычисления применяют к обработке граней в полученном графе, обрабатывая каждую последующую грань после обработки всех граней, предшествующих ей в графе.This problem is solved by processing three-dimensional bodies in the B-Rep representation using parallel computing. The structure of B-Rep representations is transformed into a dependency graph between the faces of the body, previously forming arrays of dependencies between the faces based on information about the connectivity of the faces through child elements (vertices or edges of the body in the B-Rep representation). The relationship “dependencies” between the faces Fi and Fj denotes the requirement that the face Fj can only be processed after the face Fi. In this case, dependency arrays are formed in the memory of the computing device using at least the identifiers of the faces and their vertices, as well as the identifiers of the vertices and faces to which each vertex belongs. Then, if necessary, the graph is optimized, eliminating duplicate dependencies in it, and parallel calculations are applied to the processing of faces in the resulting graph, processing each subsequent face after processing all the faces preceding it in the graph.
Также граф зависимостей между гранями тела может быть представлен в форме таблиц.Also, the graph of dependencies between the faces of the body can be represented in the form of tables.
Параллельные вычисления ведут с одновременным использованием как минимум двух вычислительных устройств. Для повышения эффективности способа при наличии свободных мощностей вычислительной техники соответствующее вычислительное устройство анализирует наличие граней, незадействованных в обработке в данный момент времени, и при получении положительного отклика начинает их обработку. Под вычислительным устройством понимают любое устройство, способное производить вычисления. Примерами вычислительных устройств могут служить центральный процессор компьютера, ядро центрального процессора, гипер-поток ядра процессора, ядра и гипер-потоки со-процессора или графического ускорителя, узлы вычислительного кластера и т.д. При этом параллельные вычисления могут быть использованы на любом уровне вычислительной техники, например, с использованием векторных инструкций процессора, многопоточного программирования, программирования на системах с распределенной памятью (кластерах), на системах с использованием со-процессоров и графических ускорителей, а также с использованием произвольных комбинаций вышеперечисленных способов.Parallel computing is carried out with the simultaneous use of at least two computing devices. To increase the efficiency of the method in the presence of free computing power, the corresponding computing device analyzes the presence of faces that are not involved in processing at a given time, and upon receiving a positive response, begins processing them. A computing device is understood to mean any device capable of performing calculations. Examples of computing devices include a computer’s central processor, a central processor core, a hyper-thread of a processor’s core, cores and hyper-threads of a co-processor or graphics accelerator, nodes of a computing cluster, etc. At the same time, parallel computing can be used at any level of computer technology, for example, using vector processor instructions, multi-threaded programming, programming on systems with distributed memory (clusters), on systems using co-processors and graphics accelerators, as well as using arbitrary combinations of the above methods.
Под памятью понимают любой вид физического устройства или среды для хранения данных на вычислительном устройстве, включая регистры и кэш процессора, динамическую память с произвольным доступом (DRAM), статическую память с произвольным доступом (SRAM), любые виды запоминающих устройств (например, HDD и SSD).Memory refers to any kind of physical device or medium for storing data on a computing device, including registers and processor cache, dynamic random access memory (DRAM), random access static memory (SRAM), any kind of storage device (for example, HDD and SSD )
Технически результатом, обеспечиваемым приведенной совокупностью признаков, является уменьшение времени обработки трехмерных тел в B-Rep представлении.Technically, the result provided by the given set of features is to reduce the processing time of three-dimensional bodies in the B-Rep representation.
Описанный способ может применяться для конвертации трехмерных тел между различными форматами, восстановления, исправления и прочего изменения геометрических данных в трехмерных телах. Также экспертам в предметной области очевидно его применение к иным вариантам использования для обработки трехмерных тел, например, для решения задач визуализации, построения сеток и др.The described method can be used to convert three-dimensional bodies between different formats, restore, correct, and other changes to geometric data in three-dimensional bodies. It is also obvious to experts in the subject field that it can be applied to other use cases for processing three-dimensional bodies, for example, for solving visualization problems, building grids, etc.
Краткое описание чертежейBrief Description of the Drawings
Сущность изобретения поясняется рисункамиThe invention is illustrated by drawings.
Рис. 1 - Тело, имеющее B-Rep представление (11). B-Rep (Boundary representation) - способ представления тела с помощью структуры данных, содержащей сведения о границах объема (вершинах, ребрах, гранях) и их соединении друг с другом [http://wap.ism-06-2.ru/shpora.php?razdel=5&id=402&]. Fig. 1 - A body having a B-Rep representation (11). B-Rep (Boundary representation) - a way of representing a body using a data structure containing information about the boundaries of the volume (vertices, edges, faces) and their connection with each other [http://wap.ism-06-2.ru/shpora .php? razdel = 5 & id = 402 &].
Рис. 2 и 3 - B-Rep представление и его внутренняя структура. На рис. 2 и 3 использованы следующие обозначения:Fig. 2 and 3 - B-Rep representation and its internal structure. In fig. 2 and 3, the following notation is used:
V1, V2 - вершины;V1, V2 - peaks;
E1, E2, E3 - ребра;E1, E2, E3 - ribs;
F1, F2, F3 - грани.F1, F2, F3 - faces.
Рис. 4 - модель прямоугольного параллелепипеда в B-Rep представлении. На рис. 4 использованы следующие обозначения:Fig. 4 is a model of a rectangular parallelepiped in a B-Rep representation. In fig. 4 the following notation is used:
0, 1, …, 7 - вершины;0, 1, ..., 7 - peaks;
F0, F1,…, F5 - грани.F0, F1, ..., F5 are faces.
Рис. 5 и 6 - графы зависимостей граней тела, изображенного на рис. 4, полный и оптимизированный.Fig. 5 and 6 - dependency graphs of the faces of the body shown in Fig. 4, complete and optimized.
Рис.7 - пример фрагмента сложного графа зависимостей граней тела.Fig. 7 is an example of a fragment of a complex dependency graph of the faces of a body.
Подробное описание изобретенияDETAILED DESCRIPTION OF THE INVENTION
Под элементами тела в B-Rep представлении (Рис. 2 и 3) понимаются грани, ребра, вершины. Элементы B-Rep представления упорядочены по иерархическому принципу (Рис. 3), где старшие элементы состоят из младших элементов. Например, каждая грань в рамках B-Rep представления состоит из ребер, а каждое ребро состоит из вершин. В зависимости от вида трехмерного тела иерархический принцип может применяться и к другим элементам B-Rep представления, таким как поверхности и кривые.Body elements in the B-Rep representation (Fig. 2 and 3) are understood to mean faces, edges, and vertices. Elements of the B-Rep representation are ordered according to a hierarchical principle (Fig. 3), where the senior elements are composed of minor elements. For example, each face in the B-Rep view consists of edges, and each edge consists of vertices. Depending on the type of the three-dimensional body, the hierarchical principle can be applied to other elements of the B-Rep representation, such as surfaces and curves.
В качестве примера тела, иллюстрирующего применение способа, выбран прямоугольный параллелепипед (см. Рис. 4). Для тела в B-Rep представлении (Рис. 4) создаем набор элементов, составляющих данное представление и выстроенных по иерархическому принципу. Например, для тела в B-Rep представлении (Рис. 4) создаем массив вершин (V0-V7), массив граней (F0-F5), составляющих данное B-Rep представление (Рис. 4). Количество и содержание этих массивов зависит от конкретного трехмерного тела. As an example of a body illustrating the application of the method, a rectangular parallelepiped was chosen (see Fig. 4). For the body in the B-Rep representation (Fig. 4), we create a set of elements that make up this representation and are arranged in a hierarchical manner. For example, for a body in the B-Rep representation (Fig. 4) we create an array of vertices (V0-V7), an array of faces (F0-F5) that make up this B-Rep representation (Fig. 4). The number and content of these arrays depends on the particular three-dimensional body.
Затем одновременно создаем 2 таблицы:Then at the same time we create 2 tables:
1. Таблицу, содержащую номера всех граней и номера принадлежащих ей вершин (см. Табл. 1);1. A table containing the numbers of all faces and the numbers of its vertices (see Table 1);
2. Таблицу, содержащую номера всех вершин и номера граней, к которым данная вершина принадлежит (см. Табл. 2).2. A table containing the numbers of all vertices and the numbers of faces to which this vertex belongs (see Table 2).
Табл.1. Соответствие грани и номеров принадлежащих ей вершинTable 1. Correspondence of the face and the numbers of its vertices
Табл.2. Соответствие вершины и номеров граней, к которым принадлежит данная вершинаTable 2. Correspondence of the vertex and the number of faces to which this vertex belongs
После чего, используя данные таблиц (Табл. 1 и 2), формируем таблицу зависимостей между гранями (Табл. 3). Эта таблица выражает зависимость между «предшествующей» гранью (левый столбец) и «последующими» гранями (правый столбец). Термины «предшествующий» и «последующий» указывают на то, что любая «последующая» грань может быть обработана только после обработки всех «предшествующих» граней.Then, using the data from the tables (Table 1 and 2), we form a table of dependencies between the faces (Table 3). This table expresses the relationship between the “previous” face (left column) and the “subsequent” faces (right column). The terms “previous” and “subsequent” indicate that any “subsequent” face can be processed only after processing all “previous” faces.
Табл.3. Таблица зависимостей между гранямиTable 3. Table of dependencies between faces
Далее для тела в B-Rep представлении формируем граф зависимостей граней, в котором ребра обозначают отношение зависимости «предшествующая» - «последующая» грань. На Рис.5 хорошо видно, что такой граф содержит избыточные ребра, например, между гранями F0 и F4 существуют три пути, соединяющих их: F0-F2-F4, F0-F3-F4 и F0-F4. Это обусловлено тем, что некоторые грани одновременно связаны с несколькими «предшествующими» гранями. Эта избыточность может увеличить время обработки тела, т.к. потребуются дополнительные проверки условия того, что все «предшествующие» грани были обработаны до начала обработки каждой «последующей» грани. Соответственно для того, чтобы ускорить процесс обработки, можно оптимизировать граф, то есть сократить зависимость грани от «предшествующих» ей граней до минимума. Оптимизируем граф, исключая для каждой грани те «предшествующие» грани, которые являются «предшествующими» для других «предшествующих» граней (см. Табл.4). Next, for the body in the B-Rep representation, we form a graph of the dependencies of the faces, in which the edges indicate the relationship of the relationship "previous" - "subsequent" face. In Fig. 5 it is clearly seen that such a graph contains redundant edges, for example, between the faces F0 and F4 there are three paths connecting them: F0-F2-F4, F0-F3-F4 and F0-F4. This is due to the fact that some faces are simultaneously associated with several “previous” faces. This redundancy can increase the processing time of the body, as additional checks will be required for the condition that all the “previous” faces have been processed before the start of processing each “subsequent” face. Accordingly, in order to speed up the processing process, it is possible to optimize the graph, that is, reduce the dependence of the face on the “previous” faces to a minimum. We optimize the graph, excluding for each face those "previous" faces that are "previous" for other "previous" faces (see Table 4).
Табл.4. Таблица зависимостей между гранямиTable 4. Table of dependencies between faces
В примере выше, для F4 исключаем F0 как «предшествующую», т.к. F0 является «предшествующей» для F2 и F3, которые сами являются «предшествующими» к F4. На основании таблицы формируем оптимизированный граф (Рис. 6). После чего начинаем обработку в соответствии с оптимизированным графом. После завершения обработки F1 и при переходе к обработке «последующих» граней F2 и F3 (Рис. 6) возникает возможность применения параллельных вычислений в силу независимости обработки F2 и F3 друг от друга. Для повышения эффективности параллельных вычислений может быть использован способ, называемый «воровством задач» (от англ. “work stealing”).In the example above, for F4, exclude F0 as “previous”, because F0 is “preceding” for F2 and F3, which themselves are “preceding” to F4. Based on the table, we form an optimized graph (Fig. 6). Then we begin processing in accordance with the optimized graph. After the processing of F1 is completed and when the “subsequent” faces F2 and F3 are processed (Fig. 6), it becomes possible to use parallel computations due to the independence of the processing of F2 and F3 from each other. To increase the efficiency of parallel computing, a method called “theft of tasks” (from the English “work stealing”) can be used.
Этот принцип может быть пояснен на следующем примере. Для больших сложных B-Rep тел ветвления в графе зависимостей (когда от одной «предшествующей» грани зависит множество «последующих») могут возникнуть произвольным образом. На рис. 7 приведен пример более сложного графа зависимостей со множеством ветвлений. Обязательное использование параллелизма при каждом таком ветвлении породило бы создание избыточного количества ВУ (например, количество вычислительных потоков, большее, чем количество ядер в центральном процессоре). Это привело бы к замедлению, а не ускорению вычислений, что, очевидно, не эффективно. Вместо такого «форсированного» параллелизма используют способ «воровства задач». Концепция «воровства задач» заключается в том, что каждое ВУ при завершении обработки своих имеющихся элементов (например, граней) пытается найти другие необработанные элементы. При этом может происходить отбирание («воровство») элементов у другого вычислительного устройства, над которыми оно уже начало работать. В заявленном способе реализация данной концепции состоит в том, что при обработке элементов B-Rep представления (граней) каждое работающее ВУ анализирует наличие элементов, незадействованных в обработке в данный момент времени, и при получении положительного отклика начинает обработку соответствующих элементов.This principle can be explained by the following example. For large complex B-Rep bodies, branching in the dependency graph (when many “follow-up” depends on one “previous” face) can occur arbitrarily. In fig. Figure 7 shows an example of a more complex dependency graph with many branches. The mandatory use of parallelism for each such branching would create the creation of an excessive number of slaves (for example, the number of computational threads is greater than the number of cores in the central processor). This would lead to a slowdown, not an acceleration of computation, which is obviously not effective. Instead of such “forced” parallelism, the method of “theft of tasks” is used. The concept of "theft of tasks" is that each WU, when processing its existing elements (for example, faces) is completed, tries to find other unprocessed elements. In this case, the taking away (“theft”) of elements from another computing device, on which it has already begun to work, can take place. In the claimed method, the implementation of this concept consists in the fact that when processing elements of the B-Rep representation (faces), each working WU analyzes the presence of elements that are not involved in processing at a given time, and upon receiving a positive response, it starts processing the corresponding elements.
В зависимости от особенностей B-Rep представления или вычислительных алгоритмов реализация способа может быть основана на информации о связности граней посредством ребер, а не вершин.Depending on the features of the B-Rep representation or computational algorithms, the implementation of the method may be based on information about the connectivity of the faces by edges rather than vertices.
Таким образом, данное изобретение ускоряет процесс обработки трехмерных тел в B-Rep представлении за счет использования параллельной обработки информации.Thus, this invention accelerates the process of processing three-dimensional bodies in the B-Rep representation through the use of parallel information processing.
Claims (1)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2015118397/08A RU2597480C1 (en) | 2015-05-18 | 2015-05-18 | METHOD FOR PARALLEL PROCESSING OF THREE-DIMENSIONAL BODIES IN b-rep REPRESENTATION |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2015118397/08A RU2597480C1 (en) | 2015-05-18 | 2015-05-18 | METHOD FOR PARALLEL PROCESSING OF THREE-DIMENSIONAL BODIES IN b-rep REPRESENTATION |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2597480C1 true RU2597480C1 (en) | 2016-09-10 |
Family
ID=56892939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2015118397/08A RU2597480C1 (en) | 2015-05-18 | 2015-05-18 | METHOD FOR PARALLEL PROCESSING OF THREE-DIMENSIONAL BODIES IN b-rep REPRESENTATION |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2597480C1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2647627C1 (en) * | 2016-11-08 | 2018-03-16 | Федеральное государственное бюджетное учреждение науки Федеральный исследовательский Центр "Карельский научный центр Российской академии наук" | Method of controlling computer system memory |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2011149310A (en) * | 2009-05-04 | 2013-06-10 | Турбомека | DATA STRUCTURE FOR THE PARTS LIST |
US20140136151A1 (en) * | 2012-11-09 | 2014-05-15 | Gary Arnold Crocker | Methods and Systems for Generating Continuous Surfaces from Polygonal Data |
US20140184599A1 (en) * | 2012-12-28 | 2014-07-03 | Dassault Systemes | Parameterizing a 3d modeled object for tessellation |
US8994724B2 (en) * | 2010-12-17 | 2015-03-31 | IntegrityWare, Inc. | Methods and systems for generating continuous surfaces from polygonal data |
-
2015
- 2015-05-18 RU RU2015118397/08A patent/RU2597480C1/en active IP Right Revival
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2011149310A (en) * | 2009-05-04 | 2013-06-10 | Турбомека | DATA STRUCTURE FOR THE PARTS LIST |
US8994724B2 (en) * | 2010-12-17 | 2015-03-31 | IntegrityWare, Inc. | Methods and systems for generating continuous surfaces from polygonal data |
US20140136151A1 (en) * | 2012-11-09 | 2014-05-15 | Gary Arnold Crocker | Methods and Systems for Generating Continuous Surfaces from Polygonal Data |
US20140184599A1 (en) * | 2012-12-28 | 2014-07-03 | Dassault Systemes | Parameterizing a 3d modeled object for tessellation |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2647627C1 (en) * | 2016-11-08 | 2018-03-16 | Федеральное государственное бюджетное учреждение науки Федеральный исследовательский Центр "Карельский научный центр Российской академии наук" | Method of controlling computer system memory |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20180012439A (en) | Accelerator in convolutional neural network and operation method thereof | |
US11024073B2 (en) | Method and apparatus for generating virtual object | |
US9158719B2 (en) | Heterogeneous parallel systems for accelerating simulations based on discrete grid numerical methods | |
WO2016173260A1 (en) | Method and apparatus for decomposing three-dimensional model based on generalized cylinders | |
US11107187B2 (en) | Graph upscaling method for preserving graph properties | |
Mueller‐Roemer et al. | Ternary sparse matrix representation for volumetric mesh subdivision and processing on GPUs | |
Chen et al. | Localizing the delaunay triangulation and its parallel implementation | |
RU2597480C1 (en) | METHOD FOR PARALLEL PROCESSING OF THREE-DIMENSIONAL BODIES IN b-rep REPRESENTATION | |
Chao et al. | Improved hybrid bounding box collision detection algorithm | |
US20210406432A1 (en) | Calculation method, medium and system for real-time physical engine enhancement based on neural network | |
Kuhn et al. | Incremental division of very large point clouds for scalable 3d surface reconstruction | |
Roberge et al. | Comparison of parallel particle swarm optimizers for graphical processing units and multicore processors | |
Guo et al. | A 3D Surface Reconstruction Method for Large‐Scale Point Cloud Data | |
Torelli et al. | A high performance 3d exact Euclidean distance transform algorithm for distributed computing | |
Yu et al. | Research on tool path planning method of nurbs surface based on cpu-gpu parallel computing | |
CN115409678A (en) | Method for fusing operators of neural network and related product | |
RU2600532C2 (en) | Method of converting 3d models using parallel information processing | |
Zhang et al. | Expanding the edge: Enabling efficient winograd cnn inference with deep reuse on edge device | |
Zhu et al. | Calculating the medial axis of a CAD model by multi-CPU based parallel computation | |
Popov et al. | Modified method of adaptive artificial viscosity for solution of gas dynamics problems on parallel computer systems | |
Wang et al. | An improved collision detection algorithm based on GPU | |
CN117893712B (en) | Surface structure grid generation method and device | |
US20240086582A1 (en) | Distributed-memory parallel processing of finite elements based on contact pair splitting | |
Raettig | Accelerating point set registration for automated aerial refueling | |
Gruppi et al. | Using Rational Numbers and Parallel Computing to Efficiently Avoid Round-off Errors on Map Simplification. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20200519 |
|
NF4A | Reinstatement of patent |
Effective date: 20210316 |