小编Jud*_*den的帖子

用物理学研究飞船的2d轨迹规划

我正在太空船上实施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++上,但它做了我假装的.达到这个问题的任何人都可能会有所帮助.

lua physics 2d box2d

12
推荐指数
1
解决办法
4444
查看次数

是否可以以编程方式为Windows中的设备识别物理USB端口?

我有一个USB设备,在命令时使用不同的接口,VID,PID和序列号进行枚举,并且我想在发生此更改后跟踪物理设备.我的想法是通过它的枢纽和港口位置来跟踪它.

Win32_PnPSignedDriver类有一个"位置"栏,似乎是完美的(例如Port_#0001.Hub_#0010),但它仅包含设备的位置是第一次加载驱动程序时.将硬件插入不同的端口不会更新该字段.

但是,该信息在某处可用,因为在通过"设备管理器"查看设备时,"详细信息"选项卡下有"位置信息"字段.可以通过WMI查询或其他方法检索此信息吗?有没有更好的方法来解决这个问题?

编辑:我知道这听起来像一个奇怪的场景.这些设备中的微控制器包含一个枚举为CDC设备(即串行端口)并允许编程的ROM.在制造过程中,跟踪设备,因为它在制造商的ROM(唯一的VID/PID /序列号)和我的自定义固件接口(不同的VID/PID /序列号)之间变化是有益的.

c# windows usb wmi wmi-query

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

SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

根据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事件中的数据获取设备的更多信息?

windows winapi device hardware-interface setupapi

8
推荐指数
1
解决办法
6988
查看次数

如何将.NET tick转换为python日期时间?

我有一个文件,日期和时间列为像634213557000000000这样的巨大数字.我相信这是一个.NET滴答.这是自公元1月1日午夜以来100纳秒增量的数量.将其读入python日期时间对象的好方法是什么?

.net python datetime timestamp

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

是否可以查询PyQt4 QObject以确定底层C++实例是否已被销毁?

销毁()信号可以被困一个QObject,但我想简单的测试,如果Python对象仍然引用了有效的C++的Qt对象.有没有直接这样做的方法?

python qt pyqt pyqt4

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

如何在内存受限的嵌入式系统上处理大量数据传输?

我有一个微控制器必须从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写入期间出现溢出.

c embedded serial-port interrupt spi

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

用于c ++模板的Vim缩进?

有没有人知道或者知道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)

c++ vim templates pretty-print indentation

6
推荐指数
2
解决办法
3523
查看次数

如何在PyQtWebkit中为QNetworkRequest设置User-Agent?

我正在尝试在我的小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"始终是默认值.请告诉我,为什么?如何设置"用户代理"?

感谢帮助.

python qt webkit pyqt http-headers

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

Linux下的文档管理

经过多年无组织文件的航行,我开始寻找一种廉价/免费的方式来对我们的工作文档进行结构分类,以便整理并更好地执行工作流程.所以我希望能够根据项目,客户,使用的组件等标记文档.
例如,想象一下这些文档:

  • "业务要求",标签:projectX
  • "项目布局",标签:projectX,appserverZ
  • "类图",标签:projectX,businesslogic
  • "Quotation",标签:projectX,customerY

......等等.
通过这种方式,我可以按标签过滤文档,例如获取给定项目的所有文档,或给定客户的所有报价,或使用给定应用程序服务器的所有项目. .
喜欢的事,M-文件将是完美的,但我更喜欢一个基于Linux的解决方案.. :)(甚至没有基于网络的,如果有可能),
我花了一整天尝试在Freshmeat上和维基百科发现DMSes,但我找不到像M档一样工作的东西..:/
我很欣赏任何提示/指针,非常感谢!

linux organization document-management

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

如何在vim的单词两边重复添加文本?

我在Python脚本中有一堆本地变量引用,我想从字典中提取.所以,我需要本质上的变化foo,bar和其他人进入env['foo'],env['bar']等等.我是否需要编写正则表达式并将每个变量名称匹配以进行转换,或者是否有更直接的方法可以重复使用该.命令?

vi vim editor

5
推荐指数
2
解决办法
777
查看次数