Français
Source/ Codesnippets

Kometen: Kegelschnitt-Typ et Bahnparameter aus zughöriger Gleichung ermitteln

 

p.specht

avec qui Karthesischen Kegelschnittgleichung a*x² + 2b*x*y + c*y² + 2d*x + 2e*y + f = 0 peut sämtliche Arten de Kegelschnitten (Ellipse, Parabel, Hyperbel) einschließlich aller degenerierten Fälle (Geradenzwickel, justement, Punkt ou bien Garnichts) dargestellt volonté. dans qui Astronomie betrifft cela zB qui Bahnen de Kometen. chez bereits ermittelten Parametern wäre mais de intérêt, um welchen Typ es sich jeweils réellement handelt et comment qui Bestimmungselemente des Kegelschnittes lauten. cela leistet nachstehendes, de mir pour XProfan-11 übersetzes Programme de qui genialen Page d'accueil de Prof. J.-P. Moreau - comment toujours sans Gewähr!
Titre de la fenêtre upper$("Aus karthesischer Kegelschnittformel "+\
"auf paramètre des Kegelschnittes schließen")
Fenêtre Style 24':Fenêtre (%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.Specht, Vienna (Austria).
'*  Type: Parabola                                   *
'*  Center:  x=0.999999  y=5.000000                  *
'*  Symmetry direction:  x=1  y=-1                   *
'*  Concentrer:   x=1.124999  y=4.875000                  *
'*  paramètre:           0.35355339                  *
'*                                                   *
'*                     Basic version by J-P Moreau.  *
'*                           (www.jpmoreau.fr)       *
Déclarer c$,a!,b!,c!,d!,e!,f!,x!,y!
Déclarer ex!,xc!,yc!,xla!,xlb!,xf1!,yf1!,xf2!,yf2!
Déclarer xs1!,ys1!,xs2!,ys2!,xv1!,yv1!,xv2!,yv2!
Déclarer delta!,u!,xl!,xm!,x2!,y2!,i&,j&,ityp&,typ&
START:
CLS rgb(200+rnd(56),200+rnd(56),200+rnd(56))
imprimer
imprimer "          UMFORMUNG DER KEGELSCHNITTGLEICHUNG AUF ELEMENTARE DARSTELLUNG  "
imprimer "          ==============================================================  \n"
imprimer "  paramètre qui Gleichung a*x² + 2b*x*y + c*y² + 2d*x + 2e*y + f = 0 eingeben:\n"
'Testwerte lt. Beispiel aus dem Sourcetext:
a!=1:b!=2:c!=1:d!=-13:e!=-11:f!=32
imprimer "  Frage: devoir qui Werte des internen Testbeispiels verwenden [j/n]? ";
input c$:c$=left$(lower$($ Trim(c$)),1):cas (c$="j") or (c$="y"):goto "Huepf"
imprimer
imprimer "    a  = ";:input a!
imprimer "    2b = ";:input b!
imprimer "    c  = ";:input c!
imprimer "    2d = ";:input d!
imprimer "    2e = ";:input e!
imprimer "    f  = ";:input f!

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

    beep:imprimer "\n   *** Es wurden aucun Werte eingegeben! *** "
    waitinput 10000
    goto "START"

endif

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

si delta!=0

    gosub S1000"'call Parabola

d'autre

    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!

    si f!=0

        si delta!>0

            ityp&=7'one point

        d'autre

            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

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

        si (f!*a!)>=0

            ityp&=8'no conical
            goto "G100"

        d'autre

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

        endif

    endif

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

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

    d'autre

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

    endif

    si delta!<0

        gosub S2000"'call Hyperbola

    d'autre

        gosub S3000"'call Ellipse

    endif

endif'd'autre si delta=0

' imprimer results
G100:

si ityp&=1

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

endif

si ityp&=2

    si (a!+c!)=0

        imprimer "  Typ: Gleichseitige Hyperbel"

    d'autre

        imprimer "  Typ: Hyperbel"

    endif

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

endif

si ityp&=3

    imprimer "  Typ: Parabel"
    imprimer
    imprimer "  Mittelpunkt           :  x=";format$("%g",xc!); "  y=";format$("%g",yc!)
    imprimer "\n  Symmetrieachsenvektor :  x=";format$("%g",xv1!);"  y=";format$("%g",yv1!)
    imprimer "\n  Brennpunktskoordinaten:  x=";format$("%g",xf1!);"  y=";format$("%g",yf1!)
    imprimer "\n  paramètre qui Parabel :  "; format$("%g",ex!)

endif

si ityp&=4

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

endif

cas ityp&=5: imprimer "  cette Kegelschnitt degeneriert zur ligne number."
cas ityp&=6: imprimer "  cette Kegelschnitt degeneriert trop deux Geraden."
cas ityp&=7: imprimer "  cette Kegelschnitt degeneriert trop einem individuel Punkt."
cas ityp&=8: imprimer "  Reell pas lösbar. ne...aucune Kegelschnitt!"
imprimer
Waitinput
Imprimer "\n   encore un Beispiel durchrechnen [n,e = Ende]? ";
input c$:c$=left$(lower$($ Trim(c$)),1)
casenot (c$="n") or (c$="e"):Goto "START"
beep:Imprimer "\n   Programme finissez.\n\n   sur Wiedersehen!"
Waitinput 3000
FIN'of main program
'Subroutine Parabel
S1000:
ityp&=3

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

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

        typ&=8'no conical

    d'autre

        typ&=5'line
        return

    endif

endif

si (a!=0)

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

d'autre

    si a!<0

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

    endif

    xl!=sqrt(a!): xm!=sqrt(c!)
    cas 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

si d!=0

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

        typ&=8

    d'autre

        typ&=6'two lines
        return

    endif

d'autre

    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

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

si 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!
return
'Subroutine Ellipse
S3000:
ityp&=1

si (f!*xl!)>0

    typ&=8'no conical
    return

endif

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

si 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!
return
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
19.05.2021  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

890 Views

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

Themeninformationen

cet Thema hat 1 participant:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie