Det lyder som om du kun har 2 punkter: start punktet og slut punktet.
Har jeg ret i at du så ønsker at lave en 1/4 ellipse, som starter i (x1,y1) og slutter i (x2,y2) ? Skal ellipsen tegnes, eller vil du bare have en formel, eller noget 3. ?
Jeg antager at halv-akserne er hhv. lodret og vandret - ellers er der uendeligt mange løsninger.
En ellipses halv-akser er de to linier som går fra centrum og ud til de 2 punkter på ellipsen som er henholdsvis fjernest og tættest på centrum - i dette tilfælde er det dine to punkter.
Givet 2 punkter (x1,y1) og (x2,y2) er der to mulige ellipser: den med centrum i (x1,y2) og den med centrum i (x2,y1).
Halv-aksernes længde er henholdsvis a=abs(x2-x1) og b=abs(y2-y1) , hvor abs() er den numeriske værdi.
En ellipse er så alle de punkter (x,y) der opfylder:
(x-Xc)^2/a^2 + (y-Yc)^2/b^2 = 1
hvor centrum er i (Xc,Yc). Det var baggrunden - at beregne punkterne er derimod noget mere besværligt... der er smarte algoritmer til at beregne punkterne (Bresenham Midpoint), men du kan osse bare beregne et punkt for hver 0.1 grader, for vinklen 0..90 grader, eller noget lignende, afhængigt af hvor mange punkter du har brug for:
var v, xc, yc, a, b, step; a = 100; b = 200; xc = 100; yc = 100; step = 0.1; for (v = 0.0; v < 90.0; v += step) { var x, y; x = xc + a*Math.cos(v*Math.PI/180); y = yc + b*Math.sin(v*Math.PI/180); }
At beregne et punkt for hver 0.1 grad er nok i overkanten - hvis du vil have et punkt for ca. hver 2nd pixels så skal du dele de 90 grader ind i ca. halvt så mange intervaller som halv-aksernes gennemsnitlige længde, dvs.:
jeg kan bare ikke rigtig finde ud af at få elipsen til at gå fra andet en x1 som er mindre end x2 og y1 som er mere end y2.. kan du evt lave formlen om så den gælder alle veje?
Jeg er ikke så god til alt det der regning. Håber du forstår??
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.