Нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D - C#
Формулировка задачи:
Задача нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D. С возможностью вращения в плоскостях, и возможностью закрашивания.
начал с того что начал писать каркасное изображение сферы:
далее задача преобразовать координаты {x, y, z} в координаты на плоскость {X, Y}
пытаюсь так
и дале рисование отрезка до точки {X, Y}то есть соединяем между собой соседние точки
а получившиеся грани из 4-ч точек закрашиваем
прекрасно понимаю что нарисовать в OpenGL или DirectX просто и легко, но вся фишка задать математически и ручками, китайский код писать не хочется прописывая просто множество DrawEllipse меняя координаты
сам вопрос как нарисовать эти самые отрезки, или как это всё собрать в некий массив
Листинг программы
- private void Form1_Paint(object sender, PaintEventArgs e)
- {
- int R = 200;//радиус
- int k = 20; //некий коэффициент
- int X, Y;
- for (int B = -90; B <= 90; B += 20) // широта от -90 до 90
- for (int L = -180; L <= 180; L += 20)//долгота от 0 до 360, или от -180 до 180
- {
- int x = (int)(R * Math.Cos(B) * Math.Sin(L));
- int y = (int)(R * Math.Cos(B) * Math.Cos(L));
- int z = (int)(R *Math.Cos(B));
Листинг программы
- X = (x / ((z / k) + 1)) +(int)(Width / 2);
- Y = (y / ((z / k) + 1)) +(int)(Height / 2);
Решение задачи: «Нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D»
textual
Листинг программы
- private void Form1_Paint(object sender, PaintEventArgs e)
- {
- using (BufferedGraphics buffG = BufferedGraphicsManager.Current.Allocate(e.Graphics, e.ClipRectangle))
- {
- //используй buffG.Graphics вместо e.Graphics
- buffG.Render();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д