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