Нарисовать сферу на форме в пространстве имен 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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д