fix in operator curve handling
parent
79574aa3e6
commit
207e22f1db
|
@ -139,19 +139,17 @@ struct Operator::Grid_Path Operator::FindPath(double start[], double stop[])
|
||||||
double meshStart[] = {discLines[0][uiStart[0]], discLines[1][uiStart[1]], discLines[2][uiStart[2]]};
|
double meshStart[] = {discLines[0][uiStart[0]], discLines[1][uiStart[1]], discLines[2][uiStart[2]]};
|
||||||
double meshStop[] = {discLines[0][uiStop[0]], discLines[1][uiStop[1]], discLines[2][uiStop[2]]};
|
double meshStop[] = {discLines[0][uiStop[0]], discLines[1][uiStop[1]], discLines[2][uiStop[2]]};
|
||||||
|
|
||||||
double foot,dist,minFoot,minDist,minDir;
|
double foot,dist,minFoot,minDist;
|
||||||
|
int minDir;
|
||||||
|
bool UpDir;
|
||||||
unsigned int minPos[3];
|
unsigned int minPos[3];
|
||||||
double startFoot,stopFoot,currFoot;
|
double startFoot,stopFoot,currFoot;
|
||||||
Point_Line_Distance(meshStart,start,stop,startFoot,dist);
|
Point_Line_Distance(meshStart,start,stop,startFoot,dist);
|
||||||
Point_Line_Distance(meshStop,start,stop,stopFoot,dist);
|
Point_Line_Distance(meshStop,start,stop,stopFoot,dist);
|
||||||
currFoot=startFoot;
|
currFoot=startFoot;
|
||||||
|
minFoot=startFoot;
|
||||||
double P[3];
|
double P[3];
|
||||||
|
|
||||||
// cerr << "start pos " << discLines[0][currPos[0]] << " " << discLines[1][currPos[1]] << " " << discLines[2][currPos[2]] << endl;
|
|
||||||
//
|
|
||||||
// FDTD_FLOAT**** array = Create_N_3DArray(numLines);
|
|
||||||
|
|
||||||
while (minFoot<stopFoot)
|
while (minFoot<stopFoot)
|
||||||
{
|
{
|
||||||
minDist=1e300;
|
minDist=1e300;
|
||||||
|
@ -169,11 +167,7 @@ struct Operator::Grid_Path Operator::FindPath(double start[], double stop[])
|
||||||
minFoot=foot;
|
minFoot=foot;
|
||||||
minDist=dist;
|
minDist=dist;
|
||||||
minDir = n;
|
minDir = n;
|
||||||
minPos[0]=currPos[0];
|
UpDir = false;
|
||||||
minPos[1]=currPos[1];
|
|
||||||
minPos[2]=currPos[2];
|
|
||||||
minPos[n]=currPos[n]-1;
|
|
||||||
// array[n][minPos[0]][minPos[1]][minPos[2]] = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((currPos[n]+1)<numLines[n])
|
if ((currPos[n]+1)<numLines[n])
|
||||||
|
@ -185,30 +179,28 @@ struct Operator::Grid_Path Operator::FindPath(double start[], double stop[])
|
||||||
minFoot=foot;
|
minFoot=foot;
|
||||||
minDist=dist;
|
minDist=dist;
|
||||||
minDir = n;
|
minDir = n;
|
||||||
minPos[0]=currPos[0];
|
UpDir = true;
|
||||||
minPos[1]=currPos[1];
|
|
||||||
minPos[2]=currPos[2];
|
|
||||||
minPos[n]=currPos[n]+1;
|
|
||||||
// array[n][minPos[0]][minPos[1]][minPos[2]] = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// cerr << "next best pos " << minDir << " " << " " << discLines[0][minPos[0]] << " " << discLines[1][minPos[1]] << " " << discLines[2][minPos[2]] << endl;
|
minPos[0]=currPos[0];
|
||||||
currPos[0]=minPos[0];
|
minPos[1]=currPos[1];
|
||||||
currPos[1]=minPos[1];
|
minPos[2]=currPos[2];
|
||||||
currPos[2]=minPos[2];
|
if (UpDir)
|
||||||
currFoot=minFoot;
|
{
|
||||||
path.dir.push_back(minDir);
|
currPos[minDir]+=1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
currPos[minDir]+=-1;
|
||||||
|
minPos[minDir]-=1;
|
||||||
|
}
|
||||||
path.posPath[0].push_back(minPos[0]);
|
path.posPath[0].push_back(minPos[0]);
|
||||||
path.posPath[1].push_back(minPos[1]);
|
path.posPath[1].push_back(minPos[1]);
|
||||||
path.posPath[2].push_back(minPos[2]);
|
path.posPath[2].push_back(minPos[2]);
|
||||||
|
currFoot=minFoot;
|
||||||
|
path.dir.push_back(minDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ofstream file("test.vtk",ios_base::out);
|
|
||||||
//
|
|
||||||
// ProcessFields::DumpVectorArray2VTK(file,"path",array,discLines,numLines);
|
|
||||||
// file.close();
|
|
||||||
|
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -862,19 +854,11 @@ bool Operator::CalcPEC()
|
||||||
curv->GetPoint(i-1,p1);
|
curv->GetPoint(i-1,p1);
|
||||||
curv->GetPoint(i,p2);
|
curv->GetPoint(i,p2);
|
||||||
path = FindPath(p1,p2);
|
path = FindPath(p1,p2);
|
||||||
// cerr << p1[0] << " " << p1[1] << " " << p1[2] << endl;
|
|
||||||
// cerr << p2[0] << " " << p2[1] << " " << p2[2] << endl;
|
|
||||||
for (size_t t=0;t<path.dir.size();++t)
|
for (size_t t=0;t<path.dir.size();++t)
|
||||||
{
|
{
|
||||||
// cerr << path.dir.at(t) << " " << path.posPath[0].at(t) << " " << path.posPath[1].at(t) << " " << path.posPath[2].at(t) << endl;
|
// cerr << path.dir.at(t) << " " << path.posPath[0].at(t) << " " << path.posPath[1].at(t) << " " << path.posPath[2].at(t) << endl;
|
||||||
vv[path.dir.at(t)][path.posPath[0].at(t)][path.posPath[1].at(t)][path.posPath[2].at(t)] = 0;
|
vv[path.dir.at(t)][path.posPath[0].at(t)][path.posPath[1].at(t)][path.posPath[2].at(t)] = 0;
|
||||||
vi[path.dir.at(t)][path.posPath[0].at(t)][path.posPath[1].at(t)][path.posPath[2].at(t)] = 0;
|
vi[path.dir.at(t)][path.posPath[0].at(t)][path.posPath[1].at(t)][path.posPath[2].at(t)] = 0;
|
||||||
vv[0][path.posPath[0].at(t)][path.posPath[1].at(t)][path.posPath[2].at(t)] = 0;
|
|
||||||
vi[0][path.posPath[0].at(t)][path.posPath[1].at(t)][path.posPath[2].at(t)] = 0;
|
|
||||||
vv[1][path.posPath[0].at(t)][path.posPath[1].at(t)][path.posPath[2].at(t)] = 0;
|
|
||||||
vi[1][path.posPath[0].at(t)][path.posPath[1].at(t)][path.posPath[2].at(t)] = 0;
|
|
||||||
vv[2][path.posPath[0].at(t)][path.posPath[1].at(t)][path.posPath[2].at(t)] = 0;
|
|
||||||
vi[2][path.posPath[0].at(t)][path.posPath[1].at(t)][path.posPath[2].at(t)] = 0;
|
|
||||||
}
|
}
|
||||||
// cerr << "found path size: " << path.dir.size() << endl;
|
// cerr << "found path size: " << path.dir.size() << endl;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue