Español
Fuente/ Codesnippets

Kometen: Kegelschnitt-Typ y Bahnparameter de zughöriger Gleichung ermitteln

 

p.specht

Mit el Karthesischen Kegelschnittgleichung a*x² + 2b*x*y + c*y² + 2d*x + 2e*y + f = 0 puede sämtliche Arten de Kegelschnitten (Ellipse, Parabel, Hyperbel) einschließlich aller degenerierten Fälle (Geradenzwickel, Gerade, Punkt oder Garnichts) dargestellt voluntad. In el Astronomie betrifft el zB el Bahnen de Kometen. En ya ermittelten Parametern wäre aber de Interesse, en welchen Typ lo jeweils tatsächlich es y cómo el Bestimmungselemente des Kegelschnittes lauten. Das leistet nachstehendes, de me después de XProfan-11 übersetzes Programa de el genialen Homepage de Prof. J.-P. Moreau - Como siempre sin Gewähr!
Título de la ventana upper$("Aus karthesischer Kegelschnittformel "+\
"auf Parámetro des Kegelschnittes schließen")
Ventana de Estilo 24':Ventana (%maxx-%maxy)/2,0-%maxy,%maxy
font 2:set("decimals",12):randomize
'Q: https://jean-pierre.moreau.pagesperso-orange.fr/Basic/conical_bas.txt
'Transscribed to XProfan 11.2a by P.Pájaro carpintero, Vienna (Austria).
'*  Type: Parabola                                   *
'*  Center:  x=0.999999  y=5.000000                  *
'*  Symmetry direction:  x=1  y=-1                   *
'*  Foco:   x=1.124999  y=4.875000                  *
'*  Parámetro:           0.35355339                  *
'*                                                   *
'*                     Basic version by J-P Moreau.  *
'*                           (www.jpmoreau.fr)       *
Declarar c$,a!,b!,c!,d!,e!,f!,x!,y!
Declarar ex!,xc!,yc!,xla!,xlb!,xf1!,yf1!,xf2!,yf2!
Declarar xs1!,ys1!,xs2!,ys2!,xv1!,yv1!,xv2!,yv2!
Declarar delta!,u!,xl!,xm!,x2!,y2!,i&,j&,ityp&,typ&
START:
CLS rgb(200+rnd(56),200+rnd(56),200+rnd(56))
imprimir
imprimir "          UMFORMUNG DER KEGELSCHNITTGLEICHUNG AUF ELEMENTARE DARSTELLUNG  "
imprimir "          ==============================================================  \n"
imprimir "  Parámetro el Gleichung a*x² + 2b*x*y + c*y² + 2d*x + 2e*y + f = 0 eingeben:\n"
'Testwerte lt. Ejemplo de el Sourcetext:
a!=1:b!=2:c!=1:d!=-13:e!=-11:f!=32
imprimir "  Cuestión: Sollen el Werte des internen Testbeispiels uso [j/n]? ";
input c$:c$=left$(lower$(trim$(c$)),1):caso (c$="j") or (c$="y"):goto "Huepf"
imprimir
imprimir "    a  = ";:input a!
imprimir "    2b = ";:input b!
imprimir "    c  = ";:input c!
imprimir "    2d = ";:input d!
imprimir "    2e = ";:input e!
imprimir "    f  = ";:input f!

if (a!=0) and (b!=0) and (c!=0) and (d!=0) and (e!=0) and (f!=0)

    beep:imprimir "\n   *** Lo fueron no Werte eingegeben! *** "
    waitinput 10000
    goto "START"

endif

Huepf:
imprimir
b!=b!/2: d!=d!/2: e!=e!/2
delta!=a!*c!-b!*b!

if delta!=0

    gosub "S1000"'call Parabola

más

    xc!=(b!*e!-d!*c!)/delta!
    yc!=(b!*d!-a!*e!)/delta!
    f! = f! + a!*xc!*xc!+2*b!*xc!*yc!+c!*yc!*yc!+2*d!*xc!+2*e!*yc!

    if f!=0

        if delta!>0

            ityp&=7'one point

        más

            ityp&=6'two lines
            goto "G100"

        endif

    endif

    u!=sqrt((a!-c!)*(a!-c!)+4*b!*b!)
    xl!=(a!+c!-u!)/2: xm!=(a!+c!+u!)/2

    if (a!=c!) and (b!=0)

        if (f!*a!)>=0

            ityp&=8'no conical
            goto "G100"

        más

            ityp&=4'circle
            xla!=sqrt(-f!/a!)
            ex!=1
            goto "G100"

        endif

    endif

    if (a!<c!) and (b!=0)

        x2!=1: y2!=0: xv1!=1: yv1!=0

    más

        xv1!=b!: yv1!=1-a!
        u!=sqrt(xv1!*xv1!+yv1!*yv1!)
        x2!=xv1!/u!: y2!=yv1!/u!

    endif

    if delta!<0

        gosub "S2000"'call Hyperbola

    más

        gosub "S3000"'call Ellipse

    endif

endif'más if delta=0

' imprimir results
G100:

if ityp&=1

    imprimir "  Type: Ellipse"
    imprimir
    imprimir "  Mittelpunktkoordianten:  x=";format$("%g",xc!);"  y=";format$("%g",yc!)
    imprimir "\n  Richtung Große Achse  :  x=";format$("%g",xv1!);"  y=";format$("%g",yv1!)
    imprimir "\n  Richtung Kleine Achse :  x=";format$("%g",xv2!);"  y=";format$("%g",yv2!)
    imprimir "\n  Longitud Große Halbachse :  ";format$("%g",xla!)
    imprimir "\n  Longitud Kleine Halbachse:  ";format$("%g",xlb!)
    imprimir "\n  Brennpunktkoordinaten :  x=";format$("%g",xf1!);"  y=";format$("%g",yf1!)
    imprimir "\n  Zweiter Brennpunkt    :  x=";format$("%g",xf2!);"  y=";format$("%g",yf2!)
    imprimir "\n  Num.Exzentrizität     :  ";format$("%g",ex!)

endif

if ityp&=2

    if (a!+c!)=0

        imprimir "  Typ: Gleichseitige Hyperbel"

    más

        imprimir "  Typ: Hyperbel"

    endif

    imprimir
    imprimir "  Mittelpunkt           :  x=";format$("%g",xc!);"  y=";format$("%g",yc!)
    imprimir "\n  Richtung Erste Achse  :  x=";format$("%g",xv1!);"  y=";format$("%g",yv1!)
    imprimir "\n  Richtung Zweite Achse :  x=";format$("%g",xv2!);"  y=";format$("%g",yv2!)
    imprimir "\n  Erste Leitgerade      :  x=";format$("%g",xs1!);"  y=";format$("%g",ys1!)
    imprimir "\n  Zweite Leitgerade     :  x=";format$("%g",xs2!);"  y=";format$("%g",ys2!)
    imprimir "\n  Erster Brennpunkt     :  x=";format$("%g",xf1!);"  y=";format$("%g",yf1!)
    imprimir "\n  Zweiter Brennpunkt    :  x=";format$("%g",xf2!);"  y=";format$("%g",yf2!)
    imprimir "\n  Num.Exzentrizität     :  ";format$("%g",ex!)

endif

if ityp&=3

    imprimir "  Typ: Parabel"
    imprimir
    imprimir "  Mittelpunkt           :  x=";format$("%g",xc!); "  y=";format$("%g",yc!)
    imprimir "\n  Symmetrieachsenvektor :  x=";format$("%g",xv1!);"  y=";format$("%g",yv1!)
    imprimir "\n  Brennpunktskoordinaten:  x=";format$("%g",xf1!);"  y=";format$("%g",yf1!)
    imprimir "\n  Parámetro el Parabel :  "; format$("%g",ex!)

endif

if ityp&=4

    imprimir "  Typ: Kreis"
    imprimir
    imprimir "  Mittelpunkt           :  x=";format$("%g",xc!);"  y=";format$("%g",yc!)
    imprimir "\n  Radius                :  ";format$("%g",xla!)
    imprimir "\n  Num.Exzentrizität     :  ";format$("%g",ex!)

endif

caso ityp&=5: imprimir "  Dieser Kegelschnitt degeneriert a Linie."
caso ityp&=6: imprimir "  Dieser Kegelschnitt degeneriert a zwei Geraden."
caso ityp&=7: imprimir "  Dieser Kegelschnitt degeneriert a una individual Punkt."
caso ityp&=8: imprimir "  Reell no lösbar. Kein Kegelschnitt!"
imprimir
Waitinput
Imprimir "\n   Noch una Ejemplo durchrechnen [n,e = Ende]? ";
input c$:c$=left$(lower$(trim$(c$)),1)
casenot (c$="n") or (c$="e"):Goto "START"
beep:Imprimir "\n   Programa final.\n\n   Auf Wiedersehen!"
Waitinput 3000
FIN'of main program
'Subroutine Parabel
S1000:
ityp&=3

if (c!=0) and (a!=0)'The parabola does not exist or is degenerated into a line

    if (d!=0) and (e!=0)

        typ&=8'no conical

    más

        typ&=5'line
        volver

    endif

endif

if (a!=0)

    x2!=1: y2!=0: xl!=0: xm!=1

más

    if a!<0

        f!=-f!: e!=-e!: d!=-d!
        c!=-c!: b!=-b!: a!=-a!

    endif

    xl!=sqrt(a!): xm!=sqrt(c!)
    caso b!<0 : xm!=-xm!
    u!=sqrt(a!+c!)
    x2!=xm!/u!: y2!=-xl!/u!
    f!=f!*u!:c!=(a!+c!)*u!
    u!=d!*xm!-e!*xl!: e!=d!*xl!+e!*xm!: d!=u!

endif

if d!=0

    if sqr(e!)<(c!*f!)

        typ&=8

    más

        typ&=6'two lines
        volver

    endif

más

    x!=(e!*e!-c!*f!)/2/c!/d! : y!=-e!/c!
    xc!=x!*x2!-y!*y2! : yc!=y!*x2!+x!*y2!
    ex!=-d!/c!
    xf1!=xc!+ex!*x2!/2 :yf1!=yc!+ex!*y2!/2
    xv1!=xm! : yv1!=-xl!

endif

volver
'Subroutine Hyperbel
S2000:
ityp&=2
xla!=sqrt(-abs(f!)/xl!): xlb!=sqrt(abs(f!)/xm!)

if f!<0

    u!=xla!: xla!=xlb!: xlb!=u!
    u!=x2!: x2!=-y2!: y2!=u!
    u!=xv1!: xv1!=-yv1!: yv1!=u!

endif

xv2!=-yv1!: yv2!=xv1!
u!=sqrt(xla!*xla!+xlb!*xlb!)
xs1!=xc!+x2!*xla!: ys1!=yc!+y2!*xla!
xs2!=xc!-x2!*xla!: ys2!=yc!-y2!*xla!
xf1!=xc!+x2!*u!: yf1!=yc!+y2!*u!
xf2!=xc!-x2!*u!: yf2!=yc!-y2!*u!
ex!=u!/xla!
volver
'Subroutine Ellipse
S3000:
ityp&=1

if (f!*xl!)>0

    typ&=8'no conical
    volver

endif

xla!=sqrt(-f!/xl!): xlb!=sqrt(-f!/xm!)

if xl!<0

    u!=xla!: xla!=xlb!: xlb!=u!
    u!=x2!: x2!=-y2!: y2!=u!
    u!=xv1!: xv1!=-yv1!: yv1!=u!

endif

xv2!=-yv1!: yv2!=xv1!
u!=sqrt(xla!*xla!-xlb!*xlb!)
xf1!=xc!+x2!*u!: yf1!=yc!+y2!*u!
xf2!=xc!-x2!*u!: yf2!=yc!-y2!*u!
ex!=u!/xla!
volver
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
19.05.2021  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

886 Views

Untitledvor 0 min.
Ernst21.07.2021
Uwe ''Pascal'' Niemeier13.06.2021
R.Schneider04.06.2021
Michael W.28.05.2021
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie