- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试实现用于绘制贝塞尔曲线的 Cox De Boor 算法。我已经设法通过设定的度数、控制点的数量和预定义的节点向量生成一些可以接受的东西,但我想调整我的代码,以便它可以在给定任意数量的控制点和任意度数的情况下运行。我 90% 确定我目前遇到的问题,即路径偏离到点 0/0,是由于我没有正确计算节点向量。如果有人能给我一两个提示,我将不胜感激。请注意,我目前正在单独计算每个维度(在本例中只是 x 和 y);我最终会调整此代码以对所有维度使用相同的预计算。我也可能会调整它以使用 C 数组而不是 NSArray,但据我所知,这样做并没有真正的速度优势。
我目前正在使用节点矢量为 {0, 0, 0, 0, 1, 2, 2, 2, 2} 的 5 个控制点生成 3 阶曲线。
- (double) coxDeBoorForDegree:(NSUInteger)degree span:(NSUInteger)span travel:(double)travel knotVector:(NSArray *)vector
{
double k1 = [[vector objectAtIndex:span] doubleValue];
double k2 = [[vector objectAtIndex:span+1] doubleValue];
if (degree == 1) {
if (k1 <= travel && travel <= k2) return 1.0;
return 0.0;
}
double k3 = [[vector objectAtIndex:span+degree-1] doubleValue];
double k4 = [[vector objectAtIndex:span+degree] doubleValue];
double density1 = k3 - k1;
double density2 = k4 - k2;
double equation1 = 0.0, equation2 = 0.0;
if (density1 > 0.0) equation1 = ((travel-k1) / density1) * [self coxDeBoorForDegree:degree-1 span:span travel:travel knotVector:vector];
if (density2 > 0.0) equation2 = ((k4-travel) / density2) * [self coxDeBoorForDegree:degree-1 span:span+1 travel:travel knotVector:vector];
return equation1 + equation2;
}
- (double) valueAtTravel:(double)travel degree:(NSUInteger)degree points:(NSArray *)points knotVector:(NSArray *)vector
{
double total = 0.0;
for (NSUInteger i = 0; i < points.count; i++) {
float weight = [self coxDeBoorForDegree:degree+1 span:i travel:travel knotVector:vector];
if (weight > 0.001) total += weight * [[points objectAtIndex:i] doubleValue];
}
return total;
}
最佳答案
没关系,我发现这个非常有用的网页: http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/INT-APP/PARA-knot-generation.html
因此任何有相同问题的人都可以使用以下方法生成合适的结向量,其中'controls'是影响线段的控制点的数量,'degree'是......好吧,曲线!不要忘记度数不能等于或超过曲线中控制点的数量:
- (NSArray *) nodeVectorForControlCount:(NSUInteger)controls degree:(NSUInteger)degree
{
NSUInteger knotIncrement = 0;
NSUInteger knotsRequired = controls + degree + 1;
NSMutableArray *constructor = [[NSMutableArray alloc] initWithCapacity:knotsRequired];
for (NSUInteger i = 0; i < knotsRequired; i++) {
[constructor addObject:[NSNumber numberWithDouble:(double)knotIncrement]];
if (i >= degree && i < controls) knotIncrement++;
}
NSArray * returnArray = [NSArray arrayWithArray:constructor];
[constructor release];
return returnArray;
}
关于ios - 计算 Cox De Boor 算法的结向量的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10782341/
是否有可能在 Python 中找到基于 De Boor 方法的平滑样条曲线?用于数据近似。 之前我在 matlab 中使用了平滑样条曲线,我需要在 python 中使用完全相同的算法。 最佳答案 您可
我目前正在尝试实现用于绘制贝塞尔曲线的 Cox De Boor 算法。我已经设法通过设定的度数、控制点的数量和预定义的节点向量生成一些可以接受的东西,但我想调整我的代码,以便它可以在给定任意数量的控制
我知道这是一个有点“请做我的功课”的问题,但我正在尝试按照此处的说明实现 De Boor 算法:http://en.wikipedia.org/wiki/De_Boor's_algorithm 我有一
维基百科为我们提供了 de Boor 算法的 Python 实现: def deBoor(k, x, t, c, p): """ Evaluates S(x). Args
我已经为此工作了几个星期,但一直无法让我的算法正常工作,我束手无策。这是我所取得成就的说明: 如果一切正常,我希望最后会出现一个完美的圆形/椭圆形。 每次添加新的控制点(黄色)时,我的样本点(白色)都
我正在服务器上使用 RmiServiceExporter 并在客户端上使用 RmiProxyFactoryBean 创建 Spring Boot 应用程序。当我启动服务器时,一切似乎都正常,我得到 [
我是一名优秀的程序员,十分优秀!