public static IEnumerable fHtmToCenterPoint(SqlInt64 HtmID) { double x, y, z; ArrayList point = new ArrayList(); HtmTrixel htm = new HtmTrixel(); char[] name = new char[HtmTrixel.eMaxNameSize]; double[] v0, v1, v2; double norm; v0 = new double[3]; v1 = new double[3]; v2 = new double[3]; if (htm.hid2name(name, (long)HtmID) > 1) { htm.name2Triangle(name, v0, v1, v2); x = v0[0] + v1[0] + v2[0]; y = v0[1] + v1[1] + v2[1]; z = v0[2] + v1[2] + v2[2]; norm = x * x + y * y + z * z; norm = Math.Sqrt(norm); x /= norm; y /= norm; z /= norm; point.Add(new Triple(x, y, z)); } else { /* return empty */ } return (IEnumerable)point; }
public static IEnumerable fHtmToCornerPoints(SqlInt64 HtmID) { ArrayList point = new ArrayList(); HtmTrixel htm = new HtmTrixel(); char[] name = new char[HtmTrixel.eMaxNameSize]; double[] v0, v1, v2; v0 = new double[3]; v1 = new double[3]; v2 = new double[3]; if (htm.hid2name(name, (long)HtmID) > 1) { htm.name2Triangle(name, v0, v1, v2); point.Add(new Triple(v0[0], v0[1], v0[2])); point.Add(new Triple(v1[0], v1[1], v1[2])); point.Add(new Triple(v2[0], v2[1], v2[2])); } else { /* return empty */ } return (IEnumerable)point; }
public static SqlString fHtmToString(SqlInt64 HtmID) { HtmTrixel htm = new HtmTrixel(); char[] name = new char[HtmTrixel.eMaxNameSize]; int level = htm.hid2name(name, (long)HtmID); if (level < 0) { return (new SqlString("Invalid HTM Identifier.")); } else { return (new SqlString(new string(name, 0, level))); } }