精华内容
下载资源
问答
  • 上机目的:利用函数编程 我的程序: //version2.0 输出任意角到任意角(100度以内)的正弦函数值(角度值由行号*10+列号确定) /* * 程序的版权和版本声明部分: * Copyright (c) 2013, 青岛农业大学
    上机内容:接上一项目拓展1输出三角函数表v1.0,进行改进:可以实现输出任意角到任意角(100度以内)的正弦函数值(角度值由行号*10+列号确定)
    上机目的:利用函数编程
    我的程序:
    //version2.0  输出任意角到任意角(100度以内)的正弦函数值(角度值由行号*10+列号确定)
    /*  
    * 程序的版权和版本声明部分:  
    * Copyright (c) 2013, 青岛农业大学理信学院  
    * All rights reserved.  
    * 文件名称:输出三角函数表.cpp  
    * 作    者:幻影行者  
    * 完成日期:2013 年 8 月 4 日  
    * 版 本 号:v1.0  
    * 对任务及求解方法的描述部分: 
    * 输入描述:略  
    * 问题描述:要求在main()函数中调用show_sin_table(min_angle, max_angle),
                显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。
    			要求不能用数学库函数,自定义mysin函数用于计算sin值。
    			例如show_sin_table(0, 90)可以显示出所有0到90度的正弦值。
    			为取得更好的效果,可以考虑像英尺到米的转换一样,以速查表格的形式给出结果。 
    * 程序输出:输出三角函数表  
    * 问题分析:略 
    * 算法设计:略  
    */
    
    #include<iostream>
    #include<iomanip>
    using namespace std;
    const double pi=3.141592653;   //常变量
    double myabs(double);    //函数声明部分,自定义求绝对值函数,用于判断循环结束条件,设置类型为double,因需要设置精度小于0.00001时结束累加
    double mysin(double);    //自定义sin函数
    double mycos(double);    //自定义cos函数
    double factorial(double); //自定义求阶乘的函数
    void show_sin_table(int,int);  //自定义输出三角函数表的函数
    
    int main()
    {
    	double minAngle,maxAngle;   //角度的最小值和最大值
    	cout<<"please enter the minimum angle and the maximum angle: "<<endl;
    	do
    	{
          cin>>minAngle>>maxAngle;
    	  if(minAngle>maxAngle)
    	  {
    		  cout<<"input error! please ensure the angle you input is between minimum and maximum."<<endl;
    		  cout<<"continue to input:"<<endl;
    	  }
    	}while(maxAngle<minAngle);  //输错处理:确保从小角到大角进行输出
    	cout<<"The table is:"<<endl;
    	show_sin_table(minAngle,maxAngle);
    	return 0;
    }
    
    //自定义输出三角函数表的函数
    void show_sin_table(int min_angle,int max_angle)
    {
    	int i,j,k,m;
    	cout<<"sinx"<<'\t';  //第一行输出:先输出表头
    	for(m=0;m<=9;++m)     //再输出表头后面的内容
    	{
    		cout<<m<<'\t';
    	}
    	cout<<endl;
    	
        //自第二行以后的输出
    	for(i=0;i<=(max_angle/10);++i)    //角度值由(行号i*10+列号j)确定
    	{
    		cout<<i<<'\t';
    		for(j=0;j<=9;++j)
    		{
    			double d=i*10+j;  //由行号列号确定角度值
    			cout.precision(4);  //设置精度
    			
    			if(0<=d&&d<min_angle) //小于最小角min_angle的角的sin值不输出
    			{
    				cout<<" "<<"\t"; //输出空格,确保小于最小角min_angle的角的sin值不输出
    				if((j+1)==10)   //输入10个值后换行
    					cout<<endl;
    			}
    			else if((i==(max_angle/10))&&(j>(max_angle%10))) //只输入所求最大角max_angle以内的角的sin值
    			{
    				//什么也不做,确保不再输出大于最大角度max_angle的sin值
    			}
    			else    //其他情况下正常输出
    			{
    				cout<<mysin(d*pi/180)<<"\t";
    				if((j+1)==10) //输入10个值后换行
    					cout<<endl;
    			}
    			if(d>max_angle) //若角度大于所输入的最大角度max_angle,则不再输出,换行
    			{
    				cout<<endl;
    			}
    		}
    	}	
    }
    
    //自定义sin函数
    double mysin(double x)
    {
    	int k=1,sign=-1;  // sign用于控制每一项前面的符号,为方便计算,从第二项开始,故sign初值为-1,k=1
    	double sum=x,item;     //sum代表函数值,从第二项开始,sum初值为x,item代表每一项的值
    	double n=x,d;    // n代表分子(numerator),d代表分母(denominator)
    	do
    	{
    		n*=(x*x);      //每一项的分子中,x的幂都相应地比它前一项多2
    		d=factorial(2*k+1);   //调用factorial函数求阶乘,每一项的分母中都是奇数的阶乘
    		item=sign*(n/d);   //计算每一项的值,并累加到sum中
    		sum+=item;  
    		sign=-sign; // 实现加一项减一项
    		++k;
    		}while(myabs(item)>1e-5);  //思维误区:易写成myabs(item)<1e-5,正确理解,“当最后一项的绝对值小于0.00001时,累加结束”
    	                              
    	return sum;	
    }
    
    //自定义cos函数
    double mycos(double x)
    {
    	int k=1,sign=-1;  
    	double sum=1,item;     //相比于mysin函数,这里sum初值为1
    	double n=1,d;          //这里n=1
    	do
    	{
    		n*=(x*x);      
    		d=factorial(2*k);   //每一项的分母中都是偶数的阶乘
    		item=sign*(n/d);   
    		sum+=item;  
    		sign=-sign; 
    		++k;
    	}while(myabs(item)>1e-5); 
    	return sum;	
    }
    
    //自定义求绝对值的函数
    double myabs(double a)
    {
    	//return((a>=0)?a:-a);
    	if(a>=0)
    		return a;
    	else 
    		return -a;		
    }
    
    //自定义求阶乘的函数
    double factorial(double a)
    {
    	double sum=1;
    	for(int i=1;i<=a;++i)
    		sum*=i;
    	return sum;
    }


    运行结果:

    心得体会:

    1.当输入不合法时,利用do...while循环可以很方便的进行重新输入

    2.合理利用多重for循环实现表格的输出,输出是注意分两部分处理第一部分,处理第一行的输出,包括表头的输出;第二部分处理第二行以后的输出,

    本例中需要输出最小角min_angle到最大角max_angle之间的角度的sin值,这就需要再分三部分处理

    (1)处理小于最小值的角,其sin值不输出(利用输出空格代替)

    (2)处理大于最大角的角,其sin值亦不需要输出(此时利用空语句什么也不做即可)

    (3)调用show_sin_table函数正常输出最小角min_angle到最大角max_angle之间的角度的sin值,注意每行输出10个sin值后要换行.


    展开全文
  • 但是在编程里合理的利用的话,也会很好玩的,可以制作出很多有趣的动画特效。 首先要注意的是 角度 和 弧度 的转换。 360度 = 2×PI弧度 180度 = PI弧度 所以30度的正弦函数 = sin(30/180×PI) 但是在cocos...

     

    Cocos2d入门--2-- 三角函数的应用 

    其实,三角函数的知识点是初中的数学基础。但是在编程里合理的利用的话,也会很好玩的,可以制作出很多有趣的动画特效。

     

    首先要注意的是 角度 和 弧度 的转换。

    360度 = 2×PI弧度

    180度 =   PI弧度

    所以30度的正弦函数 = sin(30/180×PI)

     

    但是在cocos2d游戏引擎提供的sin(参数值)这里的参数值范围是在[0,1]之间。

     

     

    利用三角函数的波形来控制小球的运动

     

     关键代码:

    头文件:

    1 protected:
    2     float _angle;

    cpp实现文件:

    复制代码
     1     _angle = 0;
     2     
     3     //1、创建一个点
     4     auto dot = DrawNode::create();
     5     dot -> drawDot(Vec2(0, 0), 10, Color4F(1.0, 1.0, 1.0, 1.0));
     6     addChild(dot);
     7     
     8     dot -> setPosition(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2);
     9     
    10     CCLOG("%f",origin.y + visibleSize.height/2);
    11     
    12     schedule([dot,this,visibleSize,origin](float f){
    13         //2、写这里代码之前,我们先在头文件中,创建一个成员变量float _angle,用来记录角度
    14         //3、然后我们可以使用这个成员变量,因为需要变换角度或者位置,所以就用set...,这里先变换Y坐标的位置
    15         //4、初始化_angle写到前面
    16         //5、为了能够发生变化,所以需要:
    17         _angle += 0.1;
    18         dot -> setPositionY(sin(_angle)*100 + origin.y + visibleSize.height/2);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
    19         dot -> setPositionX(sin(_angle)*100 + origin.x + visibleSize.width/2);
    20     }, "Test");
    复制代码

    当你把schedule里面的两个使用的sin三角函数都换成cos函数,实现的效果是一样的,当你如果一个使用sin,另一个使用cos,就会出现下面的圆周运动的效果:

    1 dot -> setPositionY(sin(_angle)*100 + origin.y + visibleSize.height/2);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
    2 dot -> setPositionX(cos(_angle)*100 + origin.x + visibleSize.width/2);

     

    然后如果要实现椭圆的运动,就需要把×100适当改一下,改其中一个就好:

    1 dot -> setPositionY(sin(_angle)*100 + origin.y + visibleSize.height/2);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
    2 dot -> setPositionX(cos(_angle)*150 + origin.x + visibleSize.width/2);

     

    转载于:https://www.cnblogs.com/LiLihongqiang/p/5877389.html

    展开全文
  • 利用海伦公式和函数调用,怎样编程出一个求三角行的程序啊?![图片](https://img-ask.csdn.net/upload/201712/02/1512221083_667118.jpg)
  • 其实,三角函数的知识点是初中的数学基础。但是在编程里合理的利用的话,也会很好玩的,可以制作出很多有趣的动画特效。   首先要注意的是 角度 和 弧度 的转换。 360度 = 2×PI弧度 180度 = PI弧度 所以30度...

    其实,三角函数的知识点是初中的数学基础。但是在编程里合理的利用的话,也会很好玩的,可以制作出很多有趣的动画特效。

     

    首先要注意的是 角度 和 弧度 的转换。

    360度 = 2×PI弧度

    180度 =   PI弧度

    所以30度的正弦函数 = sin(30/180×PI)

     

    但是在cocos2d游戏引擎提供的sin(参数值)这里的参数值范围是在[0,1]之间。

     

     

    利用三角函数的波形来控制小球的运动

     

     关键代码:

    头文件:

    1 protected:
    2     float _angle;

    cpp实现文件:

     1     _angle = 0;
     2     
     3     //1、创建一个点
     4     auto dot = DrawNode::create();
     5     dot -> drawDot(Vec2(0, 0), 10, Color4F(1.0, 1.0, 1.0, 1.0));
     6     addChild(dot);
     7     
     8     dot -> setPosition(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2);
     9     
    10     CCLOG("%f",origin.y + visibleSize.height/2);
    11     
    12     schedule([dot,this,visibleSize,origin](float f){
    13         //2、写这里代码之前,我们先在头文件中,创建一个成员变量float _angle,用来记录角度
    14         //3、然后我们可以使用这个成员变量,因为需要变换角度或者位置,所以就用set...,这里先变换Y坐标的位置
    15         //4、初始化_angle写到前面
    16         //5、为了能够发生变化,所以需要:
    17         _angle += 0.1;
    18         dot -> setPositionY(sin(_angle)*100 + origin.y + visibleSize.height/2);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
    19         dot -> setPositionX(sin(_angle)*100 + origin.x + visibleSize.width/2);
    20     }, "Test");

    当你把schedule里面的两个使用的sin三角函数都换成cos函数,实现的效果是一样的,当你如果一个使用sin,另一个使用cos,就会出现下面的圆周运动的效果:

    1 dot -> setPositionY(sin(_angle)*100 + origin.y + visibleSize.height/2);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
    2 dot -> setPositionX(cos(_angle)*100 + origin.x + visibleSize.width/2);

     

    然后如果要实现椭圆的运动,就需要把×100适当改一下,改其中一个就好:

    1 dot -> setPositionY(sin(_angle)*100 + origin.y + visibleSize.height/2);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
    2 dot -> setPositionX(cos(_angle)*150 + origin.x + visibleSize.width/2);

     

     

     
     
     
     
     
    展开全文
  • 在上一部分已经介绍了数学函数, 数学函数用于执行数学上常用计算,比如:三角函数、幂函数。向量和矩阵函数,这些函数一般都被重载,用来支持标量数据和不同长度的向量作为输入参数。本部分介绍几何函数、纹理映射...

           在GPU编程中,函数一般分为以下几种类型:数学函数、几何函数、纹理映射函数、偏导数函数、调试函数等。熟练利用好GPU自带函数,可以在一定程度上提高并行编程速度与效率

    在上一部分已经介绍了数学函数, 数学函数用于执行数学上常用计算,比如:三角函数、幂函数。向量和矩阵函数,这些函数一般都被重载,用来支持标量数据和不同长度的向量作为输入参数。本部分介绍几何函数、纹理映射函数、偏导数函数、调试函数。

    几何函数(Geometric Functions)

          几何函数,如表所示,用于执行和解析几何相关的计算,例如根据入射光向量和顶点法向量,求取反射光和折射光方向向量。Cg 语言标准函数库中有3 个几何函数会经常被使用到,分别是:normalize 函数,对向量进行归一化;reflect函数,计算反射光方向向量;refract 函数,计算折射光方向向量。大声呐喊,并要求强烈注意:
    1. 着色程序中的向量最好进行归一化之后再使用,否则会出现难以预料的
    错误;
    2. reflect 函数和refract 函数都存在以“入射光方向向量”作为输入参数,注意这两个函数中使用的入射光方向向量,是从外指向几何顶点的;平时我

    们在着色程序中或者在课本上都是将入射光方向向量作为从顶点出发。

                                                                                         

                                         几何函数表

    纹理映射函数(Texture Map Functions)

           下表提供标准函数库中的纹理映射函数。这些函数被ps_2_0、ps_2_x、arbfp1、fp30 和fp40 等profiles 完全支持(fully supported)。所有的这些函数返回四元向量值。


           

          

                                           纹理映射函数表

    偏导函数(Derivative Functions)

          

    调试函数(Debugging Function)

         

    展开全文
  • 所有开发都使用“ C”编程语言(C99)。 SDL v2用作基础游戏库。 默认情况下,数字数据类型为浮点型。 CMake是构建工具。 CTest用于单元测试。 文件索引 vmath.h / vmath.c-矢量2D数学例程。 vdraw.h / vdraw.c...
  • GPU编程中的常用数学函数

    千次阅读 2015-09-09 19:38:49
    在GPU编程中,函数一般分为以下几种类型:数学函数、...数学函数用于执行数学上常用计算,比如:三角函数、幂函数。向量和矩阵函数,这些函数一般都被重载,用来支持标量数据和不同长度的向量作为输入参数。列表如下:
  • (1)声明抽象基类及其派生类,设计类及其成员变量和成员函数利用函数实现对三种形状(如圆、正方形、三角形)的面积和周长的计算。在主函数 中可以调用类的成员函数,分别计算并输出三种形状的面积和周长。 ...
  • 计算机图形学作业(一):利用OpenGL...OpenGL一般被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。由于OpenGL是一个图形API,并不是一个独立的平台...
  • c++编程,函数调用实现一元二次方程求解。分成系数输入、方程求解、三角函数求解和结果输出四个函数,利用全局变量调用函数里面返回的一元二次方程的根在接下去的函数里继续调用。
  • 本章讲解的主要是三角函数等知识,所以本次习作,我主要是围绕三角函数以及波形进行的编程,我写了两个程序,一是使用三角函数得到图形的颜色大小及位置,并且加入鼠标交互,绘制出好看的图形,二是实现出波形,并且...
  • Python引入数学函数计算在利用Python对Abaqus进行相关编程时经常需要用到数学函数,比如三角函数等,在使用这些函数之前需要先引入数学模块。Import math之后利用时还需要利用层级关系,比如math.pi表示π。一个示例...
  • CG实验1 三角形绘制

    千次阅读 2017-09-20 17:03:19
    1.实验目的 熟悉编程环境; 了解光栅图形显示器的特点; 了解计算机绘图的特点;...掌握WebGL提供的基本图形函数,如绘制点、直线和三角形的函数。 3.实验代码 请参考教材博客网页文章:...
  • WebGL编程指南

    2018-11-26 18:04:36
    427 角度和三角函数 428 指数函数 429 通用函数 430 几何函数 433 矩阵函数 434 矢量函数 435 纹理查询函数 436 附录C 投影矩阵 437 正射投影矩阵 437 透视投影矩阵 437 附录D WebGL/OpenGL :左手还是右手坐标系?...
  • 3D游戏编程的入门知识(英文版) 本书介绍了成功开发一款游戏所必需的数学...本书适合于所有对游戏开发与编程感兴趣的读者,如果你想踏入游戏行业,或者想对代数、几何和三角函数知识有所了解的话,本书非常适合您!
  • 首先进行了圆盘与针的绘制,利用三角函数实现了针的旋转;然后学习了一维数组的概念,并利用数组实现了多根针的效果;利用批量绘制函数改进了绘制效果;最后实现了针的发射与增加、游戏失败判断、得分与显示效果的...
  • 一,概述 1,和C语言类似,M语言文件都是标准的纯文本格式的文件,其文件的拓展名为.m。...这类函数是由MATLAB的内核提供的,能够完成基本的运算,例如三角函数,矩阵运算的函数。 (2)利用高级语...
  • OpenGL编程轻松入门之像素操作 ... 例14:本例在窗口绘制一个三角形,然后利用glCopyPixel函数拷贝了五次该图形,并将这五个三角形放置在窗口的不同位置。 #include #include
  • 利用网格模型简化技术,提出了一种基于概率值简化三角形网格模型的新算法。算法以到相关三角形平面距离最短的点为折叠后的新点,以可调加权控制函数作为折叠误差控制三角形的简化顺序,通过定义分段概率函数,采用...
  • 1.九九乘法表的变形:思路:利用for循环与range函数一次次迭代计算出乘积,利用format函数右对齐来达到图上的效果。 2.打印菱形:思路:使用数学函数式方程,建立一个以中心点为原点的坐标系如下图:为了方便理解x轴...
  • WEBGL编程指南pdf

    热门讨论 2015-09-17 14:34:13
    角度和三角函数 428 指数函数 429 通用函数 430 几何函数 433 矩阵函数 434 矢量函数 435 纹理查询函数 436 附录C 投影矩阵 437 正射投影矩阵 437 透视投影矩阵 437 附录D WebGL/OpenGL :左手还是右手...
  • WebGL编程指南压缩包

    2015-05-15 11:44:05
    角度和三角函数 428 指数函数 429 通用函数 430 几何函数 433 矩阵函数 434 矢量函数 435 纹理查询函数 436 附录C 投影矩阵 437 正射投影矩阵 437 透视投影矩阵 437 附录D WebGL/OpenGL :左手还是右手...
  • WebGL编程指南.rar

    热门讨论 2015-04-09 12:16:56
    角度和三角函数 428 指数函数 429 通用函数 430 几何函数 433 矩阵函数 434 矢量函数 435 纹理查询函数 436 附录C 投影矩阵 437 正射投影矩阵 437 透视投影矩阵 437 附录D WebGL/OpenGL :左手还是右手...
  • 利用C++的多态性,设计一快递运费计算软件。 货物由北京可通过快递公司运往天津、上海、太原、广州、昆明、新疆六个城市,分别用1、2、3、4、5、6作为它们编号。运送货物的重量分为1、2、3公斤。快递公司有四家:E...
  • OPenGL编程书籍

    2013-07-22 16:38:01
    理解OpenGL如何工作非常重要,你可以在教程的末尾下载源程序,但我强烈建议你至少读一遍教程,然后再开始编程. 2.你的第一个多边形: 在第一个教程的基础上,我们添加了一个三角形和一个四边形。也许你认为这很简单...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 153
精华内容 61
关键字:

利用三角函数编程