Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
OpenWalnut
OpenWalnut Core
Commits
32603058
Commit
32603058
authored
Sep 01, 2021
by
Robin Eschbach
Browse files
[CHANGE #530] sapt now checks against whole track
parent
13dca83d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
50 deletions
+7
-50
src/modules/pointConnector/WAngleHelper.cpp
src/modules/pointConnector/WAngleHelper.cpp
+7
-50
No files found.
src/modules/pointConnector/WAngleHelper.cpp
View file @
32603058
...
...
@@ -216,71 +216,28 @@ std::vector< WPosition > WAngleHelper::findSmoothestPath( std::vector< WPosition
return
findSmoothestPath
(
positions
);
}
std
::
vector
<
WPosition
>
out
;
std
::
vector
<
WPosition
>
pos
;
auto
posIter
=
positions
.
begin
();
auto
fibIter
=
fiber
.
begin
();
osg
::
Vec3
*
oldFib
=
nullptr
;
//
Selection before
fiber
if
(
posIter
->
z
()
<
fibIter
->
z
()
)
//
intertwine positions and
fiber
.
while
(
posIter
<
positions
.
end
()
)
{
std
::
vector
<
WPosition
>
pos
;
while
(
posIter
<
positions
.
end
()
&&
posIter
->
z
()
<
fibIter
->
z
()
)
if
(
fibIter
>=
fiber
.
end
()
||
posIter
->
z
()
<
fibIter
->
z
()
)
{
pos
.
push_back
(
*
posIter
);
posIter
++
;
}
pos
.
push_back
(
*
fibIter
);
pos
=
findSmoothestPath
(
pos
);
out
.
insert
(
out
.
end
(),
pos
.
begin
(),
pos
.
end
()
);
}
// Selection between fiber
while
(
fibIter
<
fiber
.
end
()
&&
posIter
<
positions
.
end
()
)
{
if
(
fibIter
->
z
()
==
posIter
->
z
()
)
else
if
(
posIter
->
z
()
==
fibIter
->
z
()
)
{
posIter
++
;
}
else
if
(
fibIter
->
z
()
>
posIter
->
z
()
)
{
std
::
vector
<
WPosition
>
pos
;
if
(
oldFib
!=
nullptr
)
{
pos
.
push_back
(
WPosition
(
*
oldFib
)
);
}
while
(
posIter
<
positions
.
end
()
&&
posIter
->
z
()
<
fibIter
->
z
()
)
{
pos
.
push_back
(
*
posIter
);
posIter
++
;
}
pos
.
push_back
(
WPosition
(
*
fibIter
)
);
pos
=
findSmoothestPath
(
pos
);
out
.
insert
(
out
.
end
(),
pos
.
begin
(),
pos
.
end
()
);
}
else
{
oldFib
=
&
(
*
fibIter
);
pos
.
push_back
(
*
fibIter
);
fibIter
++
;
}
}
// Selection after fiber
if
(
posIter
<
positions
.
end
()
)
{
std
::
vector
<
WPosition
>
pos
;
if
(
oldFib
!=
nullptr
)
{
pos
.
push_back
(
WPosition
(
*
oldFib
)
);
}
while
(
posIter
!=
positions
.
end
()
)
{
pos
.
push_back
(
*
posIter
);
posIter
++
;
}
pos
=
findSmoothestPath
(
pos
);
out
.
insert
(
out
.
end
(),
pos
.
begin
(),
pos
.
end
()
);
}
return
out
;
return
findSmoothestPath
(
pos
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment