本文整理汇总了C++中Bezier::Length方法的典型用法代码示例。如果您正苦于以下问题:C++ Bezier::Length方法的具体用法?C++ Bezier::Length怎么用?C++ Bezier::Length使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bezier
的用法示例。
在下文中一共展示了Bezier::Length方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Bezier
CubicSpline::CubicSpline(vector<Vector3> controlPoints, float tightness, int subDivisions) : m_length(0.f)
{
Vector3 endTangent;
for (int i = 0; i < controlPoints.size()-1; i++) {
vector<Vector3> path;
Vector3 start = controlPoints[i];
Vector3 end = controlPoints[i+1];
path.push_back(start);
if (endTangent != Vector3::Zero) {
// start tangent becomes the negative of the previous end tangent
path.push_back(-endTangent + start);
}
if (i < controlPoints.size() - 2) {
Vector3 next = controlPoints[i + 2];
Vector3 line1 = start - end;
Vector3 line2 = end - next;
line1.Normalize();
line2.Normalize();
// average the two vectors to get the normal of reflection
endTangent = Vector3((line1.x + line2.x) / 2.f, (line1.y + line2.y) / 2.f, (line1.z + line2.z) / 2.f);
//endTangent.Normalize();
endTangent *= tightness;
path.push_back(endTangent + end);
}
path.push_back(end);
Bezier bezier = Bezier(path);
float length = bezier.Length(subDivisions);
m_length += length;
m_bezierSections.push_back(std::make_pair(Bezier(bezier), length));
}
}