小编pid*_*pid的帖子

多边形中的点命中测试算法

我需要测试一个点是否击中带有孔和岛的多边形。我想了解我应该如何做到这一点。这没有记录,我找不到任何解释或例子。

我所做的是+1对每个外部多边形命中和-1每个内部多边形命中进行计数。所得总和为:

  • > 0:命中;
  • <= 0:未命中(在洞外或洞内)。

该类根据绕数HitData分隔路径orientation,以避免不必要的重新计算。Clipper.PointInPolygon()应用于每条路径后,总和很容易计算。

但有两个主要缺点:

  1. 我必须适用Clipper.PointInPolygon()每一条 道路
  2. 我无法利用 的层次结构PolyTree

有 Clipper 实践经验的人(@angus-johnson?)可以消除这种困惑吗?

我的问题再次是:我应该如何实现这个?虽然 Clipper 库中已经有现成的实际解决方案,但我是否要重新发明轮子?

旁注:PolyTree仍然需要测试每条 路径来确定PolyNode点在哪一条。没有Clipper.PointInPolyTree()方法,因此,据我所知PolyTree没有帮助。

分隔外多边形和内多边形的结构:

public class HitData
{
    public List<List<IntPoint>> Outer, Inner;

    public HitData(List<List<IntPoint>> paths)
    {
        Outer = new List<List<IntPoint>>();
        Inner = new List<List<IntPoint>>(); …
Run Code Online (Sandbox Code Playgroud)

clipperlib

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

更改找到的项目中的值

我正在尝试查找并更改迭代器中的特定项目,如下所示:

struct ItemType {
    name: &'static str,
    value: i32
}

struct OuterType {
    list: Vec<ItemType>
}

impl OuterType {
    pub fn setByName(
        self: &mut Self,
        name: &str
    ) -> Result<(), String> {

        match self.list.iter().find(|item| item.name == name) {
            Some(item_found) => {
                item_found.value = 1;
            },
            None => {
                return Err(format!("unrecognized item name (was \"{}\")", name));
            }
        }

        Ok(())
    }
}
Run Code Online (Sandbox Code Playgroud)

但这由于多种原因而无法编译,其中一些原因:

  • 没有Copy特征(不想更改副本,我想就地更改项目);
  • 没有借用,添加&(没有帮助);
  • 不可变,添加mut(没有帮助);
  • 不能分配给item_found.valuea 后面的哪个&
  • 在某些时候它说&可能会 …

rust

3
推荐指数
1
解决办法
241
查看次数

websocket实现的性能比较

编辑:为了防止关闭这个问题,我将其范围缩小到本质。

有人可以分享下面列出的两个 websocket 实现之间的性能测试(以 MB/s 为单位)吗?应用程序或硬件细节无关紧要,对于一个简单的常见场景,只需两个粗略的数字就足够了。


原问题

有人测试了这两个Node.js的 websocket 实现的性能吗?

我找不到最近的任何内容(只是 2012-2013 年的一堆文章)。我希望看到的是:

  • 开销(如果有的话,考虑到实际的网络延迟更相关,我猜它们都收敛到 0)
  • 吞吐量(相同应用程序/硬件的简单 MB/S 数字就很好)
  • 我们真的可以在网络级别上广播数据吗(尽管有底层 TCP?这可能吗?)或者它只是一个被滥用的方法名称(实际上在循环中向许多客户端发送相同的消息for())?

更好的是:

  • 使用/不使用 Nagle 算法的比较
  • JSON 与二进制消息的比较

performance websocket node.js

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

如何将结构的实现移动到单独的文件中而不将其放入子模块中?

我有这个主要功能:

mod tools;

fn main() {

    let mut factory = tools::TerminalFactory::new();
    let trm: tools::Terminal;

    trm = factory.create("TTY1".to_string());
    println!("{}", trm);

    std::process::exit(0);
}
Run Code Online (Sandbox Code Playgroud)

这是tools/mod.rs

pub struct Terminal {
    id: u32,
    pub name: String
}

impl Terminal {
    pub fn get_id(self: &Self) -> u32 {
        self.id
    }
}

impl std::fmt::Display for Terminal {
    fn fmt(self: &Self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "TERMINAL#{} ({})", self.id, self.name)
    }
}

pub struct TerminalFactory {
    next_id: u32
}

impl TerminalFactory {
    pub fn …
Run Code Online (Sandbox Code Playgroud)

rust

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

如何预测winforms中的所有按钮(C#)

你能帮帮我吗?我在winforms.designer.cs中有所有按钮,我为所有按钮分配了相同的处理程序.处理程序是MouseEnterMouseLeave.我需要找到所有按钮和分配给每个不同的MouseEnterMouseLeave.

我在一个按钮上尝试了这个,但它不起作用.

private void createButton_MouseEnter(object sender, EventArgs e)
{
    createButton.Cursor = NativeMethods.LoadCustomCursor(Path.Combine(collection.source, collection.cursor_hand));
    switch (Name)
    {
        case "createButton":
            this.createButton.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.create_on));
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# case button winforms

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

标签 统计

rust ×2

button ×1

c# ×1

case ×1

clipperlib ×1

node.js ×1

performance ×1

websocket ×1

winforms ×1