| Hjem | Hardware | Netværk | Programmering | software | Fejlfinding | systemer | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringssprog
  • Delphi programmering
  • Java programmering
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl programmering
  • Python Programming
  • Ruby Programming
  • Visual Basics Programmering
  •  
    Computer Viden >> Programmering >> C /C + + Programming >> Content
    Sådan Beregn Krydsende cirkler i C + +
    Beregning skæringspunkterne af to cirkler er et lidt tricky problem i geometri , men løsningen er ligetil og enkel at gennemføre i C + + . Du får brug for en slags point klasse til rådighed, der kan håndtere grundlæggende aritmetik , såsom addition og subtraktion af 2 -dimensionelle punkter. Hvis du ikke har en, kan du bruge en std :: vector fra Standard Template Library på samme måde . Ting du har brug
    punkt klasse, der håndterer grundlæggende aritmetik
    Vis Flere Instruktioner
    Check for Særlige tilfælde
    1

    Beregn afstanden mellem de cirkler ' centre : < br >

    Punkt delta = p2 - p1 , float distanceSquared = delta.X * delta.X + delta.Y * delta.Y , float distance = sqrt ( distanceSquared )
    2

    Check hvis cirklerne er helt adskilt fra hinanden . I dette tilfælde vil afstanden mellem centrene af cirklerne være større end summen af ​​deres radier , så der er ingen måde, de kan skærer hinanden . Hvis dette er tilfældet, håndtere fejlen på den måde fungerer bedst for dit program

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

    3

    Tjek om en cirkel er helt inden den anden. I dette tilfælde vil der også være nogen løsninger

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

    Kontroller, om cirkler er identiske . Det betyder, at der er et uendeligt antal løsninger - en for hvert punkt på cirklen

    hvis ( distSquared == 0 && r1 == r2) tilbagevenden infiniteIntersections ; .
    < . br > Find Intersections
    5

    Beregn afstanden fra midten af ​​den første cirkel til akkord forbinder skæringspunkter

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

    Beregn halvdelen af længden af ​​den akkord : < br >

    float halfChordLength = sqrt ( r1 * r1 - chordDistanceSquared )
    7

    Find det punkt i centrum af akkord : Hej

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

    Compute placeringen af ​​de skæringspunkter ved hjælp af oplysninger, du har beregnet hidtil : Hej

    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 ,

    Forrige :

    næste :
      Relaterede artikler
    ·Hvordan man skriver Word Equivalent af en check Beløb …
    ·Sådan kompilere C + + på Linux 
    ·Hvordan laver man et RPG spil i C + + 
    ·Fordele ved LINQ 
    ·Sådan tilføjes rækker til en Datagrid 
    ·Hvordan man gør Floating Point Divisioner 
    ·Sådan bruges GDB Debugger af GNU 
    ·Hvilke programmer Brug Visual C 
    ·Hvordan laver MFC kommandoknapper 
    ·Hvordan man åbner en PDF-fil i C # 
      Anbefalede Artikler
    ·Sådan Konverter Newline for MySQL 
    ·Sådan bruges QBasic til Skriv til Port 
    ·Sådan Set Up IIS 6 
    ·Sådan Put en Sub program i Visual Basic 6.0 
    ·Sådan bruges WMI Detect VMWare 
    ·Sådan Bind en opregning til et DataGridView Column 
    ·JavaScript Beregninger med decimaler 
    ·Sådan formateres en DataGrid Bound Field 
    ·Datalogi Tutorial 
    ·Sådan Opdater rækker i MySQL 
    Copyright © Computer Viden http://www.computerdk.com