Browse Source

- 模型暂时不会需要求交的情况,弃用求交

- penalty_par_distance惩罚参数不够精细导致多线缆失败
- 优化卡箍空间数据
divide_struct_def_imp
郑敬润 10 months ago
parent
commit
3ed815c13f
  1. 39483
      data/Tinyroute_test/clip2/clips_with_dir.xml
  2. 0
      data/Tinyroute_test/temp/cangti_x_y.xml
  3. 73
      include/Const.h

39483
data/Tinyroute_test/clip2/clips_with_dir.xml

File diff suppressed because it is too large

0
data/Tinyroute_test/clip2/cangti_x_y.xml → data/Tinyroute_test/temp/cangti_x_y.xml

73
include/Const.h

@ -145,25 +145,26 @@ inline double distan(P A, P B, int inOut1, int inOut2)
double len = distan1(A, B);
// 求交判断并赋值惩罚参数
if (intersection_model == 1)
// if (0)
{
LineSegment lineSegment(Vec3f(A.x, A.y, A.z), Vec3f(B.x, B.y, B.z));
static BVH_intersection bvh(mesh);
bool hit = bvh.intersectWithLineSegment(lineSegment);
if (hit == 0)
penalty_par_intersection = 1;
else
penalty_par_intersection = 100; //*原400
// cout << "out: len:" << len << " intersection_distance" << intersection_distance << endl;
//----------------------mark-----------------------//
// 注释下面效果可能好
// if (len > intersection_distance)
// penalty_par_distance = 8;
// else
// penalty_par_distance = 1;
}
// if (intersection_model == 1)
// {
// LineSegment lineSegment(Vec3f(A.x, A.y, A.z), Vec3f(B.x, B.y, B.z));
// static BVH_intersection bvh(mesh);
// bool hit = bvh.intersectWithLineSegment(lineSegment);
// if (hit == 0)
// penalty_par_intersection = 1;
// else
// penalty_par_intersection = 100; //*原400
// // cout << "out: len:" << len << " intersection_distance" << intersection_distance << endl;
// }
//----------------------mark-----------------------
//注释以支持多线缆,这里惩罚参数不够精细,会导致多线缆失败
// if (len > intersection_distance)
// penalty_par_distance = 8;
// else
// penalty_par_distance = 1;
double len1 = sqrt((A.y - Ycenter) * (A.y - Ycenter) + (A.z - Zcenter) * (A.z - Zcenter));
double len2 = sqrt((B.y - Ycenter) * (B.y - Ycenter) + (B.z - Zcenter) * (B.z - Zcenter));
if (len1 < R || len2 < R)
@ -227,22 +228,24 @@ inline double distan(P A, P B)
angel = min(angel, pi / 2 - angel);
double len = distan1(A, B);
if (intersection_model == 1)
// if(0)
{
LineSegment lineSegment(Vec3f(A.x, A.y, A.z), Vec3f(B.x, B.y, B.z));
static BVH_intersection bvh(mesh);
bool hit = bvh.intersectWithLineSegment(lineSegment);
if (hit == 0)
penalty_par_intersection = 1;
else
penalty_par_intersection = 100; //*原400
// cout << "no_out: len:" << len << " intersection_distance" << intersection_distance << endl;
if (len > intersection_distance)
penalty_par_distance = 8;
else
penalty_par_distance = 1;
}
// if (intersection_model == 1)
// {
// LineSegment lineSegment(Vec3f(A.x, A.y, A.z), Vec3f(B.x, B.y, B.z));
// static BVH_intersection bvh(mesh);
// bool hit = bvh.intersectWithLineSegment(lineSegment);
// if (hit == 0)
// penalty_par_intersection = 1;
// else
// penalty_par_intersection = 100; //*原400
// // cout << "no_out: len:" << len << " intersection_distance" << intersection_distance << endl;
// }
//----------------------mark-----------------------
//注释以支持多线缆,这里惩罚参数不够精细,会导致多线缆失败
// if (len > intersection_distance)
// penalty_par_distance = 8;
// else
// penalty_par_distance = 1;
double len1 = sqrt((A.y - Ycenter) * (A.y - Ycenter) + (A.z - Zcenter) * (A.z - Zcenter));
double len2 = sqrt((B.y - Ycenter) * (B.y - Ycenter) + (B.z - Zcenter) * (B.z - Zcenter));

Loading…
Cancel
Save