protected void Button2_Click(object sender, EventArgs e) { Panel = Session["myObj"] as KMean; if (Session["update"].ToString() == ViewState["update"].ToString()) { Panel.reCalculateCluster(); centroids.InnerHtml = ""; points.InnerHtml = ""; //redraw new centroids for (int i = 0; i < Panel.Clusters.Count; i++) { string rgb = "fill:rgb(" + Panel.Clusters[i].color[0] + "," + Panel.Clusters[i].color[1] + "," + Panel.Clusters[i].color[2] + ");"; // choose randomly color for centroids centroids.InnerHtml += "<circle cx=" + Panel.Clusters[i].p.x.ToString() + " cy=" + Panel.Clusters[i].p.y.ToString() + " r='10.0' style=" + rgb + "></circle>"; //color every point depends on its cluster color for (int j = 0; j < Panel.Clusters[i].clusterPoints.Count; j++) { points.InnerHtml += "<circle cx=" + Panel.Clusters[i].clusterPoints[j].x.ToString() + " cy=" + Panel.Clusters[i].clusterPoints[j].y.ToString() + " r='5.0' style=" + rgb + "></circle>"; } } } else { Response.Write("<script>alert('Enter Points and Centroids First !!')</script>"); } }