点位置在双精度和整数之间转换
point location convert between double and integer
我有一个三维点集。每个点
拥有自己的双精度坐标 (x,y,z)。
现在我想从点集转换所有坐标
成整数值。
例如,如果我的集合包含介于 0.0 和
1.0。如果我用floor()
转换成整数,我就分不清了
结果。
如何正确转换它们?我需要缩放吗?
你关于转换成 int
值的问题表明你将在像素显示中显示点,这里确实先用 double
然后 floor
缩放它们(或ceil
或 round
) 值。一个简单的转换也将进行转换:
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;
}
我有一个三维点集。每个点 拥有自己的双精度坐标 (x,y,z)。 现在我想从点集转换所有坐标 成整数值。
例如,如果我的集合包含介于 0.0 和
1.0。如果我用floor()
转换成整数,我就分不清了
结果。
如何正确转换它们?我需要缩放吗?
你关于转换成 int
值的问题表明你将在像素显示中显示点,这里确实先用 double
然后 floor
缩放它们(或ceil
或 round
) 值。一个简单的转换也将进行转换:
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;
}