1. 程式人生 > >已知拱高和絃長,求弧長、半徑、角度

已知拱高和絃長,求弧長、半徑、角度

按鈕click事件程式碼:

       private void btnCal_Click(object sender, EventArgs e)
        {
            if (txth.Text.Trim() == "")
            {
                errorProvider1.SetError(txth, "拱高不能為空!");
                txth.Focus();
                return;
            }
            if (txtw.Text.Trim() == "")
            {
                txtw.Focus();
                errorProvider1.SetError(txtw, "弦長不能為空!");
                return;
            }


            double h = Convert.ToDouble(txth.Text);
            double w = Convert.ToDouble(txtw.Text);
            double r = (Math.Pow(h, 2.0) + Math.Pow(w, 2.0) / 4.0) / (h * 2.0);
            double a = 2 * Math.Asin(w / 2 / r);    //第一法 注意這是個孤度值,不是微軟說的角度值,糾結之處吧! 
            //     double a = Math.Acos(Math.Pow((r - h) / r,2) *2-1);  //第二法

            double l = a * r;

    //以下為那個劣孤/優孤之處理
            if (h > r)
            {
                l = 2 * Math.PI * r - l;
                a = 2 * Math.PI - a;
            }

            lblr.Text = r.ToString();//顯示半徑
            lbla.Text = (a * 180 / Math.PI).ToString();//轉為角度顯示
            lbll.Text = l.ToString();//顯示孤長

        }

限制文字框輸入的程式碼,相關文字框KeyPress與之相繫結即可

        private void txt_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar >= '0' && e.KeyChar <= '9') || e.KeyChar == '.' || (byte)(e.KeyChar) == 8)
            {
            }
            else
            {
                e.Handled = true;
            }
        }

另外可加些處理,比如回車

        private void txtw_KeyUp(object sender, KeyEventArgs e)
        {
            errorProvider1.SetError(txtw, "");
            if (e.KeyCode == Keys.Enter) btnCal_Click(null, null);
        }

        private void txth_KeyUp(object sender, KeyEventArgs e)
        {
            errorProvider1.SetError(txth, "");
            if (e.KeyCode == Keys.Enter) txtw.Focus();
        }

第一次顯示則聚焦在第一個文字上

        private void FormMain_Shown(object sender, EventArgs e)
        {
            txth.Focus();
        }

有圖有真相:(注意三種不同的夾角)

廠里正好用上此類小程式的。