【发布时间】:2016-04-07 19:34:55
【问题描述】:
我有以下代码在 2D 插值颜色图中显示我的传感器数据。但是,我想将其转换为 3D 网格表面。我只能找到一些复杂的方法来做到这一点。但我在想的是一种更简单的方法,可以根据每个数据数组上的不同颜色将 2D 颜色图拉到更高的级别,使 2D 位图像 3D
Bitmap bmp3 = new Bitmap(PicBoxChi.Width, PicBoxChi.Height);
using (Graphics g = Graphics.FromImage(bmp3))
{
// this loop create a 6X4 map to show my sensor data
for (int a = 0; a < 6; a++)
{
for (int b = 0; b < 4; b++)
{
pts[a, b] = new PointC(new PointF(x0 + b*width, y0 + a*height), data[a*4+b+48] );
}
}
int colorLength = cmap.GetLength(0);
// Bilinear interpolation:
// this loop transfer my 6x4 sensor data map to a color map
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 3; j++)
{
PointF[] pta = new PointF[4]{pts[i,j].pointf, pts[i+1,j].pointf,
pts[i+1,j+1].pointf, pts[i,j+1].pointf};
float[] cdata = new float[4]{pts[i,j].C,pts[i+1,j].C,
pts[i+1,j+1].C,pts[i,j+1].C};
Interp(g, pta, cdata, 50);
}
}
}
我现在可以通过上面的代码创建 2D 彩色位图。但我不知道要制作如图所示的 3D。
【问题讨论】:
-
从知道高度的矩形图像中编译由三角形组成的 3D 网格的行为本身并不难。据我了解,找到每个像素的高度是个问题,对吧?
-
请说明您是否在使用 color->height 函数时遇到问题和/或是否需要 3D 网格生成方面的帮助。
-
@user2464424 是的,我找不到每个像素的高度。
-
@Mr_Pouet 我需要 3D 网格生成方面的帮助。如图所示的图片是我要构建的 3D 网格表面。我只能找到一种矩阵变换方法来生成 3D 表面,但是我想到了 color->height 函数来生成这个 3D 网格。非常感谢您在生成 3D 网格方面提供帮助