空间直角坐标系的旋转转换
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace ReferenceTransition
{
public partial class Form1 : Form
{
public Form1()
{
this.MaximizeBox = false;
InitializeComponent();
}
private double x, y, z;
private double i, j, k;
private double a1,a2,a3;
private double b1, b2, b3;
private double c1, c2, c3;
private double rx, ry, rz;
private string t1, t2, t3;
private string k1, k2, k3;
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox5.Text = "";
textBox6.Text = "";
textBox7.Text = "";
textBox8.Text = "";
textBox9.Text = "";
richTextBox1.Text = "";
}
private void button4_Click(object sender, EventArgs e)
{
try
{
try
{
t1 = textBox1.Text.ToString();
t2 = textBox2.Text.ToString();
t3 = textBox3.Text.ToString();
k1 = textBox4.Text.ToString();
k2 = textBox5.Text.ToString();
k3 = textBox6.Text.ToString();
}
catch (Exception eee)
{ MessageBox.Show("文本框中格式输入不正确!请检查确认!!"); }
x = double.Parse(t1);
y = double.Parse(t2);
z = double.Parse(t3);
i = double.Parse(k1);
j = double.Parse(k2);
k = double.Parse(k3);
a1 = Math.Cos(i) * Math.Cos(k) - Math.Sin(i) * Math.Sin(j) * Math.Sin(k);
a2 = -Math.Cos(i) * Math.Sin(k) - Math.Sin(i) * Math.Sin(j) *Math. Cos(k);
a3 = -Math.Sin(i) * Math.Cos(j);
b1 = Math.Cos(j) * Math.Sin(k);
b2 = Math.Cos(j) * Math.Cos(k);
b3 = -Math.Sin(j);
c1 = Math.Sin(i) * Math.Cos(k) + Math.Cos(i) * Math.Sin(j) * Math.Sin(k);
c2 = -Math.Sin(i) * Math.Sin(k) + Math.Cos(i) * Math.Sin(j) * Math.Cos(k);
c3 = Math.Cos(i) * Math.Cos(j);
rx = a1 * x + a2 * y - a3 * z;
ry = b1 * x + b2 * y - b3 * x;
rz = c1 * x + c2 * y - c3 * z;
textBox7.Text = rx.ToString();
textBox8.Text = ry.ToString();
textBox9.Text = rz.ToString();
richTextBox1.AppendText("转换前坐标: x ="+textBox1.Text +" y ="+textBox2.Text +"
f ="+textBox3.Text+"\r" );
richTextBox1.AppendText(" 旋转角度:ψ =" + textBox4.Text + " ω =" +
textBox5.Text + " κ =" + textBox6.Text + "\r");
richTextBox1.AppendText(" 转换后坐标为: X =" + textBox7.Text + " Y =" + textBox8.Text + " Z =" + textBox9.Text + "\r");
}
catch (Exception eee)
{ MessageBox.Show("输入的数字有误,无法计算结果,请核查!!"); }
}
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
StreamWriter sw = null;
saveFileDialog1.Filter = "文本文件(*.txt)|*.txt|Word 文档(*.doc)|*.doc";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
sw = new StreamWriter(saveFileDialog1.FileName, false,
System.Text.Encoding.Unicode);
sw.Write(richTextBox1.Text);
}
catch (Exception eee)
{
MessageBox.Show("保存失败!!" );
}
finally
{
if (sw != null)
{
sw.Close();
}
}
}
}
}
}。