Hallo
Ich habe ausgehend von der Ellipsengleichung: (Quelle: Hans Jochen Bartsch "Taschenbuch Mathematische Formeln für Ingenieure und Naturwissenschaftler"
sqr(x)/sqr(a) + sqr(y)/sqr(b) = 1
nach y aufgelöst:
y = +/- (b/a)*sqrt(sqr(a)-sqr(x))
folgendes Programm erstellt:
Delphi-Quellcode:
procedure DrawEllipse(xm,ym,xR,yR,stangle,endangle: Extended);
var
angle: extended;
a,b,x: extended;
yp,yn: Extended;
px,py: int64;
begin
angle := 0.0;
angle := stangle;
x := xm; y := ym; //Mittelpinkt der Ellipse
a := xR; b := yR; //a und b --- x- und y Readien der Ellipse
while angle < endangle do //hier aber Winkel als Laufvariable benutzt
begin
a := x / cos(angle); b := y / sin(angle); //x = a * cos(angle); y = b * sin(angle)
yp := b/a * sqrt(sqr(a)-sqr(x)); //der Punkt der Ellipse an der Position X
py := Round(yp); //auf Integer gerundet und wegen Int64 als Rückgabewert
DrawPixel(x,Longword(yp)) //auf Longword gecastet
yn := -b/a * sqrt(sqr(a)-sqr(x)); //gleicher Ablauf
py := round(yp); //für die negative Halbachse
end;
end;
Da wird aber x ncht verändert, was naxh meinem Verständnis aber der Fall sein sollte wenn ich weigstens eine halbe Ellipse zeichnen will.
Ich verwende den Winkel als Laufvariable, habe aber ein "Brett vorm Kopp" wegen Laufvariale x die ja mit dem Winkel verändert werden muss.
wie kann ich möglichst effektiv die Gleicung so umstellen dass ich trotz Winkel als Laufvarible den Parameter X ebenfalls weiter zähle. Irgendwie habe ich im Moment einen Knoten im Kopf.