Datamaskin
  | Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> C /C + + Programming >> Content
    Hvordan beregne kryssende sirkler i C + +
    Beregning av skjæringspunkter av to sirkler er et litt kinkig problem i geometri , men løsningen er grei og enkel å implementere i C + + . Du vil trenge noen form for punkt klassen tilgjengelig som kan håndtere grunnleggende aritmetikk, som addisjon og subtraksjon av to - dimensjonale punkter . Hvis du ikke har en, kan du bruke en std :: vector fra Standard Template Library på samme måte . Du trenger:
    Point klasse som håndterer grunnleggende aritmetikk
    Vis flere instruksjoner
    Sjekk for spesielle tilfeller
    en

    Beregn avstanden mellom sirklene ' sentrene :

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

    Sjekk hvis kretsene er fullstendig atskilt fra hverandre . I dette tilfelle vil avstanden mellom sentrene til sirklene være større enn summen av radiene deres , så er det ingen måte kan de krysser hverandre. Hvis dette er tilfelle , håndterer feilen på den måten som fungerer best for programmet

    if ( distSquared > ( R1 + R2 ) * ( R1 + R2 )) return noIntersections ; .

    3

    Sjekk om en sirkel er helt innenfor den andre. I dette tilfellet vil det også være noen løsninger

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

    Sjekk om kretsene er identiske. Dette betyr at det finnes et uendelig antall løsninger - ett for hvert punkt på sirkelen

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

    Beregn avstanden fra sentrum av den første sirkelen til akkord koble skjæringspunkter

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

    Beregn halvparten av lengden på akkord :

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

    Finn det punktet midt på akkord : en

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

    Beregn plasseringen av de skjæringspunkter ved hjelp av informasjonen du har beregnet så langt : en

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

    früher :

     Weiter:
      Relatert Artike
    ·Hvordan Split en String i C 
    ·Hvordan beregne Tidsforskjell i C + + 
    ·Hvordan lage din egen spillmotor 
    ·Hvordan Pass Mal Structs i funksjoner i C 
    ·C # : Hvordan få eller Juster Dato 
    ·Hvordan lage en applet & C + + 
    ·Hvordan bruke StrLen Command i C + + 
    ·Hvordan beregne størrelsen på Elements i buffere i C 
    ·Hvordan bruke C + + Virtual destructors 
    ·Hvordan bruke krypteringsalgoritmer i Visual C + + 
      Anbefalte artikler
    ·Hvordan bli kvitt Inline List Padding 
    ·Hvordan lage en overskrift å bruke HTML -koder 
    ·JDK er ikke oppdaget av Java 
    ·Hvordan Ignorer Spaces ved bruk Lengde C + + 
    ·Hvordan lage en redo log Group 
    ·Visual Basic Tegning Tutorial 
    ·Den Java-kode som sjekker inngangsverdien Med Array Ver…
    ·Hvordan skrive ut Output Screen of C Program 
    ·Hvordan bruke Listbox i Visual Studio 
    ·Hvordan skrive en temperatur konvertering program som k…
    Copyright ©  Datamaskin  http://www.datamaskin.biz/