Avatar billede a2p-dk Nybegynder
09. januar 2011 - 16:46 Der er 5 kommentarer og
1 løsning

Elipse regning.

Hej.
Jeg har fire punkter i alt, ( start x og y og slut x og y ).

Se tegning:
<pre>
      x1,y1
        v
        .

                . < x2,y2
</pre>

Nu kunne jeg godt tænke mig at få punkterne på 1/4 elipse.
fra start til slut.

Evt kunne tegningen også se sådan ud:
<pre>
      x1,y1
        v
        .

. < x2,y2
</pre>

Altså at forskellen på x1 og x2 kan være både plus og minus, det samme gælder y1 og y2.


Jeg har ingen ide om hvordan jeg skal gribe dette an.

Tak for hjælpen.
Avatar billede HBP2 Praktikant
10. januar 2011 - 12:29 #1
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.
Avatar billede a2p-dk Nybegynder
10. januar 2011 - 18:53 #2
hej HBP2

ja jeg har jo kun to punkter. ;).

"
Har jeg ret i at du så ønsker at lave en 1/4 ellipse, som starter i (x1,y1) og slutter i (x2,y2) ?"

Ja

"Skal ellipsen tegnes, eller vil du bare have en formel, eller noget 3. ?"

Jeg har egentlig bare brug for en formal da jeg bare skal bruge alle punkterne. med evt. 2 px interval.

Mht: "Jeg antager at halv-akserne er hhv. lodret og vandret - ellers er der uendeligt mange løsninger. "

Så forstår jeg ikke helt hvad du mener..  Men jeg har f.eks punkterne: (200x og 150y) og (100x og 200y)

Håber du har noget hjælp at smide...
Avatar billede HBP2 Praktikant
10. januar 2011 - 20:22 #3
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.:

  avg = (a+b)/2;
  step = 90/(avg/2);
Avatar billede a2p-dk Nybegynder
23. januar 2011 - 00:10 #4
okay rigtig fedt!!

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??

På forhånd tak. !
Avatar billede HBP2 Praktikant
23. januar 2011 - 08:30 #5
Fjern abs() fra beregningen af a og b.
Avatar billede a2p-dk Nybegynder
24. januar 2011 - 14:43 #6
mange mange tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester