Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:258:4840:451:1e81:7d3a...–

peter
.NET › Elipsa a rozpočítání bodů
5. 8. 2022   #390322

Blbe je, ze, kdybys chtel pouzit tu fintu s procenty z uhlu, tak si to musis prepocitat z kruznice na elipsu :) Coz je omoc slozitejzi nez kresleni elipsy.

function computePrusecik(c, a, b, uhel) // c{x:num,y:num}
	{
// y = tan(uhel) * x ... usecka z uhlu
// (x-c.x)(x-c.x)/(a*a) + (y-c.y)(y-c.y)/(b*b) = 1 ... stredova rovnice elipsy
// - z elipsy si musis vyjadrit x= nebo y=
// - dosadit x (nebo y) z rovnice usecky
// - vypocitat diskriminant, urcit y1, y2 a x1, x2
// - rozhodnout se podle uhlu, ktere vysledek pouzit
	}

To se mi ted jako vubec nechce prepisovat :) Ale, ten posun by sel mozna resit pomoci kosinu uhlu.
Dalsi moznost je ten uhel upravovat primo pro rovnice elipsy. Ale, tam asi bude treba vychazet z predchoziho bodu.

// k = 0..n
// d = 2 * Math.PI / n
Math.round(c.x + a * Math.cos(d*k)),
Math.round(c.y + b * Math.sin(d*k))

Ale problem je, ze tady se ten uhel natahuje elipticky. Kdyz je elipsa na lezata, ze zacatku je maly a pak dramaticky velky. U toho procentualniho reseni je to naopak, ale nejsou ty skoky tak dramaticke.
Ja jen, jestli stale shanis nejake fake reseni a nechce se ti to pocitat postupnym natahovanim kruznice :)

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý