213 |
ZVec proj = conn.projectToConnLine(pt); |
ZVec proj = conn.projectToConnLine(pt); |
214 |
pt.z = proj.z; |
pt.z = proj.z; |
215 |
if(intern) { |
if(intern) { |
216 |
if(fract > .94) |
//if(fract > .94) |
217 |
*intern = node.ctr; |
// *intern = node.ctr; |
218 |
else |
//else |
219 |
*intern = proj; |
*intern = proj; |
220 |
intern->z -= 20; |
intern->z -= 20; |
221 |
} |
} |
616 |
*/ |
*/ |
617 |
struct CircularSliceSpan { |
struct CircularSliceSpan { |
618 |
const CircularNode &node; |
const CircularNode &node; |
619 |
float astart; |
ZVec v0; |
620 |
float aend; |
ZVec v1; |
621 |
CircularSliceSpan(const CircularNode &node, |
CircularSliceSpan(const CircularNode &node, |
622 |
float astart, float aend) : |
float astart, float aend) : |
623 |
node(node), astart(astart), aend(aend) { |
node(node), |
624 |
|
v0(node.ctr + node.r * dirVec(astart)), |
625 |
|
v1(node.ctr + node.r * dirVec(aend)) { |
626 |
|
} |
627 |
|
CircularSliceSpan(const CircularNode &node, |
628 |
|
Vec vstart, Vec vend) : |
629 |
|
node(node), |
630 |
|
v0(vstart.x, vstart.y, node.ctr.z), |
631 |
|
v1(vend.x, vend.y, node.ctr.z) { |
632 |
} |
} |
633 |
|
|
634 |
ZVec point(float fract, ZVec *intern = 0) const { |
ZVec point(float fract, ZVec *intern = 0) const { |
635 |
if(intern) *intern = node.ctr - ZVec(0,0,20); |
if(intern) *intern = node.ctr - ZVec(0,0,20); |
636 |
return node.ctr + node.r * lerp(dirVec(astart), dirVec(aend), fract); |
return lerp(v0, v1, fract); |
637 |
} |
} |
638 |
|
|
639 |
}; |
}; |