小编tom*_*sey的帖子

将多边形坐标从Double转换为Long以与Clipper库一起使用

我有两个多边形,它们的顶点存储为双坐标.我想找到这些多边形的交叉区域,所以我正在看Clipper库(C++版本).问题是,Clipper仅适用于整数数学(它使用Long类型).

有没有办法可以安全地转换具有相同比例因子的多边形,将它们的坐标转换为Longs,使用Clipper执行交点算法,然后使用相同的因子缩小生成的交叉点多边形,并将其转换回Double没有太多的精度损失?

我无法理解如何做到这一点.

c++ casting polygon data-conversion clipperlib

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

为什么$ {1:r}不删除zsh脚本中的文件扩展名?

我正在编写一个zsh脚本来自动执行一些视频编码。要转换的文件将是脚本的第一个参数,其中包含以下行:

ffmpeg -i $1 -ac 0 -vcodec libx264 -b:v 500k -crf 20 ${1:r}.mp4
Run Code Online (Sandbox Code Playgroud)

我希望${1:r}.mp4创建一个与.mov输入同名的文件,但使用.mp4文件扩展名替换.mov。但是我得到了input.mov.mp4。:r修饰符为什么不去除文件扩展名?

zsh

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

使用临时数组来减少代码效率低下?

我是c ++(和SO)的新手,很抱歉,如果这很明显的话.

我已经开始在我的代码中使用临时数组来减少重复并使更容易对多个对象做同样的事情.所以代替:

MyObject obj1, obj2, obj3, obj4;

obj1.doSomming(arg);
obj2.doSomming(arg);
obj3.doSomming(arg);
obj4.doSomming(arg);
Run Code Online (Sandbox Code Playgroud)

我正在做:

MyObject obj1, obj2, obj3, obj4;
MyObject* objs[] = {&obj1, &obj2, &obj3, &obj4};

for (int i = 0; i !=4; ++i)
    objs[i]->doSomming(arg);
Run Code Online (Sandbox Code Playgroud)

这对性能有害吗?比如,它会导致不必要的内存分配吗?这是好习惯吗?谢谢.

c++ arrays performance

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

标签 统计

c++ ×2

arrays ×1

casting ×1

clipperlib ×1

data-conversion ×1

performance ×1

polygon ×1

zsh ×1