| maison  | Hardware  | réseaux  | programmation  | Logiciel  | Dépannage  | systèmes |  
programmation  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Connaissances Informatiques >> programmation >> C /C + + Programming >> Content
    Comment calculer les cercles entrecroisés en C + +
    Calcul des points d'intersection des deux cercles est un problème assez délicat dans la géométrie, mais la solution est simple et facile à mettre en œuvre en C + + . Vous aurez besoin d' une sorte de classe de point disponible qui peut gérer l'arithmétique de base , telles que l'addition et la soustraction de points en 2 dimensions . Si vous n'en avez pas , vous pouvez utiliser un std :: vector de la Standard Template Library de la même façon . Choses que vous devez classe Point
    qui gère de base arithmétique
    Show More Instructions
    Check pour les cas particuliers
    1

    calculer la distance entre les centres des cercles :

    point delta = p2 - p1 ; flotteur distanceSquared = Ax * Ax + Ay Ay * ; distance float = sqrt ( distanceSquared ) ;
    2

    Vérifier si les cercles sont complètement séparées l'une de l' autre . Dans ce cas, la distance entre les centres des cercles sera plus grande que la somme de leurs rayons , donc il n'y a aucun moyen qu'ils peuvent se croiser . Si c'est le cas , gérer l'erreur dans la manière qui convient le mieux à votre programme

    if ( distSquared > ( R1 + R2 ) * ( R1 + R2 ) ) noIntersections de retour; .
    Hôtels 3

    Vérifiez si un cercle est complètement dans l'autre. Dans ce cas, il y aura également pas de solutions

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

    Vérifiez si le cercles sont identiques. Cela signifie qu'il ya un nombre infini de solutions - un pour chaque point du cercle

    si ( distSquared == 0 && r1 == r2) infiniteIntersections de retour; .
    < . br> Trouver les intersections
    5

    calculer la distance entre le centre du premier cercle de la corde reliant les points d'intersection

    flotteur chordDistanceSquared = (r1 * r1 - r2 r2 * - distSquared ) * ( r1 * r1 - r2 * r2 - distSquared ) /( 4 * distSquared ) ; flotteur chordDistance = racine ( chordDistanceSquared ) ;
    6

    Calculer la moitié de la longueur de la corde :

    flotteur halfChordLength = racine (r1 * r1 - chordDistanceSquared ) ;
    7

    Trouver le point au centre de la corde :

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

    Calculer les emplacements des points d'intersection en utilisant les informations que vous avez calculé jusqu'ici :

    Intersection1.x = chordMidpoint.x + chordDistance * ( p2.y - p1.y ) /distance, Intersection1.y = chordMidpoint.y + chordDistance * ( P2.x - P1.x ) /distance, Intersection2.x = chordMidpoint.x - chordDistance * ( p2.y - p1 . y) /distance, Intersection2.y = chordMidpoint.y - chordDistance * ( P2.x - P1.x ) /distance,

    Previous :

    next :
      articles connexes
    ·C Fonction statique en ligne 
    ·Les projets ASP.NET et de codification en C 
    ·Comment utiliser la chapelure dans Masterpage 
    ·Que faire avec une erreur Trapped in C 
    ·Comment utiliser les exposants en C + + 
    ·Comment trier dans une grille de données 
    ·Comment retourner un vecteur à partir d'une fonction 
    ·Comment faire pour installer Allegro Visual C 
    ·Comment remplacer les éléments d'un tableau en C 
    ·Comment enregistrer les appels à D3D 
      articles en vedette
    ·Comment utiliser le Datareader en VB.Net 
    ·Comment ajouter un DataRow à un DataTable 
    ·Comment faire pour extraire des attributs avec Python 
    ·Comment créer un PDF à partir d' un texte avec Perl 
    ·Développement API de Google Maps 
    ·Comment constituer un dossier Classe 
    ·Comment accéder à une requête de suppression VBA 
    ·Comment utiliser Zend ACL dans un environnement modulai…
    ·Comment attribuer un nombre de lignes à une variable e…
    ·Comment dessiner un arbre avec une toile en JavaScript 
    Copyright © Connaissances Informatiques http://fr.wingwit.com