Diskuze: C# - rozmístění bodů po kružnici
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Jsou tam potřeba ty podmínky pro stupně? Já bych dal prostě:
x = X-středu + sin(stupeň);
y = Y-středu + cos(stupeň);
Dále, Funkce Sin a Cos berou v radiánech, ne ve stupních. A dále, myslím že máš prohozené funkce - Sin má být u X, Cos u Y.
Zapomněl jsem - samozřejmě
sin(úhel) * poloměr;
Pořád to blbne.
double radiany = 2 * Math.PI / 360 / stupen;
double x = Math.Cos(radiany) * r + canvas.Width / 2;
double y = Math.Sin(radiany) * r + canvas.Height / 2;
Prohození Sin a Cos nepomáhá, jenom se ty čtverečky vykreslují dolů místo doprava. Ale stejně díky
Už jsem to vyřešil. Jednak jsem špatně počítal to rozložení a druhak jsem špatně počítal stupně Kdyby někdo někdy měl podobný problém, tady je řešení:
int r = 0;
for (int i = 0; i < nmbrs.Length; i++)
{
r += ((canvas.Height - (canvas.Height / 100) * 5) / 2) / (nmbrs.Length);
ctx.BeginPath();
ctx.Arc(canvas.Width / 2, canvas.Height / 2, r, 0, 360);
ctx.Stroke();
ctx.ClosePath();
List<double> stupen = new List<double>();
stupen.Add(0);
for (int j = 1; j < nmbrs[i]; j++)
{
stupen.Add(stupen[stupen.Count - 1] + (360 / nmbrs[i]));
}
posByDegree(canvas, ctx, stupen.ToArray(), r, xBodu, yBodu);
}
posByDegree:
foreach (int i in degrees)
{
double radiany = i * Math.PI / 180;
double x = Math.Cos(radiany) * r + canvas.Width / 2;
double y = Math.Sin(radiany) * r + canvas.Height / 2;
ctx.BeginPath();
ctx.Rect(x, y, xBodu, yBodu);
ctx.Stroke();
ctx.ClosePath();
}
I když to při vysokých počtech bodů pro umístění (>500) trochu blbne, už je to mnohem lepší a použitelné. Děkuji za spolupráci
Zobrazeno 5 zpráv z 5.