Я пытаюсь отобразить трехмерную ось с использованием метода drawline, мне удалось прокрутить линию вокруг своей оси, но у меня возникли проблемы с тем, чтобы вторая линия вращалась в 90 градусов угол от этой линии, я хотел бы реализовать основной метод вращения, но я не знаю, как его реализовать в C# http://en.wikipedia.org/wiki/Rotation_matrix. Я хотел бы знать, как разместить ось z на графике xy. Помните, что я хочу сделать это в простой C# без прямого x или что-то еще.3d-координаты в плоскости C#
вот мой основной код для рисования
private void Go_Click(object sender, EventArgs e)
{
int radiusx1= Int32.Parse(xbarvalue.Text);
int radiusy1 = Int32.Parse(ybarvalue.Text);
int radiusz1 = Int32.Parse(zbarvalue.Text);
int speedwait = speed.Value;
int position1 =canvas.Width/2 ;
int position2 = canvas.Height/2;
for (double i = 0; i <=360; i = i + 0.5)
{
double angle= Math.PI * i/180.0;
// double angle = i * 0.01745;
float position1x = (float)(position1+Math.Sin(angle)*Theta);
float position1y = (float)(position2+Math.Cos(angle)*Theta2);
float position2x = (float)(position1 + Math.Sin(angle) *radiusy1);
float position2y = (float)(position2 + Math.Cos(angle) * radiusz1);
float position3x = (float)(position1 + Math.Sin(angle) *radiusx1);
float position3y = (float)(position2 + Math.Cos(angle) *radiusz1);
// Graphics g;
// g = canvas.CreateGraphics();
//Pen p;
// Rectangle r;
// p = new Pen(Brushes.Blue);
// r = new Rectangle(position2x,position2y, 1, 1);
// g.DrawRectangle(p, r);
System.Threading.Thread.Sleep(speedwait);
canvas.Refresh();
px.Text = Convert.ToString(position1x);
py.Text = Convert.ToString(position1y);
// pz.Text = Convert.ToString(position1z);
px.Refresh();
py.Refresh();
// pz.Refresh();
System.Drawing.Pen myPen;
System.Drawing.Pen myPen2;
System.Drawing.Pen myPen3;
myPen = new System.Drawing.Pen(System.Drawing.Color.Red);
myPen2 = new System.Drawing.Pen(System.Drawing.Color.Black);
myPen3 = new System.Drawing.Pen(System.Drawing.Color.Blue);
System.Drawing.Graphics formGraphics = canvas.CreateGraphics();
formGraphics.DrawLine(myPen, position1, position2, position1x, position1y);
formGraphics.DrawLine(myPen2, position1, position2,position2x,position2y);
formGraphics.DrawLine(myPen3, position1, position2,position3x, position3y);
};
}
моего первого метода должны был использовать эллипсы на прядильных линиях, чтобы создать иллюзию глубины
может кто-то показать мне, как писать основной код вращения в C#, у меня проблемы с массивами.
float position1x = (float) (position1 + Math.Sin (angle) * Theta); поплавка position1y = (поплавок) (Position2 + Math.cos (угол) * Theta2) , предполагают, чтобы быть поплавка position1x = (поплавок) (Должность1 + Math.sin (угол) * radiusx1); float position1y = (float) (position2 + Math.Cos (angle) * radiusy1) – user3513130
На 90 градусов от линии, но на одной и той же плоскости, или на 90 градусов до равнины линии, как обычный нормальный? – Tigran