小编Jon*_*lay的帖子

分割贝塞尔曲线

我正在开发一款适用于iPhone的游戏,它可以在你的角色移动后创造一条路径(运动类似于蛇,但在转向方面是弯曲的).我现在这样做的方法就是将玩家所有的顶点保持在一个数组中,然后在每一帧上画一个圆圈.

我想转而使用贝塞尔曲线.我已经做了很多关于它们的阅读,我对它们的理解非常好,但我对数学并不是很好.我已经明白我应该使用DeCasteljau的算法在特定的t处分割曲线,但我还没有找到使用哪个公式以及如何在代码中实现它.

所以我目前拥有的是t = 1时曲线的所有控制点.现在我只想获得t <1的所有控制点.有人可以给我一个易于理解的数学公式或者这个实现(最好是python或objective-c).也许甚至有一个物体可以在iphone sdk中用来分割曲线?

math bezier split ios4

10
推荐指数
1
解决办法
8569
查看次数

如何从MediaStream中删除曲目并"停止"网络摄像头?

我正在尝试从MediaStream中删除一个曲目.MediaStream.removeTrack()从流中删除轨道,但相机指示灯保持亮起,表示相机仍处于活动状态.

https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack?redirectlocale=en-US&redirectslug=DOM%2FMediaStreamTrack

这引用了stop()一种我认为完全停止相机的方法,但是我得到了"Object MediaStreamTrack has no method 'stop'"

有没有办法解决这个问题,还是我必须停止整个流,然后用我不想要的曲目重新创建它?例如,我想在录音带还在的时候删除视频轨道.

javascript webrtc getusermedia

7
推荐指数
2
解决办法
1万
查看次数

atan(x)给了我错误的价值观?

我在我的代码中得到了这个函数:

-(void)printAngle
{
    int width = p2_t.x-cp1_t.x;
    int height = p2_t.y-cp1_t.y;
    if (width != 0) {
        CCLOG(@"%i * %i", width, height);
        CCLOG(@"%f", (float)atan(height/width)*(180/M_PI));
    }
}
Run Code Online (Sandbox Code Playgroud)

下面是输出的片段:

2011-12-06 20:46:52.074 x[12392:c503] 24 * 13
2011-12-06 20:46:52.074 x[12392:c503] 0.000000
2011-12-06 20:46:52.108 x[12392:c503] 25 * 15
2011-12-06 20:46:52.108 x[12392:c503] 0.000000
Run Code Online (Sandbox Code Playgroud)

这意味着arctan(13/24)度数为0.这是不正确的.那我为什么得到0呢?这类型的东西我做错了吗?

它有一些正确的角度:

2011-12-06 20:51:11.956 x[12436:c503] 12 * 129
2011-12-06 20:51:11.957 x[12436:c503] 84.289404
2011-12-06 20:51:11.989 x[12436:c503] 10 * 132
2011-12-06 20:51:11.990 x[12436:c503] 85.601292
Run Code Online (Sandbox Code Playgroud)

c trigonometry

3
推荐指数
1
解决办法
1553
查看次数

如何沿圆移动点?

我想通过使用圆半径和移动角度以圆周运动移动精灵。

例如,我知道精灵在半径为 10 的圆圈中移动,它的当前位置是 (387,38),角度是 28 度。现在我不想移动它说,沿圆周长 100 像素。

描述场景的图片

p1 = x&y coordinate, known (387,38) in example with movingangle 28 degrees
r = radius, known (10 in example)
l = distance to move along bend, known (100px in example)
p2 = new point, what is this x and y value?
Run Code Online (Sandbox Code Playgroud)

我有一个有效的解决方案,但我不太喜欢它。这对我来说没有意义,它需要比我认为需要的更多的计算。它的工作原理是首先使用 p1 计算中心点,然后向后做同样的事情,可以说得到 p2(使用余弦和正弦)。我相信应该有一种更快的方法,但我找不到任何人这样做。

我标记 cocos2d 的原因是因为这就是我正在使用的内容,有时游戏框架会提供函数来帮助处理三角函数。

math trigonometry cocos2d-iphone

3
推荐指数
2
解决办法
1万
查看次数

如何在cocos2d中获得CCLabelTTF的实际大小?

我有一个动态文本的CCLabelTTF.假设它的最大值为200,200.我创建它:

CCLabelTTF * label = [CCLabelTTF labelWithString:@"Hello!" dimensions:CGSizeMake(200,200) alignment:UITextAlignmentLeft lineBreakMode:UILineBreakModeWordWrap fontName:@"Helvetica" fontSize:15];
Run Code Online (Sandbox Code Playgroud)

这很好用.

但我必须把正确的东西放在下面,因此我需要知道文本的高度.我已经尝试过label.texture.contentSize,label.contentSize.他们都是200,200.

我能在这做什么?我正在使用cocos2d 1.x.

cocos2d-iphone

3
推荐指数
1
解决办法
3291
查看次数