public IList <Punto> ObtenerPuntosDeIntercepcionCon(Circunferencia otra) { if (!this.Intercepta(otra)) { throw new Exception("Las circunferencias no se interceptan."); } var puntos = new List <Punto>(); //Temporarias para el cálculo de los puntos y los coeficientes double t1 = -(otra.Centro.Y - otra.Centro.X) / (otra.Centro.X - this.Centro.X); double t2 = (otra.Centro.X * otra.Centro.X - this.Centro.X * this.Centro.X + otra.Centro.Y * otra.Centro.Y - this.Centro.Y * this.Centro.Y + this.Radio * this.Radio - otra.Radio * otra.Radio) / (2 * (otra.Centro.X - this.Centro.X)); //Coeficientes de la ecuación cuadratica double a = t2 * t2 + 1; double b = 2 * (t1 * (t2 - this.Centro.X) - this.Centro.Y); double c = t2 * t2 - 2 * t2 * this.Centro.X + this.Centro.X * this.Centro.X + this.Centro.Y * this.Centro.Y - this.Radio * this.Radio; double discriminante = b * b - 4 * a * c; if (discriminante > 0) { //Cálculo de los puntos solucion en base a las dos variantes de la formula cúadratica for (int i = 1; i >= -1; i = i - 2) { double y = (b + i * Math.Pow(discriminante, 0.5)) / (2 * a); double x = y * t1 + t2; puntos.Add(new Punto(x, y)); } } return(puntos.ToArray()); }
private void EditarToolStripButton_Click(object sender, EventArgs e) { if (DatosDataGridView.SelectedRows.Count == 0) { return; } DataGridViewRow r = DatosDataGridView.SelectedRows[0]; Circunferencia circunferencia = r.Tag as Circunferencia; Circunferencia cirAuxiliar = circunferencia.Clone() as Circunferencia; FrmCircunferenciaAE frm = new FrmCircunferenciaAE(); frm.Text = "Edición de Circunferencia"; frm.SetCircunferencia(cirAuxiliar); DialogResult dr = frm.ShowDialog(this); if (dr == DialogResult.OK) { cirAuxiliar = frm.GetCircunferencia(); if (!_repositorio.ExisteCircunferencia(cirAuxiliar)) { circunferencia = cirAuxiliar; _repositorio.EstaModificado = true; SetearFila(r, circunferencia); MessageBox.Show("Registro editado", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { SetearFila(r, circunferencia); MessageBox.Show("Registro existente", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
public Form1() { objMoneda = new Circunferencia(1.4); objRueda = new Circunferencia(10.2); InitializeComponent(); }
public void SetCircunferencia(Circunferencia circunferencia) { _circunferencia = circunferencia; }
public void Borrar(Circunferencia circunferencia) { ListaCircunferencias.Remove(circunferencia); EstaModificado = true; }
public void Agregar(Circunferencia circunferencia) { ListaCircunferencias.Add(circunferencia); EstaModificado = true; }
public bool ExisteCircunferencia(Circunferencia circunferencia) { return(ListaCircunferencias.Contains(circunferencia)); }
private string ConstruirLinea(Circunferencia circunferencia) { return($"{circunferencia.Radio}"); }
public double DistanciaEntreCentrosCon(Circunferencia otra) { return(Math.Pow(Math.Pow(this.Centro.X - otra.Centro.X, 2) + Math.Pow(this.Centro.Y - otra.Centro.Y, 2), 0.5)); }
public bool Intercepta(Circunferencia otra) { double d = this.DistanciaEntreCentrosCon(otra); return(d >= Math.Abs(this.Radio - otra.Radio) && d <= this.Radio + otra.Radio); }