今天在群里有人问这了这样一个问题:

бθ=(б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);
        }
    }

Posted on 2007-03-06 11:38  Clark Zheng  阅读(1099)  评论(6编辑  收藏  举报