float calcDistance(ClickData a, ClickData b) { //float ax = a.x * a.a, ay = a.y * a.b, az = a.z * a.c; // float bx = b.x * b.a, by = b.y * b.b, bz = b.z * b.c; return((float)Math.Sqrt(a.a * a.a * ((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y)) + a.c * a.c * (b.z - a.z) * (b.z - a.z) - a.a * a.a * (b.x - a.x) * (b.y - a.y))); }
float calcAngle(ClickData a, ClickData b, ClickData c) { float phi; float d1 = calcDistance(a, b), d3 = calcDistance(a, c), d2 = calcDistance(b, c); float x = (d1 * d1 + d2 * d2 - d3 * d3); phi = x / 2 / d1 / d2; return((float)(Math.Acos(phi) / Math.PI * 180)); }
private void Form1_Activated(object sender, EventArgs e) { if (data != null) { data = null; } if (dt == new DateTime(1970, 1, 1)) { return; } if (DateTime.Now.Subtract(dt).TotalSeconds > 30.0) { MessageBox.Show("Программа завершена аварийно. Перезапустите программу!"); } }
private void angButton_Click(object sender, EventArgs e) { if (anglCalc) { angButton.Text = "Angle"; } else { angButton.Text = "Select first"; distButton.Text = "Distance"; distCalc = false; } first = null; second = null; anglCalc = !anglCalc; }
public void ReceiveCallback(IAsyncResult AsyncCall) { System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); Socket listener = (Socket)AsyncCall.AsyncState; Socket client = listener.EndAccept(AsyncCall); using (NetworkStream s = new NetworkStream(client)) { int l = s.ReadByte(); if (l != 0) { if (l == 111) { Continue(); s.Close(); client.Close(); listener.BeginAccept(new AsyncCallback(ReceiveCallback), listener); return; } byte[] buf = new byte[l]; s.Read(buf, 0, l); } else { //using (var st = File.OpenRead(@"F:\DIP\HanticStructure3D\data.xml")) using (var st = File.OpenRead(@"data.xml")) { XmlSerializer ser = new XmlSerializer(typeof(ClickData)); ClickData dat = (ClickData)(ser.Deserialize(st)); onClick(dat); st.Close(); } //File.Delete(@"F:\DIP\HanticStructure3D\data.xml"); File.Delete(@"data.xml"); } s.Close(); } client.Close(); // После того как завершили соединение, говорим ОС что мы готовы принять новое listener.BeginAccept(new AsyncCallback(ReceiveCallback), listener); }
public void OnArrive(ClickData c) { this.c = c; arrive(); }
private void Serv_onClick(ClickData c) { if (c.beta) { float angle = calcAngle(c.ang1, c, c.ang3); betaTable.Invoke((Action) delegate() { betaTable.Rows.Add(c.name, angle.ToString("F4")); betas.Add(current.elList[0].r); betasName.Add(current.elList[0].elenemtName.Substring(0, 2)); }); return; } if (distCalc) { if (first == null) { first = c; distButton.Invoke((Action) delegate { distButton.Text = "Select second"; }); } else { float dist = calcDistance(first, c); distTable.Invoke((Action) delegate() { distTable.Rows.Add(first.name, c.name, dist.ToString("F4")); dists.Add(current.elList[0].r); distsName.Add(current.elList[0].elenemtName.Substring(0, 2)); }); first = null; distButton.Invoke((Action) delegate { distButton.Text = "Select first"; }); } } if (anglCalc) { if (first == null) { first = c; angButton.Invoke((Action) delegate { angButton.Text = "Select second"; }); } else { if (second == null) { second = c; angButton.Invoke((Action) delegate { angButton.Text = "Select third"; }); } else { float angle = calcAngle(first, second, c); angleTable.Invoke((Action) delegate() { angleTable.Rows.Add(first.name, second.name, c.name, angle.ToString("F4")); angles.Add(current.elList[0].r); anglesName.Add(current.elList[0].elenemtName.Substring(0, 2)); }); first = null; second = null; angButton.Invoke((Action) delegate { angButton.Text = "Select first"; }); } } } compoundRelTable.Invoke((Action) delegate() { if (compoundRelTable.RowCount == 0 || !(compoundRelTable.Rows[compoundRelTable.RowCount - 1].Cells[0].Value.ToString() == c.name && compoundRelTable.Rows[compoundRelTable.RowCount - 1].Cells[1].Value.ToString() == c.x.ToString("F4") && compoundRelTable.Rows[compoundRelTable.RowCount - 1].Cells[2].Value.ToString() == c.y.ToString("F4") && compoundRelTable.Rows[compoundRelTable.RowCount - 1].Cells[3].Value.ToString() == c.z.ToString("F4"))) { compoundRelTable.Rows.Add(c.name, c.x.ToString("F4"), c.y.ToString("F4"), c.z.ToString("F4")); compoundAbsTable.Rows.Add(c.name, (c.x * c.a).ToString("F4"), (c.y * c.b).ToString("F4"), (c.z * c.c).ToString("F4")); } }); }