You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.7 KiB
53 lines
1.7 KiB
#ifndef NURBSPERFORMER_LOOP_DETECTION_CUH
|
|
#define NURBSPERFORMER_LOOP_DETECTION_CUH
|
|
|
|
#include "device/srf_mesh.cuh"
|
|
#include "map"
|
|
#include "set"
|
|
#include <cuda_runtime.h>
|
|
|
|
|
|
class LoopDetection {
|
|
public:
|
|
SrfMesh *d_s_srfMesh;
|
|
SrfMesh *d_f_srfMesh;
|
|
|
|
float s_paramRegionSize_u;
|
|
float s_paramRegionSize_v;
|
|
|
|
int edgeSampleCnt;
|
|
|
|
glm::vec<2, int> *d_selectedPointsIdx;
|
|
glm::vec2 *d_vectorFields;
|
|
int *d_rotationNumbers;
|
|
|
|
LoopDetection(glm::vec3 *d_s_eval, glm::vec3 *d_f_eval, glm::vec3 *d_s_tan_u,
|
|
glm::vec3 *d_f_tan_u, glm::vec3 *d_s_tan_v,
|
|
glm::vec3 *d_f_tan_v, glm::vec3 *d_s_norm, glm::vec3 *d_f_norm,
|
|
int edgeSampleCnt, float s_paramRegionSize_u,
|
|
float s_paramRegionSize_v);
|
|
|
|
// LoopDetection(SrfMesh *h_s_srfMesh, SrfMesh *h_f_srfMesh, int
|
|
// edgeSampleCnt, float s_paramRegionSize_u,
|
|
// float s_paramRegionSize_v);
|
|
|
|
__host__ void h_initOrientedDisAndVecFields(
|
|
const std::map<std::pair<int, int>, std::set<std::pair<int, int>>>
|
|
&intersectBoxPairs);
|
|
|
|
__host__ void h_getRotationNumber();
|
|
|
|
~LoopDetection();
|
|
};
|
|
|
|
__global__ void g_initOrientedDisAndVecFields(
|
|
SrfMesh *s_srfMesh, SrfMesh *f_srfMesh, int s_cellCnt,
|
|
glm::vec<2, int> *s_cells, glm::vec<2, int> **f_cells, const int *f_cellCnt,
|
|
glm::vec<2, int> *selectedPointsIdx, glm::vec2 *vectorFields);
|
|
|
|
__global__ void g_getRotationNumber(SrfMesh *s_srfMesh, float paramRegionSize_u,
|
|
float paramRegionSize_v,
|
|
glm::vec2 *vectorFields,
|
|
int *rotationNumbers);
|
|
|
|
#endif // NURBSPERFORMER_LOOP_DETECTION_CUH
|
|
|