Top.Mail.Ru
Ответы

Пожалуйста помогите c кодом на с#!

1.Даны натуральные числа xc, yc, r, sx, sy. Построить правильный шестиугольник с центром в точке (xc, yc) и стороной r, после чего растянуть (сжать) его по оси OX в sx раз, а по оси OY – в sy раз.
2. Даны натуральные числа xc, yc, r и действительное число t. Построить правильный пятиугольник, вписанный в окружность с центром в точке (xc, yc) и радиусом r, после чего повернуть его относительно начала координат на угол t радиан.
3.Даны натуральные числа x, y, n, символы s1, …, sn. Последовательность символов s1, …, sn вывести так, чтобы точка с координатами (x, y) была расположена:
а) по центру последовательности;
б) с левого края последовательности;
в) с правого края последовательности.

По дате
По рейтингу
Аватар пользователя
Новичок
7лет

//1
PointF[] pts = new PointF[6]; // построение шестиугольника
for (int i = 0; i < 6; i++) {
double a = i * 60 * Math.PI / 180.0;
pts[i] = new PointF((float)(Math.Sin(a) * r), (float)(Math.Cos(a) * r));
}
using (System.Drawing.Drawing2D.GraphicsPath path =
new System.Drawing.Drawing2D.GraphicsPath()) {
path.AddPolygon(pts);
graphics.TranslateTransform(xc, yc);
graphics.DrawPath(Pens.Green, path); // изначальный шестиугольник
using (System.Drawing.Drawing2D.Matrix mtx = new System.Drawing.Drawing2D.Matrix()) {
mtx.Scale(sx, sy);
path.Transform(mtx);
}
graphics.DrawPath(Pens.Red, path); // растянутый шестиугольник
}

//2
PointF[] pts = new PointF[5]; // построение пятиугольника
for (int i = 0; i < 5; i++) {
double a = i * 72 * Math.PI / 180.0;
pts[i] = new PointF((float)(xc + Math.Sin(a) * r), (float)(yc - Math.Cos(a) * r));
}
graphics.DrawPolygon(Pens.Green, pts); // изначальный пятиугольник
graphics.RotateTransform((float)(t * 180.0f / Math.PI));
graphics.DrawPolygon(Pens.Red, pts); // после поворота