该代码实现了一种算法,用于计算规则三维网格上三角形网格曲面的最近点变换。最近点变换可以找到到三角形网格的欧氏距离。此外,它可以计算曲面上最近的点、网格中最近的三角形面以及距离的梯度。距离等计算到曲面的指定距离内。通过求解Eikonal方程计算最近点、最近面、到网格表面距离的距离和梯度采用特征线法。借助计算几何和多面体扫描转换,有效地实现了特征线方法。计算出的距离精确到机器精度以内。该算法的计算复杂性在计算距离的网格点数量和网格大小方面都是线性的。因此,对于许多问题,它具有最佳的计算复杂度。访问http://www.its.caltech.edu/~肖恩/用于求解静态Hamilton-Jacobi方程的出版物,特别是用于计算CPT的出版物。
班级状态<3,T>和状态<2,T>包含CPT包的标准接口(C++接口)。如果使用标准接口,则没有要构建的库。只包括氯化石蜡。小时以获取模板化类库。
要使用标准接口,请实例化状态<3,T>或状态<2,T>类。其成员函数提供接口。有关此文档,请参考类。
我使用g++(GCC)3.4.2编译了这个库。如果使用不同的编译器或版本,则可能需要修改代码。
标题中包含一个C接口和一个fortran接口:cpt.h(立方英尺/小时)和cpt_f.h(立方英尺小时)分别是。这些接口是自由函数,类似于C++接口的成员函数。
C接口不在cpt命名空间中。相反,函数具有氯化石蜡_
前缀。例如:cpt_closest_point_transform_3()。C接口封装了标准接口。fortran接口中的函数具有cpt_前缀和_f后缀。例如:cpt_closest_point_transform_3_f()。fortran接口包装了C接口。
C和fortran接口都实例化了状态<3,T>和状态<2,T>因此,您必须创建并链接库。使用gnu“make”构建氯化石蜡。一
档案文件。
cpt_driver2和cpt_drivers3是使用cpt包的示例应用程序。他们从文件中读取b-rep,并将距离、距离梯度、最近点和最近面的变换写入文件。