我正在太空船上实施2D游戏.
为了做到这一点,我正在使用LÖVE,它将Box2D与Lua包装在一起.但我相信我的问题可以由对物理学有更多了解的人来回答 - 所以伪代码被接受作为回应.
我的问题是我不知道如何在启用2D物理的世界中正确地移动我的宇宙飞船.更具体地说:
质量船m位于初始位置{x, y}.它的初始速度矢量为{vx, vy}(可以{0,0}).
目标是一个点{xo,yo}.船必须{vxo, vyo}按照最短的轨迹到达具有(或接近它)速度的物镜.
有一个update(dt)被称为频繁调用的函数(即每秒30次).在此功能上,船舶可以通过对自身施加"冲动"来修改其位置和轨迹.脉冲的大小是二进制的:你可以在给定的方向上应用它,或者根本不应用它.在代码中,它看起来像这样:
function Ship:update(dt)
m = self:getMass()
x,y = self:getPosition()
vx,vy = self:getLinearVelocity()
xo,yo = self:getTargetPosition()
vxo,vyo = self:getTargetVelocity()
thrust = self:getThrust()
if(???)
angle = ???
self:applyImpulse(math.sin(angle)*thrust, math.cos(angle)*thrust))
end
end
Run Code Online (Sandbox Code Playgroud)
第一个???是表明在某些情况下(我猜)最好"不要冲动"并让船"漂移".第二???部分是关于如何计算给定dt上的脉冲角.
我们在太空中,所以我们可以忽略空气摩擦之类的东西.
虽然它会非常好,但我并不是在寻找能为我编码的人; 我把代码放在那里,所以我的问题清楚地被理解了.
我需要的是一种策略 - 一种攻击方式.我知道一些基本的物理,但我不是专家.例如,这个问题有名字吗?诸如此类的事情.
非常感谢.
编辑:Beta提供了一个有效的策略,Judge在评论中直接在LÖVE中实现了它.
EDIT2:经过更多的谷歌搜索后,我也找到了openSteer.这是在C++上,但它做了我假装的.达到这个问题的任何人都可能会有所帮助.
我有一个USB设备,在命令时使用不同的接口,VID,PID和序列号进行枚举,并且我想在发生此更改后跟踪物理设备.我的想法是通过它的枢纽和港口位置来跟踪它.
该Win32_PnPSignedDriver类有一个"位置"栏,似乎是完美的(例如Port_#0001.Hub_#0010),但它仅包含设备的位置是第一次加载驱动程序时.将硬件插入不同的端口不会更新该字段.
但是,该信息在某处可用,因为在通过"设备管理器"查看设备时,"详细信息"选项卡下有"位置信息"字段.可以通过WMI查询或其他方法检索此信息吗?有没有更好的方法来解决这个问题?
编辑:我知道这听起来像一个奇怪的场景.这些设备中的微控制器包含一个枚举为CDC设备(即串行端口)并允许编程的ROM.在制造过程中,跟踪设备,因为它在制造商的ROM(唯一的VID/PID /序列号)和我的自定义固件接口(不同的VID/PID /序列号)之间变化是有益的.
根据MSDN文档,可以传递SetupDiGetClassDevs 设备实例ID以获取特定设备的设备信息集:
要仅返回特定设备,请设置DIFCF_DEVICEINTERFACE标志并使用Enumerator参数提供设备的设备实例ID.
我通过解析WM_DEVICECHANGE消息DBT_DEVICEARRIVAL事件中的符号名称来获取设备实例ID ,并且通过将结果ID与从SetupDiGetDeviceInstanceId返回的ID进行比较来验证结果ID .即使传递操作系统提供的设备实例ID也不起作用(即SetupDiGetClassDevs调用失败ERROR_INVALID_PARAMETER).
我当前SP_DEVINFO_DATA为新到设备获取结构的解决方法是枚举同一类中的所有设备,并将SetupDiGetDeviceInstanceId的结果与符号名称进行比较.但是,根据文件,我不明白为什么这是必要的......
有没有人让SetupDiGetClassDevs以这种方式工作?有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?
我有一个文件,日期和时间列为像634213557000000000这样的巨大数字.我相信这是一个.NET滴答.这是自公元1月1日午夜以来100纳秒增量的数量.将其读入python日期时间对象的好方法是什么?
该销毁()信号可以被困一个QObject,但我想简单的测试,如果Python对象仍然引用了有效的C++的Qt对象.有没有直接这样做的方法?
我有一个微控制器必须从PC串口(115200波特)下载大文件,并通过SPI(~2 MHz)将其写入串行闪存.闪存写入必须是256字节块,然后是写入命令和页面地址.系统上可用的总RAM为1 kB,堆栈大小为80字节.
目前这是通过从UART填充256字节缓冲区然后通过ping到ponging到另一个256字节缓冲区来填充另一个256字节缓冲区由RX缓冲区就绪信号上的中断填充,同时使用忙写入写入闪存.重复缓冲区交换,直到操作完成.
我更喜欢为在单独的循环缓冲区上运行的SPI和UART端口设置TX/RX中断处理程序.因此,我可以简单地填充TX缓冲区并启用中断或检查缓冲区是否有输入数据,而不是轮询新字节并等待操作完成.这将为实际工作提供更多的时钟周期,而不是等待外设.
在使用128字节循环缓冲区实现IRQ之后,我在UART RX缓冲区中查询数据并立即将其放入SPI TX缓冲区以进行文件传输.我使用这种方法的问题是我没有足够的RAM用于缓冲区,并且PC接收缓冲区的填充速度比我将数据传输到闪存传输缓冲区要快.显然,传输速度不是问题(115.2 kHz输入和2 MHz输出),但在每个256字节页面传输后有一个写周期等待.
频繁的SPI中断似乎阻塞了一些UART中断并导致丢失了字节.我选择的解决方案是使用环形缓冲区用于UART接收中断,并将数据馈送到256字节页缓冲区,通过轮询字节传输和写完成将其发送到串行闪存.128个环形缓冲区足以防止SPI写入期间出现溢出.
有没有人知道或者知道vim插件/宏/函数是否能很好地缩进c ++模板?
当我在vim .hpp/.h文件中突出显示模板定义并用'='缩进它时,我得到这样的结果:
> template <
> class TFilter,
> class TParser,
> class TConsumer,
> class TDataProcessor,
> class TDataFeed,
> class TSymbolMap
> >
> struct DataFeedTraits
> {
> typedef TFilter Filter;
> typedef TParser<TSymbolMap> Parser;
> typedef TConsumer<Parser> Consumer;
> typedef TDataProcessor<Filter,Consumer> DataProcessor;
> typedef TDataFeed<Filter,DataProcessor,Parser,Ccnsumer> DataFeed;
> };
Run Code Online (Sandbox Code Playgroud)
我认为cindent将struct/class声明与结束括号">"对齐.我想最终得到类似的东西,或类似的,确切的格式无关紧要,只要格式化:
template <
class TFilter,
class TParser,
class TConsumer,
class TDataProcessor,
class TDataFeed,
class TSymbolMap
>
struct DataFeedTraits
{
typedef TFilter Filter;
typedef TParser<TSymbolMap> Parser;
typedef …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的小webkit浏览器中设置标题"User-Agent",但我没有得到.
那段代码:
self.web = QtWebKit.QWebView(self)
...
self.request = QNetworkRequest()
self.request.setUrl(url)
self.request.setRawHeader("User-Agent", QtCore.QByteArray ("TestUserAgent"))
self.request.setRawHeader("Accept-Language", QtCore.QByteArray ("en ,*"))
self.web.load(self.request)
Run Code Online (Sandbox Code Playgroud)
在此示例中,"Accept-Language"设置正确,但"User-Agent"始终是默认值.请告诉我,为什么?如何设置"用户代理"?
感谢帮助.
经过多年无组织文件的航行,我开始寻找一种廉价/免费的方式来对我们的工作文档进行结构分类,以便整理并更好地执行工作流程.所以我希望能够根据项目,客户,使用的组件等标记文档.
例如,想象一下这些文档:
......等等.
通过这种方式,我可以按标签过滤文档,例如获取给定项目的所有文档,或给定客户的所有报价,或使用给定应用程序服务器的所有项目. .
喜欢的事,M-文件将是完美的,但我更喜欢一个基于Linux的解决方案.. :)(甚至没有基于网络的,如果有可能),
我花了一整天尝试在Freshmeat上和维基百科发现DMSes,但我找不到像M档一样工作的东西..:/
我很欣赏任何提示/指针,非常感谢!
我在Python脚本中有一堆本地变量引用,我想从字典中提取.所以,我需要本质上的变化foo,bar和其他人进入env['foo'],env['bar']等等.我是否需要编写正则表达式并将每个变量名称匹配以进行转换,或者是否有更直接的方法可以重复使用该.命令?
python ×3
pyqt ×2
qt ×2
vim ×2
windows ×2
.net ×1
2d ×1
box2d ×1
c ×1
c# ×1
c++ ×1
datetime ×1
device ×1
editor ×1
embedded ×1
http-headers ×1
indentation ×1
interrupt ×1
linux ×1
lua ×1
organization ×1
physics ×1
pretty-print ×1
pyqt4 ×1
serial-port ×1
setupapi ×1
spi ×1
templates ×1
timestamp ×1
usb ×1
vi ×1
webkit ×1
winapi ×1
wmi ×1
wmi-query ×1