点位置在双精度和整数之间转换

point location convert between double and integer

我有一个三维点集。每个点 拥有自己的双精度坐标 (x,y,z)。 现在我想从点集转换所有坐标 成整数值。

例如,如果我的集合包含介于 0.0 和 1.0。如果我用floor()转换成整数,我就分不清了 结果。

如何正确转换它们?我需要缩放吗?

你关于转换成 int 值的问题表明你将在像素显示中显示点,这里确实先用 double 然后 floor 缩放它们(或ceilround) 值。一个简单的转换也将进行转换:

int pi.x = (int)pd.x;

或者,更简单的是作业本身。

int pi.x = pd.x;

最好的解决方案是为投影创建一个对话函数,这样您可以稍后决定是否需要做更多的事情来获得原始点的图像。这是一个例子:

struct Point3Dd { double x, y, z; };
struct Point3Di { int x, y, z; };

double SCALE = 100.0;

void calc_projection(Point3Dd* pd, Point3Di* pi) {
    pi->x = SCALE * pd->x;
    pi->y = SCALE * pd->y;
    pi->z = SCALE * pd->z;
}