小编bha*_*ing的帖子

如何做正确的多边形旋转?(在C#中,虽然它适用于任何东西)

嗨,我正在使用这个C#代码在我的应用程序中旋转多边形 - 它们会旋转,但也会沿着我想要发生的方式偏斜.所有多边形都是矩形,四个角定义为2D矢量,

    public Polygon GetRotated(float radians)
    {

        Vector origin = this.Center;
        Polygon ret = new Polygon();
        for (int i = 0; i < points.Count; i++)
        {
            ret.Points.Add(RotatePoint(points[i], origin, radians));
        }
        return ret;
    }

    public Vector RotatePoint(Vector point, Vector origin, float angle)
    {
        Vector ret = new Vector();
        ret.X = (float)(origin.X + ((point.X - origin.X) * Math.Cos((float)angle)) - ((point.Y - origin.Y) * Math.Sin((float)angle)));
        ret.Y = (float)(origin.Y + ((point.X - origin.X) * Math.Sin((float)angle)) - ((point.Y - origin.Y) * Math.Cos((float)angle)));
        return ret; …
Run Code Online (Sandbox Code Playgroud)

c# geometry polygon rotation

8
推荐指数
2
解决办法
7108
查看次数

在测试中连接django信号处理程序

使用django-cacheops,我想测试我的视图是否按照我的意图进行缓存.在我的测试用例中,我将cacheops cache_read信号连接到一个处理程序,该处理程序应该在缓存中为命中或未命中增加一个值.但是,信号永远不会被触发.有没有人知道在测试用例中连接django信号处理程序的正确方法,纯粹用于该测试用例?

这是我到目前为止所拥有的

from cacheops.signals import cache_read

cache.set('test_cache_hits', 0)
cache.set('test_cache_misses', 0)

def cache_log(sender, func, hit, **kwargs):
    # never called
    if hit:
        cache.incr('test_cache_hits')
    else:
        cache.incr('test_cache_misses')


class BootstrapTests(TestCase):

    @classmethod
    def setUpClass(cls):
        super(BootstrapTests, cls).setUpClass()
        cache_read.connect(cache_log)
        assert cache_read.has_listeners()

    def test_something_that_should_fill_and_retrieve_cache(self):
        ....
        hits = cache.get('test_cache_hits') # always 0
Run Code Online (Sandbox Code Playgroud)

我也尝试在模块级别和常规测试用例setUp方法中连接信号处理程序,所有这些都具有相同的结果.

编辑:这是我的实际测试代码,加上我正在测试的对象.我正在使用cached_as装饰器来缓存一个函数.此测试目前失败.

boostrap.py

class BootstrapData(object):

    def __init__(self, app, person=None):
        self.app = app

    def get_homepage_dict(self, context={}):

        url_name = self.app.url_name

        @cached_as(App.objects.filter(url_name=url_name), extra=context)
        def _get_homepage_dict():
            if self.app.homepage is None:
                return None

            concrete_module_class = MODULE_MAPPING[self.app.homepage.type]
            serializer_class_name …
Run Code Online (Sandbox Code Playgroud)

python django caching unit-testing signals

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

浏览器多人网络策略 - 这看起来像一个可行的解决方案吗?

我有兴趣制作某种多人游戏RPG作为纯粹的基于浏览器的游戏,很少或没有插件要求.经过相当多的研究后,我得出了以下计划.我知道我所引用的一些技术并未在所有浏览器(特别是IE)中采用,但我愿意接受这一点.

另外 - 我知道MMO在任何情况下都是一个崇高的目标,但过去在类似的方向上完成了很多小项目,我觉得我最终想要给它一个非常好的目标.

所以这是一个粗略的轮廓,我很想听到任何人都可以在这种安排中看到的明显问题:

客户端: WebGL/Javascript(可能是three.js).使用浏览器本地存储来保存游戏资产,接受删除浏览器缓存将删除这些.

消息: 使用谷歌协议缓冲区在客户端/服务器之间编码消息,以方便和减小尺寸.消息传递将通过WebSocket.

游戏服务器:在python中 运行gevent(看起来是处理许多并发的好方法).将使用分片模式构建,基于此处的设计:

DB SERVER: MySQL用于数据库,PHP在游戏服务器和DB之间起作用.

详细信息: 我打算让游戏服务器每秒大约更新个人客户端15-20次,并使用客户端预测来填补空白.客户端可以在30 fps的范围内向服务器发送密钥输入/消息.我宁愿选择尽可能接近实时的体验,而不是回合制.我主要担心的是基于TCP的WebSocket协议,这会使整个事情变得不可能吗?

这个解决方案对SO来说是否真实?

非常感谢,

javascript python multiplayer webgl gevent

6
推荐指数
1
解决办法
381
查看次数

如何在Facebook标签中进行任何类型的信息共享?

首先为这个问题的长度道歉,并询问Facebook API(看似世界上最不一致的API之一......).

情况:我们正在为我们的客户制作一个Facebook产品"社区"类型页面,其中包含标准的Facebook标签,其中一个嵌入了Flash游戏.在这个游戏结束时,我们希望能够通过墙贴分享用户的最终得分,并邀请朋友挑战得分.

首先 - 客户端坚持认为游戏出现在页面中的选项卡上,因此将此全部移动到应用程序(例如apps.facebook.com),遗憾的是不是一种选择.我知道你可以在tab上嵌入一个应用程序而不是静态FMBL,但是我试过这个并且结果基本相同或失败了(该选项卡对可呈现的内容施加了严格的限制,强制使用FBML并否定了FB:Iframe标签为首发).

目前我们将这个游戏嵌入到静态FBML选项卡上,使用fb:swf标签和FBJS-bridge在选项卡上启用一些简单的交互(导航到新窗口等).我们还尝试了FBJS嵌入方法,并将游戏变成了一个应用程序,并将其添加为页面上的选项卡.在所有情况下,在选项卡环境中似乎无法获取查看用户的UID(尽管事实上他们必须首先登录才能查看页面).游戏本身就是Flash ActionScript 3,我可以选择使用Facebook ActionScript 3 API.使用这种方法,到目前为止我设法提出的最佳流程概述如下:

0)创建一个单独的应用程序,其唯一目的是处理分数分享等.

1)用户在TAB页面上点击游戏结束时的"分享我的分数".

2)SWF通过打开新标签执行标准Facebook"登录到应用程序"请求.

3)用户确认此操作并关闭新窗口.

4)用户再次在Flash游戏中点击以确认他们已登录.

5)SWF执行facbook.verifySession()并打开另一个窗口,请求允许在用户的墙上发布.

6)用户确认这一点并再次回到游戏中.

7)SWF监听'FacebookEvent.PERMISSIONS_CHANGED'并在确认后发布到墙上.

由于无法验证用户是否在其中加载了选项卡时添加了应用程序,因此每次他们想要从游戏中发布结果时,他们可能必须遵循此过程,这很可怕.主要问题似乎是驻留在Facebook选项卡上的任何RIA都没有在该选项卡的OAuth令牌中收到任何有用的信息,相比之下,RIA apps.facebook.com会在请求标头中获取我需要的所有信息.

简而言之,无论是使用FMBL,FBJS,ActionScript 3,ASP还是其任何组合,我都需要从Facebook产品页面选项卡中制作Facebook墙贴的最简单,最直接的方式.

我见过这个:https://stackoverflow.com/questions/3674923/facebook-share-or-publish-dialogue-from-page-tab-closed这确实是我问的问题,但答案是不清楚,它似乎不会解决我的问题.

facebook actionscript-3 fbml fbjs

5
推荐指数
1
解决办法
644
查看次数

如何通过表在工厂男孩中设置多对多动态?

我在使用直通关系与工厂男孩中的一组Django模型建立多对多关系时遇到问题。我有一堆食谱和原料。通过设置数量的模型,配方和配料之间存在多对多关系。我有每种模型的工厂,但无法让它们链接起来。

简化的model.py:

class Ingredient(models.Model):
    name = models.CharField(max_length=40)

class Recipe(models.Model):
    name = models.CharField(max_length=128)
    ingredients = models.ManyToManyField(Ingredient, through='RecipeIngredient')

class RecipeIngredient(models.Model):
    recipe = models.ForeignKey(Recipe)
    ingredient = models.ForeignKey(Ingredient)
    quantity = models.IntegerField(default=1)
Run Code Online (Sandbox Code Playgroud)

简化的factory.py

class RecipeFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = Recipe

class IngredientFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = Ingredient

class RecipeIngredientFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = RecipeIngredient
    recipe = factory.SubFactory(RecipeFactory)
    ingredient = factory.SubFactory(IngredientFactory)
    quantity = 1
Run Code Online (Sandbox Code Playgroud)

我试过弄乱factory.RelatedFactory,但还没到什么地方。理想情况下,我只希望能够执行以下操作:

recipe = RecipeFactory(name="recipe1")
ingredient = IngredientFactory(name="ingredient1")
ri = RecipeIngredientFactory(recipe=recipe, ingredient=ingredient)
Run Code Online (Sandbox Code Playgroud)

这样做虽然不会在任何一方设置多对多关系,而且似乎也无法创建配方配料模型本身。有人知道这样做的方法吗?

编辑:

我也尝试过:

class RecipeWith3Ingredients(RecipeFactory):
    ingredient1 = factory.RelatedFactory(RecipeIngredientFactory, 'recipe')
    ingredient2 = …
Run Code Online (Sandbox Code Playgroud)

django many-to-many factory-boy

5
推荐指数
1
解决办法
1162
查看次数