是否可以为裁剪器路径提供浮动值
Is that possible to give floating values to the clipper Paths
Clipper 接受整数输入,但我想在不丢失精度的情况下传递浮点值。 整数和双精度值的裁剪器结构。
struct IntPoint {
cInt X;
cInt Y;
#ifdef use_xyz
cInt Z;
IntPoint(cInt x = 0, cInt y = 0, cInt z = 0): X(x), Y(y), Z(z) {};
#else
IntPoint(cInt x = 0, cInt y = 0): X(x), Y(y) {};
#endif
friend inline bool operator== (const IntPoint& a, const IntPoint& b)
{
return a.X == b.X && a.Y == b.Y;
}
friend inline bool operator!= (const IntPoint& a, const IntPoint& b)
{
return a.X != b.X || a.Y != b.Y;
}
};
struct DoublePoint
{
double X;
double Y;
DoublePoint(double x = 0, double y = 0) : X(x), Y(y) {}
DoublePoint(IntPoint ip) : X((double)ip.X), Y((double)ip.Y) {}
};
为什么它不将双精度值作为输入。
Paths Polygon(2);
Polygon[0] << IntPoint(10, 10) << IntPoint(60, 10) << IntPoint(30, 100) ;
Polygon[1] << IntPoint(20, 20) << IntPoint(50, 20) << IntPoint(30, 80) ; //it Works
Paths Line(1);
line[0] << DoublePoint(40.2, 10.2) << DoublePoint(56.5, 85.45); //Not works
Clipper 仅使用整数点类型。
IntPoint 结构用于表示 Clipper 库中的所有顶点。特意选择了整数存储类型以保持数值鲁棒性。(该库的早期版本使用浮点坐标,但很明显,浮点不精确总是会导致偶尔的错误。[来源]
但是,您可以按所需因子缩放输入坐标。
所以不是想要这个,(不存在(
line[0] << DoublePoint(40.2, 10.2) << DoublePoint(56.5, 85.45); //Not works
可以按 100 缩放。
line[0] << IntPoint(4020, 1020) << IntPoint(5650, 8545); //works
只需记住将输出坐标缩放 0.01 以返回到坐标系。
相关文章:
- 在Windows上用C++裁剪HBITMAP
- 如何将更多文件夹添加到c++include路径
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- C++A*算法并不总是在路径中具有目标节点
- 从函数角度看ID到文件路径的内部与外部映射
- boost xml parsingl将xml的路径作为变量发送
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 如何使用cppcheck处理半相对包含路径
- 在C++中设置基于操作系统的文件路径
- 基于编译器选项的编译二进制路径
- 按边长度递归搜索图中所有可行路径
- 使用变量值作为 PlaySound 中的路径
- 如何转换真实路径 CString c++
- 从 GUID 获取 USB 卷路径
- 查找 GCD:并非所有控制路径都返回值
- Azure Kinect 使用正文索引映射裁剪正文
- C++17 文件系统::remove_all 带有通配符路径
- 在带有尾部斜杠的路径上返回 std::filesystem::create_directories() 的值
- 是否可以为裁剪器路径提供浮动值
- 线和多边形裁剪使用裁剪器库 (c++) 返回空路径