Добрый день помогите подобрать формулу для матрицы преобразования. Идея в том, что пользователь задает значение угла под которым будет двигаться вектор и описывать окружность, которая ложится на сферу. Так вот проблема с этим вектором: он рисуется, но не из центра и почему-то в 2 раза меньше. Вектор - это есть цилиндр и конус малого радиуса. Вот фрагмент кода, прописанный в таймере
Код |
lm = new string[Convert.ToInt16(razmer)]; tet = new string[Convert.ToInt16(razmer)]; buf1 = new string[2]; buf2 = new string[2];
textBox1.Text = Convert.ToString(i); buf1 = sr6.ReadLine().Split('\t'); buf2 = sr1.ReadLine().Split('\t');
lm[i] = buf1[1]; tet[i] = buf2[1];
float x = (float)(Math.Cos(1.57 - Convert.ToDouble(tet[i])) * Math.Sin(Convert.ToDouble(lm[i]))); float z = (float)(3.5 - Math.Cos(Convert.ToDouble(tet[i]))); float y = (float)(Math.Cos(1.57 - Convert.ToDouble(tet[i])) * Math.Cos(Convert.ToDouble(lm[i])));
mas_x.Add(x); mas_y.Add(y); mas_z.Add(z); for (int v = 0; v < mas_x.Count; v++) { d3d.Transform.World = Matrix.Translation((float)mas_x[v], (float)mas_y[v], (float)mas_z[v]); traekMaterial.Diffuse = Color.Red; traektoriya();
if (f1 == true) { // вектор
d3d.Transform.World = Matrix.Translation(x, y, 0.1f) * Matrix.Translation(0, 0, 3.5f); vecMaterial.Diffuse = Color.Black; d3d.Material = vecMaterial; vec.DrawSubset(0);
d3d.Transform.World = Matrix.Translation(x, y, 0) * Matrix.Translation(0, 0, 3.5f);
vec1Material.Diffuse = Color.Black; d3d.Material = vec1Material; vec1.DrawSubset(0);
centMaterial.Diffuse = Color.Black; d3d.Material = centMaterial; cent.DrawSubset(0); }
|
|