Autor | Zpráva | ||
---|---|---|---|
citron Profil * |
#1 · Zasláno: 26. 3. 2007, 22:49:11
Dobrý večer,
mám takový matematický problém, se kterým si nevím rady, chtěl bych v rastru vykreslit kruh. Zkoušel jsem prohledat web, ale co jsem našel se mi nepodařilo zprovoznit. Určitě se najde někdo, kdo je v matice lepší jak já a pomůže mi. Pro vykreslení bychom veděli počáteční bod, poloměr (nebo-li první bod vykreslení) a úhel 6 stupňů...pokud je úhel 6 stupňů tak by výsledných mělo být 60 teček stejně jako u ručičkových hodin, ale nedokázu udělat cyklus s vypsáním bodů [x,y] proč určení tečky...byl bych moc rád za pomoc, děkuju |
||
habendorf Profil |
#2 · Zasláno: 26. 3. 2007, 22:52:59
Tak počkej - prvně mluvíš o kruhu, pak o 60 bodech na kružnici. Takže jak?
A proč to nenecháš na klientovi? |
||
nightfish Profil |
#3 · Zasláno: 26. 3. 2007, 22:56:43
citron
$polomer = 1.0; for ($i = 0; $i <= 360; $i += 6) { $x = cos(deg2rad($i)) * $polomer; $y = sin(deg2rad($i)) * polomer; } |
||
habendorf Profil |
#4 · Zasláno: 26. 3. 2007, 23:04:38
nightfish: Zbytečně složitý. Nebo PHP nezná PI?
|
||
koudi Profil |
#5 · Zasláno: 26. 3. 2007, 23:17:14
habendorf
No já nevim, ty znáš jednodušší způsob? |
||
habendorf Profil |
#6 · Zasláno: 26. 3. 2007, 23:25:53
koudi: Připadá mi naprosto zbytečný dělat ty převody mezi stupni a radiány.
|
||
citron Profil * |
#7 · Zasláno: 26. 3. 2007, 23:31:47
habendorf
omlouvám se s tím kruhem- kružnici, špatně jsem se vyjádřil nightfish dokonalý, měl jsem to podobně, ale neznal jsem funkci deg2rad takže jsem to nějak přepočítával přes pí a asi jsem tam měl někde chybu nevím ale tohle je parádní...jediný teď problém je, že když to třeba vykresluju pomocí imagesetpixel do čtverce tak mi to vykreslí čtvrt kruhu jelikož poloměr začíná u bodu [0,0], dá se to nějak posunout třeba do záčátečního bodu třeba [3,3]? |
||
habendorf Profil |
#8 · Zasláno: 26. 3. 2007, 23:34:29
citron: Děláš si srandu? :o) Ke každý proměnný prostě přičti 3, vždyť je to jen posunutí.
|
||
habendorf Profil |
#9 · Zasláno: 26. 3. 2007, 23:39:34 · Upravil/a: habendorf
Jinak celá kružnice má 2PI, takže šedesátina je PI/30. Takže přes PI:
i od 0 do 59 po 1 x = cos(i*PI/30) * poloměr y = sin(i*PI/30) * poloměr |
||
citron Profil * |
#10 · Zasláno: 27. 3. 2007, 00:27:03
habendorf
nightfish děkuju oběma:-) |
||
citron Profil * |
#11 · Zasláno: 27. 3. 2007, 00:32:52
jestli se nebudete zlobit tak bych měl ještě jednu otázečku...jak by to vypadalo pro elipsu?
|
||
habendorf Profil |
#12 · Zasláno: 27. 3. 2007, 01:07:04
No tam už budeš muset víc počítat.
Základní rovnici elipsy máš (pro střed 0,0): (x^2 / a^2) + (y^2 / b^2) = 1 a, b jsou délky poloos, čili jejich poměr ti určuje "splácnutost" elipsy - to jsou konstanty, ty si zvolíš dle libosti, když je dáš stejné, vyleze ti kružnice, když dáš jednu rovnou nule, vyleze ti úsečka (svislá nebo vodorovná) Jiný tvar je ax^2 + by^2 +cx +dy + e = 0. |
||
citron Profil * |
#13 · Zasláno: 27. 3. 2007, 10:00:58
takže jestli se nemýlím, souřadnici X vypočítám:
(y*2) 1 - ------- (b*2) x = --------------------- (a*2) a co znamená = 1? |
||
habendorf Profil |
#14 · Zasláno: 27. 3. 2007, 11:48:40
Lepší to bude počítat z parametrických rovnic.
x = a * cos(i*PI/30) y = b * sin(i*PI/30) zase pro i od 0 do <60 |
||
citron Profil * |
#15 · Zasláno: 27. 3. 2007, 15:39:31
habendorf
paráda, všechno funguje, dokonalý...nevím jak poděkovat...děkuju moc |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0