Нарисовать сферу на форме в пространстве имен 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();
}
}