- (1)点击界面的options按钮下拉隐藏的工具,包含Python Language、C++ Language和Exit选项,可对后台执行三角函数计算采用的编辑语言进行选择或执行系统退出操作。
- (2)界面有个输入框,输入角度来计算三角函数的值(程序中会把角度自动转换为弧度来计算)。
- (3)点击界面sin,cos,tan,cot按钮,可分别计算输入变量的正弦值,余弦值,正切值和余切值。
- (4)点击界面的清除按钮,可清除在界面窗口执行的操作;点击退出按钮,可直接退出整个界面。
- (1)pch.cpp是使用c++语言实现的cos、cot、sin和tan函数,pch.h是其对应的头文件。
- (2)SnowC.dll是上述两个文件编译生成的Windows动态链接库文件,供python加载后调用c++方法来计算三角函数。
- (3)pySnow.py包括用python语言实现cos、cot、sin和tan函数。
- (4)main.py主要实现了三角函数运算界面显示(python语言),导入pySnow来执行python实现的三角函数,加载SnowC.dll调用C++语言实现的三角函数。
-
界面尺寸、标题
```python window = tk.Tk() window.title("trigonometric function") window.geometry("480x400") ```
-
输入变量
```python
e.get()
```
三角函数值输出
```python
t.insert("end", result)
```
-
界面按钮,例如
tk.Button(window, text="sin", width=15,height=2, width=15, height=1, command=compute_sin)
-
三角函数计算
sin计算
```python
def snow_sin(): var,_ = get_num() if flag: dll.c_sin.restype = ctypes.c_double result = dll.c_sin(c_double(var)) print(str(var) + " " + str(result)) else: result = sin(var) var_sin_result.set("%.7f" % result) ```
DLL_EXPORT double c_sin(double x) { int i = 1, negation = 1;//取反 double sum = 0; double index = x;//指数 double Factorial = 1;//阶乘 double TaylorExpansion = x;//泰勒展开式求和 do { Factorial = Factorial * ((__int64)i + 1) * ((__int64)i + 2);//求阶乘 index *= x * x;//求num2的次方 negation = -negation;//每次循环取反 sum = index / Factorial * negation; TaylorExpansion += sum; i += 2; } while (myabs(sum) > 1e-15); return (TaylorExpansion); }
cos计算
def snow_cos(): var,_ = get_num() if flag: dll.c_cos.restype = ctypes.c_double result = dll.c_cos(c_double(var)) else: result = cos(var) var_cos_result.set("%.7f" % result)
DLL_EXPORT double c_cos(double x) { x = (PI / 2) - x; return c_sin(x); }
tan计算
def snow_tan():
var,o = get_num()
if o != 0 and (o % 90 == 0 and o / 90 % 2 != 0):
var_tan_result.set("inexistence")
else:
if flag:
dll.c_tan.restype = ctypes.c_double
result = dll.c_tan(c_double(var))
else:
result = tan(var)
var_tan_result.set("%.7f" % result)
DLL_EXPORT double c_tan(double x)
{
return (c_sin(x) / c_cos(x));
}
cot计算
def snow_cot():
var,o = get_num()
if o % 90 == 0:
if o / 90 % 2 == 0:
var_cot_result.set("inexistence")
if o / 90 % 2 != 0:
var_cot_result.set("%.7f" % 1.0)
else:
if flag:
dll.c_cot.restype = ctypes.c_double
result = dll.c_cot(c_double(var))
else:
result = cot(var)
var_cot_result.set("%.7f" % result)
DLL_EXPORT double c_cot(double x)
{
return (1 / c_tan(x));
}