| Casa | Hardware | Redes | Programación | software | Criticar | Sistemas |   
Programación  
  • C /C + + Programming

  • Lenguajes De Programación

  • Delphi Programación

  • Programación Java

  • JavaScript Programación

  • Programación PHP /MySQL

  • Perl Programming

  • Python Programming

  • Rubí Programación

  • Visual Basics Programación
  •  
    Conocimientos Informáticos >> Programación >> C /C + + Programming >> Content
    Cómo calcular los círculos de intersección de C + +
    Cálculo de los puntos de intersección de dos círculos es un problema un tanto complicado en la geometría , pero la solución es sencilla y fácil de implementar en C + + . Usted necesitará algún tipo de clase de punto disponible que puede manejar operaciones aritméticas básicas , como sumas y restas de puntos de 2 dimensiones . Si no tiene uno, puede utilizar un std :: vector de la Biblioteca de plantillas estándar de la misma manera . Cosas que necesitará
    clase Point que se encarga de la aritmética básica
    Ver Más instrucciones
    Check para Casos Especiales
    1

    Calcular la distancia entre los centros de los círculos :

    Point delta = p2 - p1 ; float distanceSquared = delta.X * delta.X + delta.Y * delta.Y ; distancia float = sqrt ( distanceSquared ) ;
    2

    Check si los círculos están completamente separados el uno del otro . En este caso , la distancia entre los centros de los círculos será mayor que la suma de sus radios , así que no hay manera de que puedan intersectar . Si este es el caso , controlar el error en todo lo que funciona mejor para su programa de descarga

    if ( distSquared > ( r1 + r2 ) * ( r1 + r2 ) ) noIntersections retorno; .

    3

    Verificar si un círculo es completamente dentro de la otra . En este caso , también habrá soluciones

    if ( distSquared <( r1 - r2 ) * ( r1 - r2 ) ) noInersections retorno; .
    4

    Compruebe si el círculos son idénticos . Esto significa que hay un número infinito de soluciones - una para cada punto en el círculo

    si ( distSquared == 0 && r1 r2 == ) infiniteIntersections retorno; .
    < . br > Para las intersecciones
    5

    Calcular la distancia desde el centro del primer círculo de la cuerda que conecta los puntos de intersección

    flotador chordDistanceSquared = ( r1 * r1 - r2 r2 * - distSquared ) * ( * r1 r1 - r2 r2 * - distSquared ) /( 4 * distSquared ) ; float chordDistance = sqrt ( chordDistanceSquared ) ;
    6

    Calcular la mitad de la longitud de la cuerda :

    flotador halfChordLength = sqrt ( * r1 r1 - chordDistanceSquared ) ;
    7

    encontrar el punto en el centro de la cuerda :

    Point chordMidpoint = p1 + chordDistance * delta /sqrt ( distSquared ) ;
    8

    Calcule las ubicaciones de los puntos de intersección con la información que ha calculado hasta ahora:

    Intersection1.x = chordMidpoint.x + chordDistance * ( p2.y - p1.y ) /distancia ; Intersection1.y = chordMidpoint.y + chordDistance * ( p2.x - p1.x ) /distancia ; Intersection2.x = chordMidpoint.x - chordDistance * ( p2.y - p1 . y) /distancia ; Intersection2.y = chordMidpoint.y - chordDistance * ( p2.x - p1.x ) /distancia ;

    Previous :

    next :
      Artículos relacionados
    ·¿Cómo puedo escribir un programa de conversión de la…
    ·Un tutorial sobre Microsoft Visual Studio C + + 
    ·Cómo agregar Gridview 
    ·Cómo utilizar plantillas Sobrecarga de funciones en C …
    ·Cómo realizar archivo de E /S en C + + 
    ·Cómo compilar C + + en Linux 
    ·Cómo convertir un alfabeto En Caps en CPP 
    ·¿Qué es una Interfaz CPP 
    ·Cómo enviar un Socket Texto en UDP en Linux 
    ·Cómo crear un archivo ejecutable de CPP en Windows 
      Artículos destacados
    ·C + + de Fibonacci Número Función 
    ·Java BorderLayout Tutorial 
    ·Cómo eliminar las cookies en PHP 
    ·Visual Basic Tutorial 
    ·Cómo utilizar Crystal Reports 2008 Con Visual Studio 2…
    ·Cómo determinar si existe una hoja dentro de un libro …
    ·Cómo enviar Vars De VBScript en un archivo por lotes 
    ·Cómo mostrar un documento de Word con PHP 
    ·Cómo reemplazar Div texto con CSS 
    ·Java vs. Rubí 
    Copyright © Conocimientos Informáticos http://ordenador.wingwit.com