这就是我目前正在做的事情:
创建垂直于2个矩形的4个边的4轴.由于它们是矩形,因此我不需要为每条边生成轴(法线).
然后我循环我的4轴.
因此,对于每个轴:我将矩形的每个角投影到轴上.有两个包含这些投影的列表(数组).每个矩形一个.然后我得到每个投影和轴的点积.这将返回一个标量值,可用于确定最小值和最大值.
现在,2个列表包含标量而不是向量.我对列表进行排序,以便我可以轻松选择最小值和最大值.如果框B的最小值=框A的最大值或框B的最大值<=框A的最小值,则该轴上没有碰撞且对象之间没有碰撞.
此时函数完成并且循环中断.
如果所有轴都没有满足这些条件,那么我们就会发生碰撞
我希望这是正确的做法.
python代码本身可以在这里找到http://pastebin.com/vNFP3mAb
另外:http: //www.gamedev.net/page/reference/index.html/_/reference/programming/game-programming/collision-detection/2d-rotated-rectangle-collision-r2604
我遇到的问题是上面的代码不起作用.即使没有碰撞,它也始终检测到碰撞.我输入的内容正是代码所做的.如果我遗漏任何步骤或者只是不了解SAT如何运作,请告诉我.
我在已安装的应用程序中有django.contrib.auth,大约10分钟前一切正常.我删除了现有的数据库,因为我遇到了南迁移的问题.当我尝试重建它时,我收到一个错误.
错误: django.db.utils.DatabaseError:没有这样的表:auth_user
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 219, in execute
self.validate()
File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "/usr/lib/python2.7/site-packages/django/core/management/validation.py", line 35, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/usr/lib/python2.7/site-packages/django/db/models/loading.py", line 146, in get_app_errors
self._populate()
File "/usr/lib/python2.7/site-packages/django/db/models/loading.py", line 61, in _populate
self.load_app(app_name, True) …Run Code Online (Sandbox Code Playgroud)