public void Mul(ScaleFactor f) { x *= f.x; y *= f.y; z *= f.z; a *= f.a; }
public void Div(ScaleFactor f) { x /= f.x; y /= f.y; z /= f.z; a /= f.a; }
public ScaleFactor(ScaleFactor f) { x = f.x; y = f.y; z = f.z; a = f.a; }
public bool GenerateFromBitmap(string file, ScaleFactor f) { try { m_name = Path.GetFileName(file); Bitmap bm = new Bitmap(file); // add 3d points for (int y = 0; y < bm.Height; y++) { for (int x = 0; x < bm.Width; x++) { Color clr = bm.GetPixel(x, y); Point3d pnt = new Point3d(); pnt.x = f.x * ((double)x); pnt.y = f.y * ((double)y); pnt.z = f.z * ((double)clr.R); m_lstpoints.Add(pnt); } } // now generate polys for (int y = 0; y < bm.Height ; y++) { for (int x = 0; x < bm.Width ; x++) { if (y == (bm.Height - 1)) continue; if (x == (bm.Width - 1)) continue; Polygon ply = new Polygon(); ply.m_points = new Point3d[3]; int idx1 = (y * bm.Width) + x; int idx2 = (y * bm.Width) + x + 1; int idx3 = (y * bm.Width) + x + bm.Width ; ply.m_points[0] = (Point3d)m_lstpoints[idx1]; ply.m_points[1] = (Point3d)m_lstpoints[idx2]; ply.m_points[2] = (Point3d)m_lstpoints[idx3]; ply.CalcCenter(); ply.CalcNormal(); m_lstpolys.Add(ply); Polygon ply2 = new Polygon(); ply2.m_points = new Point3d[3]; idx1 = (y * bm.Width) + x + 1; idx2 = (y * bm.Width) + x + bm.Width + 1; idx3 = (y * bm.Width) + x + bm.Width; ply2.m_points[0] = (Point3d)m_lstpoints[idx1]; ply2.m_points[1] = (Point3d)m_lstpoints[idx2]; ply2.m_points[2] = (Point3d)m_lstpoints[idx3]; ply2.CalcCenter(); ply2.CalcNormal(); m_lstpolys.Add(ply2); } } Update(); return true; } catch (Exception) { return false; } }