今天在群里有人问这了这样一个问题:
бθ=(б1+б2)+2*(б1-б2)*COS2θ
б1=200
б2=100
θ=0~90°
请根据该函数绘制图形,保存成BMP格式。
觉得挺有意思,研究了一下,但搞不清这个公式是干什么的,正好我的一个妹妹在读硕士,她正好刚学完这个,给我解释了一下,呵呵,好崇拜她!
原来这是一个计算物体受力的公式,用来分析物体在外力作用下的内力情况。一个大的物体可以分成无数个小的单元,小单元是六面体(就是正方形)当外力作用的时候,单元相互作用,就产生应力,有拉有压。一个单元有三个方向的应力就是б1б2б3,如果切去一角就是任意角度的三角形,面上所受的力就是бθ 。所以题面念义:一个小的单元有三个方向上的应力,现在已知两个方向上的应力,分别是100和200兆帕,计算θ在0到90度时的应力是多少?
实现代码如下:
бθ=(б1+б2)+2*(б1-б2)*COS2θ
б1=200
б2=100
θ=0~90°
请根据该函数绘制图形,保存成BMP格式。
觉得挺有意思,研究了一下,但搞不清这个公式是干什么的,正好我的一个妹妹在读硕士,她正好刚学完这个,给我解释了一下,呵呵,好崇拜她!
原来这是一个计算物体受力的公式,用来分析物体在外力作用下的内力情况。一个大的物体可以分成无数个小的单元,小单元是六面体(就是正方形)当外力作用的时候,单元相互作用,就产生应力,有拉有压。一个单元有三个方向的应力就是б1б2б3,如果切去一角就是任意角度的三角形,面上所受的力就是бθ 。所以题面念义:一个小的单元有三个方向上的应力,现在已知两个方向上的应力,分别是100和200兆帕,计算θ在0到90度时的应力是多少?
实现代码如下:
public partial class Form1 : Form
{
private Color curC = Color.Blue;
private Bitmap curBmp;
public Form1()
{
InitializeComponent();
}
private void drawBmp(Graphics curG)
{
curG.Clear(Color.White);
Pen curPen = new Pen(curC);
double x, y, w, a, oldw, olda;
x = 200;
y = 100;
olda = 0;
oldw = (x + y) + 2 * (x - y) * Math.Cos(2 * olda);
for (a = 1; a <= 90; a ++)
{
w = (x + y) + 2 * (x - y) * Math.Cos(2 * a);
curG.DrawLine(curPen, (float)olda, (float)oldw, (float)a, (float)w);
olda = a;
oldw = w;
}
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Graphics tmpG = e.Graphics;
drawBmp(tmpG);
}
private void btnSave_Click(object sender, EventArgs e)
{
drawBmp(Graphics.FromImage(curBmp));
curBmp.Save(@"e:\test.bmp");
}
private void Form1_Load(object sender, EventArgs e)
{
curBmp = new Bitmap(pictureBox1.ClientSize.Width, pictureBox1.ClientSize.Height);
}
}
{
private Color curC = Color.Blue;
private Bitmap curBmp;
public Form1()
{
InitializeComponent();
}
private void drawBmp(Graphics curG)
{
curG.Clear(Color.White);
Pen curPen = new Pen(curC);
double x, y, w, a, oldw, olda;
x = 200;
y = 100;
olda = 0;
oldw = (x + y) + 2 * (x - y) * Math.Cos(2 * olda);
for (a = 1; a <= 90; a ++)
{
w = (x + y) + 2 * (x - y) * Math.Cos(2 * a);
curG.DrawLine(curPen, (float)olda, (float)oldw, (float)a, (float)w);
olda = a;
oldw = w;
}
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Graphics tmpG = e.Graphics;
drawBmp(tmpG);
}
private void btnSave_Click(object sender, EventArgs e)
{
drawBmp(Graphics.FromImage(curBmp));
curBmp.Save(@"e:\test.bmp");
}
private void Form1_Load(object sender, EventArgs e)
{
curBmp = new Bitmap(pictureBox1.ClientSize.Width, pictureBox1.ClientSize.Height);
}
}