小编moo*_*nux的帖子

编写更快的Python物理模拟器

我一直在用Python编写我自己的物理引擎作为物理和编程的练习.我开始按照这里的教程开始.这很顺利,但后来我找到了thomas jakobsen撰写的文章"高级角色物理",其中介绍了使用Verlet集成进行模拟,我觉得这很有趣.

我一直在尝试使用verlet集成编写自己的基本物理模拟器,但事实证明它比我最初预期的要困难一些.我正在浏览示例程序以阅读,并且在这个用Python编写的程序中偶然发现,我也发现本教程使用了Processing.

Processing版本给我留下深刻印象的是它的运行速度.单独的布有2400个不同的点被模拟,这不包括身体.

python示例仅使用256个粒子作为布料,并以每秒约30帧的速度运行.我尝试将粒子数量增加到2401(该程序必须是正方形),它以大约3 fps的速度运行.


这两个工作都是通过将粒子对象的实例存储在列表中,然后遍历列表,调用每个粒子"更新位置"方法.例如,这是Processing sketch中代码的一部分,用于计算每个粒子的新位置:

for (int i = 0; i < pointmasses.size(); i++) {
    PointMass pointmass = (PointMass) pointmasses.get(i);
    pointmass.updateInteractions();
    pointmass.updatePhysics(fixedDeltaTimeSeconds);
}
Run Code Online (Sandbox Code Playgroud)

编辑:这是我之前链接的python版本的代码:

"""
verletCloth01.py
Eric Pavey - 2010-07-03 - www.akeric.com

Riding on the shoulders of giants.
I wanted to learn now to do 'verlet cloth' in Python\Pygame.  I first ran across
this post \ source:
http://forums.overclockers.com.au/showthread.php?t=870396
http://dl.dropbox.com/u/3240460/cloth5.py

Which pointed to some good reference, that was a …
Run Code Online (Sandbox Code Playgroud)

python physics numpy scientific-computing verlet-integration

15
推荐指数
3
解决办法
9929
查看次数

检索所有已安装的 macOS 服务的列表?

如果您已经知道服务的名称,则可以以编程方式调用服务。据我了解,“服务”菜单是通过在每个已发布的服务上调用验证方法来构建的。

有没有办法在不使用服务用户对话框的情况下访问已安装服务的列表?

编辑:我不是指后台进程。我说的是 Finder 中“服务”菜单中的项目。概述它们在这里。

cocoa objective-c appkit swift3 macos-sierra

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

使用Reactive Extensions观察传入的websocket消息?

我想使用linq来处理通过websocket连接收到的事件.这是我到目前为止:

    private static void Main()
    {
        string WsEndpoint = "wss://push.planetside2.com/streaming?environment=ps2&service-id=s:quicktesting";
        using (WebSocket ws = new WebSocket(WsEndpoint))
        {
            ws.OnMessage += Ws_OnMessage;

            ws.Connect();
            Console.ReadKey();
            ws.Close();
        }
    }

    private static void Ws_OnMessage(object sender, MessageEventArgs e)
    {
        Console.WriteLine(e.Data);
    }
Run Code Online (Sandbox Code Playgroud)

首先想到的是如何ws.OnMessage变成某种事件流.我无法在线找到任何带有反应式扩展的外部事件源的示例.我打算将消息解析为json对象,然后过滤和聚合它们.

有人可以提供一个从websocket消息创建一个observable并订阅它的例子吗?


编辑:最终工作代码

与所选答案的唯一区别在于我在传递之前初始化了websocket Observable.Using

//-------------------------------------------------------
// Create websocket connection
//-------------------------------------------------------
const string wsEndpoint = "wss://push.planetside2.com/streaming?environment=ps2&service-id=s:quicktesting";
WebSocket socket = new WebSocket(wsEndpoint);


//-------------------------------------------------------
// Create an observable by wrapping ws.OnMessage
//-------------------------------------------------------
var globalEventStream = Observable
    .Using(
        () => socket,
        ws =>
            Observable …
Run Code Online (Sandbox Code Playgroud)

c# linq websocket system.reactive

4
推荐指数
1
解决办法
1644
查看次数

在缓冲区中评估不同于在粘液中评估?

我正在使用emacs来学习如何在常见的lisp中编程,并且我遇到了一个令人困惑的问题.当我输入表达式时

(defconstant +some-constant+ (make-hash-table))
Run Code Online (Sandbox Code Playgroud)

我用它来评估它

M-x eval-buffer
Run Code Online (Sandbox Code Playgroud)

我收到了错误

Symbol's function definition is void: defconstant
Run Code Online (Sandbox Code Playgroud)

但是如果我将它复制并粘贴到粘液复制品中,它就可以完美地运行.当然,这会渲染大多数方便的键盘快捷键,用于评估程序中的lisp代码,而无需执行整个程序.每当我想测试一些东西时,我最终都会将我的缓冲区中的所有内容复制到粘液终端中.

这里发生了什么?

lisp emacs common-lisp slime

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

在命令行工具上使用 Swift URLSession 示例代码

我试图找出从命令行在 Swift 4 中发出 HTTP 请求的最简单方法。我从URLSession 编程指南中复制了这段代码,并添加了几个打印语句。我无法弄清楚为什么.dataTask没有执行。

print("Testing URLSession")
let sessionWithoutADelegate = URLSession(configuration: URLSessionConfiguration.default)
if let url = URL(string: "https://www.example.com/") {
    print("Encoded url \(url)")
    (sessionWithoutADelegate.dataTask(with: url) { (data, response, error) in
        print("Executing dataTask")
        if let error = error {
            print("Error: \(error)")
        } else if let response = response,
            let data = data,
            let string = String(data: data, encoding: .utf8) {
            print("Response: \(response)")
            print("DATA:\n\(string)\nEND DATA\n")
        }
    }).resume()
}
Run Code Online (Sandbox Code Playgroud)

目标是从 REST api 检索数据,但我什GET至无法发出简单的请求才能正常工作......

foundation nsurlsession swift

0
推荐指数
1
解决办法
4459
查看次数